Intégrer CallKit à la bibliothèque d’interface utilisateur
La bibliothèque d’interface utilisateur pour Azure Communication Services fournit une prise en charge intégrée de CallKit. Les développeurs peuvent fournir leur propre configuration de CallKit à utiliser pour la bibliothèque d’interface utilisateur.
Dans cet article, vous allez apprendre à configurer CallKit correctement à l’aide de la bibliothèque d’interface utilisateur dans votre application.
Prérequis
- Compte Azure avec un abonnement actif. Créez un compte gratuitement.
- Une ressource Communication Services déployée. Créez une ressource Communication Services.
- Un jeton d’accès utilisateur pour activer le client d’appel. Obtenez un jeton d’accès utilisateur.
- Facultatif : complétion du guide de démarrage rapide pour prendre en main les composites de la bibliothèque d’interface utilisateur.
Pour plus d’informations, consultez la bibliothèque d’interface utilisateur iOS open source et l’exemple de code d’application.
Configurer l’intégration de CallKit
Le kit de développement logiciel (SDK) iOS d’appel Azure Communication Services prend en charge l’intégration de CallKit. Vous pouvez activer cette intégration dans la bibliothèque d’interface utilisateur en configurant une instance de CallCompositeCallKitOption
. Pour plus d’informations, consultez Intégrer à CallKit.
Spécifier les informations des destinataires des appels pour les appels sortants
Pour spécifier les informations d’appel sortant, créez une instance de CallKitRemoteInfo
. Si vous ne fournissez pas CallKitRemoteInfo
, la valeur brute de l’identificateur du participant est affichée par défaut.
Attribuez une valeur à displayName
pour personnaliser le nom d’affichage de l’appelant. La valeur spécifiée dans CallKitRemoteInfo
est exactement celle qui apparaît dans le journal des derniers appels composés.
Affectez également la valeur cxHandle
. Il s’agit de ce que l’application reçoit lorsque l’utilisateur rappelle ce contact.
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)
Spécifier les informations des destinataires des appels pour les appels entrants
Pour spécifier les informations d’appel entrant de l’appelant, créez une instance de CallKitOptions
. Si vous ne fournissez pas CallKitOptions
, la valeur brute de l’identificateur du participant est affichée par défaut.
Attribuez une valeur à provideRemoteInfo
pour personnaliser le nom d’affichage de l’appelant. La valeur spécifiée dans CallKitRemoteInfo
est exactement celle qui apparaît dans le journal des derniers appels composés.
Affectez également la valeur cxHandle
. Il s’agit de ce que l’application reçoit lorsque l’utilisateur rappelle ce contact.
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
}
Configurer des fournisseurs
Si nécessaire, fournissez une instance CXProviderConfiguration
à CallKitOptions
. Pour plus d’informations, consultez la documentation du développeur Apple sur CXProviderConfiguration.
let providerConfig = CXProviderConfiguration()
providerConfig.supportsVideo = true
providerConfig.maximumCallGroups = 1
providerConfig.maximumCallsPerCallGroup = 1
providerConfig.includesCallsInRecents = true
providerConfig.supportedHandleTypes = [.phoneNumber, .generic]
Configurer une session audio
Configurez une session audio à appeler avant de placer ou d’accepter un appel entrant et avant de reprendre un appel en attente. Pour plus d’informations, consultez la documentation du développeur Apple sur 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
}
Activer CallKit
Pour activer CallKit, créez une instance de CallKitOptions
et fournissez-la à 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
)
API pour mettre en attente et reprendre pour CallKit intégrée dans l’application
Pour CallKit intégré à l’application, utilisez hold
et resume
pour gérer l’état des appels.
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
}
}