Udostępnij za pośrednictwem


Integrowanie zestawu CallKit z biblioteką interfejsu użytkownika

Biblioteka interfejsu użytkownika usług Azure Communication Services zapewnia wbudowaną obsługę zestawu CallKit. Deweloperzy mogą udostępnić własną konfigurację zestawu CallKit do użycia w bibliotece interfejsu użytkownika.

Z tego artykułu dowiesz się, jak poprawnie skonfigurować zestaw CallKit przy użyciu biblioteki interfejsu użytkownika w aplikacji.

Wymagania wstępne

Aby uzyskać więcej informacji, zobacz bibliotekę interfejsu użytkownika systemu iOS typu open source i przykładowy kod aplikacji.

Konfigurowanie integracji z zestawem CallKit

Usługa Azure Communication Services wywołująca zestaw SDK systemu iOS obsługuje integrację z zestawem CallKit. Tę integrację można włączyć w bibliotece interfejsu użytkownika, konfigurując wystąpienie programu CallCompositeCallKitOption. Aby uzyskać więcej informacji, zobacz Integracja z zestawem CallKit.

Określanie informacji adresata połączenia dla połączeń wychodzących

Aby określić informacje o połączeniach wychodzących, utwórz wystąpienie klasy CallKitRemoteInfo. Jeśli nie podasz wartości nieprzetworzonej CallKitRemoteInfoidentyfikatora uczestnika, będzie domyślnie wyświetlana.

Przypisz wartość parametru , displayName aby dostosować nazwę wyświetlaną elementu wywołującego. Wartość określona w pliku CallKitRemoteInfo jest dokładnie tak, jak jest wyświetlana w dzienniku połączeń z ostatnim numerem.

Przypisz cxHandle również wartość. Jest to to, co aplikacja otrzymuje, gdy użytkownik odwołuje się do tego kontaktu.

let cxHandle = CXHandle(type: .generic, value: "VALUE_TO_CXHANDLE")
let callKitRemoteInfo = CallKitRemoteInfo(displayName: "DISPLAY_NAME", handle: cxHandle)
callComposite.launch(..., // Locator for Azure Communication Service
                     callKitRemoteInfo: callKitRemoteInfo)

Określanie informacji adresata połączenia dla połączeń przychodzących

Aby określić informacje o wywołaniu przychodzącym, utwórz wystąpienie klasy CallKitOptions. Jeśli nie podasz wartości nieprzetworzonej CallKitOptionsidentyfikatora uczestnika, będzie domyślnie wyświetlana.

Przypisz wartość parametru , provideRemoteInfo aby dostosować nazwę wyświetlaną elementu wywołującego. Wartość określona w pliku CallKitRemoteInfo jest dokładnie tak, jak jest wyświetlana w dzienniku połączeń z ostatnim numerem.

Przypisz cxHandle również wartość. Jest to to, co aplikacja otrzymuje, gdy użytkownik odwołuje się do tego kontaktu.

public func incomingCallRemoteInfo(info: Caller) -> CallKitRemoteInfo {
    let cxHandle = CXHandle(type: .generic, value: "VALUE_TO_CXHANDLE")
    var remoteInfoDisplayName = "DISPLAY_NAME"
    let callKitRemoteInfo = CallKitRemoteInfo(displayName: remoteInfoDisplayName,
                                                            handle: cxHandle)
    return callKitRemoteInfo
}

Konfigurowanie dostawców

W razie potrzeby podaj CXProviderConfiguration wystąpienie na CallKitOptions. Aby uzyskać więcej informacji, zobacz dokumentację dla deweloperów firmy Apple dotyczącą CXProviderConfiguration.

let providerConfig = CXProviderConfiguration()
providerConfig.supportsVideo = true
providerConfig.maximumCallGroups = 1
providerConfig.maximumCallsPerCallGroup = 1
providerConfig.includesCallsInRecents = true
providerConfig.supportedHandleTypes = [.phoneNumber, .generic]

Konfigurowanie sesji audio

Skonfiguruj sesję audio, która ma być wywoływana przed umieszczeniem lub zaakceptowaniem połączenia przychodzącego i przed wznowieniem połączenia, które jest wstrzymane. Aby uzyskać więcej informacji, zobacz dokumentację dla deweloperów firmy Apple dotyczącą avAudioSession.

public func configureAudioSession() -> Error? {
    let audioSession = AVAudioSession.sharedInstance()
    let options: AVAudioSession.CategoryOptions = .allowBluetooth
    var configError: Error?
    do {
        try audioSession.setCategory(.playAndRecord)
    } catch {
        configError = error
    }
    return configError
}

Włączanie zestawu CallKit

Aby włączyć zestaw CallKit, utwórz wystąpienie CallKitOptions elementu i podaj go w pliku callCompositeOptions.

let isCallHoldSupported = true // enable call hold (default is true)
let callKitOptions = CallKitOptions(
    providerConfig: providerConfig,
    isCallHoldSupported: isCallHoldSupported,
    provideRemoteInfo: provideRemoteInfo,
    configureAudioSession: configureAudioSession
)

let options = CallCompositeOptions(
    ..., // Other options for Azure Communication Service
    callKitOptions: callKitOptions
)

Obsługa i wznawianie interfejsu API dla zestawu CallKit zintegrowanego w aplikacji

W przypadku zestawu CallKit zintegrowanego z aplikacją i hold resume zarządzania stanem wywołania.

    callComposite.hold() { result in
        switch result {
            case .success:
                // success
            case .failure(let error):
                // failure
        }
    }

    callComposite.resume() { result in
        switch result {
            case .success:
                // success
            case .failure(let error):
                // failure
        }
    }

Następne kroki