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
- Ein physisches iOS-Gerät. Ein iOS-Simulator unterstützt die CallKit-Funktionalität nicht.
- Ein Azure-Konto mit einem aktiven Abonnement. Sie können kostenlos ein Konto erstellen.
- Eine bereitgestellte Communication Services-Ressource. Erstellen Sie eine Communication Services-Ressource.
- Ein Benutzerzugriffstoken zum Aktivieren des Anrufclients. Rufen Sie ein Benutzerzugriffstoken ab.
- Optional: Führen Sie den Schnellstart Erste Schritte mit der UI-Bibliothek durch.
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
}
}