Freigeben über


Integrieren von CallKit in die UI-Bibliothek

Die Benutzeroberfläche der Azure Communication Services UI-Bibliothek bietet sofort einsatzbereite Unterstützung für CallKit. Entwickler können ihre eigene Konfiguration für CallKit bereitstellen, die für die UI-Bibliothek verwendet werden soll.

In diesem Artikel erfahren Sie, wie Sie CallKit mithilfe der Benutzeroberflächenbibliothek in Ihrer Anwendung ordnungsgemäß einrichten.

Voraussetzungen

Weitere Informationen finden Sie in der Open-Source-iOS-UI-Bibliothek und im Beispielanwendungscode.

Einrichten der CallKit-Integration

Das Azure Communication Services Calling iOS-SDK unterstützt die CallKit-Integration. Sie können diese Integration in der UI-Bibliothek aktivieren, indem Sie eine Instanz von CallCompositeCallKitOption konfigurieren. Weitere Informationen finden Sie in den Artikeln zur Integration mit CallKit.

Geben Sie Informationen zum Anrufempfänger für ausgehende Anrufe an

Um Informationen zu ausgehenden Anrufen anzugeben, erstellen Sie eine Instanz von CallKitRemoteInfo. Wenn Sie CallKitRemoteInfo nicht angeben, wird standardmäßig der Rohwert des Teilnehmeridentifikators angezeigt.

Weisen Sie einen Wert für displayName zu, um den Anzeigenamen für den Anrufer anzupassen. Der in CallKitRemoteInfo angegebene Wert ist genau, wie er im letzten gewählten Anrufprotokoll angezeigt wird.

Weisen Sie auch den cxHandle-Wert zu. Er ist das, was die Anwendung erhält, wenn der Benutzer diesen Kontakt zurückruft.

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)

Geben Sie Informationen zum Anrufempfänger für eingehende Anrufe an

Um Anruferinformationen zu eingehenden Anrufen anzugeben, erstellen Sie eine Instanz von CallKitOptions. Wenn Sie CallKitOptions nicht angeben, wird standardmäßig der Rohwert des Teilnehmeridentifikators angezeigt.

Weisen Sie einen Wert für provideRemoteInfo zu, um den Anzeigenamen für den Anrufer anzupassen. Der in CallKitRemoteInfo angegebene Wert ist genau, wie er im letzten gewählten Anrufprotokoll angezeigt wird.

Weisen Sie auch den cxHandle-Wert zu. Er ist das, was die Anwendung erhält, wenn der Benutzer diesen Kontakt zurückruft.

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
}

Konfigurieren von Anbietern

Stellen Sie nach Bedarf eine CXProviderConfiguration Instanz zu CallKitOptions bereit. Weitere Informationen finden Sie in der Apple-Entwicklerdokumentation zu CXProviderConfiguration.

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

Konfigurieren einer Audiositzung

Legen Sie fest, dass eine Audiositzung aufgerufen wird, bevor Sie einen eingehenden Anruf tätigen oder annehmen und bevor Sie den Anruf wieder aufnehmen, nachdem er gehalten wurde. Weitere Informationen finden Sie in der Apple-Entwicklerdokumentation zu 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
}

Aktivieren von CallKit

Um CallKit zu aktivieren, erstellen Sie eine Instanz von CallKitOptions und geben Sie diese an callCompositeOptions weiter.

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
)

In Anwendung integrierte API zum Halten und Fortsetzen für CallKit

Verwenden Sie für in die Anwendung integriertes CallKit hold und resume, um den Anrufstatus zu verwalten.

    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
        }
    }

Nächste Schritte