Integrare CallKit nella libreria dell'interfaccia utente
La libreria dell'interfaccia utente di Servizi di comunicazione di Azure offre supporto predefinito per CallKit. Gli sviluppatori possono fornire la propria configurazione per CallKit da usare per la libreria dell'interfaccia utente.
Questo articolo illustra come configurare correttamente CallKit usando la libreria dell'interfaccia utente nell'applicazione.
Prerequisiti
- Un account Azure con una sottoscrizione attiva. Creare un account gratuitamente.
- Una risorsa di Servizi di comunicazione distribuita. Creare una risorsa di Servizi di comunicazione.
- Token di accesso utente per abilitare il client di chiamata. Ottenere un token di accesso utente.
- Facoltativo: completamento di Avvio rapido per iniziare a usare i compositi della libreria dell'interfaccia utente.
Per altre informazioni, vedere la libreria dell'interfaccia utente iOS open source e il codice dell'applicazione di esempio.
Configurare l'integrazione di CallKit
L'SDK iOS di chiamata di Servizi di comunicazione di Azure supporta l'integrazione di CallKit. È possibile abilitare questa integrazione nella libreria dell'interfaccia utente configurando un'istanza di CallCompositeCallKitOption
. Per altre informazioni, vedere Integrare con CallKit.
Specificare le informazioni sul destinatario delle chiamate in uscita
Per specificare le informazioni sulle chiamate in uscita, creare un'istanza di CallKitRemoteInfo
. Se CallKitRemoteInfo
non viene specifico, il valore non elaborato dell'identificatore del partecipante viene visualizzato per impostazione predefinita.
Assegnare un valore per displayName
per personalizzare il nome visualizzato per il chiamante. Il valore specificato in CallKitRemoteInfo
è esattamente il modo in cui viene visualizzato nel log delle chiamate con composizione ultima.
Assegnare anche il valore cxHandle
. È ciò che l'applicazione riceve quando l'utente richiama il contatto.
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)
Specificare le informazioni sul destinatario delle chiamate in arrivo
Per specificare le informazioni sul chiamante in ingresso, creare un'istanza di CallKitOptions
. Se CallKitOptions
non viene specifico, il valore non elaborato dell'identificatore del partecipante viene visualizzato per impostazione predefinita.
Assegnare un valore per provideRemoteInfo
per personalizzare il nome visualizzato per il chiamante. Il valore specificato in CallKitRemoteInfo
è esattamente il modo in cui viene visualizzato nel log delle chiamate con composizione ultima.
Assegnare anche il valore cxHandle
. È ciò che l'applicazione riceve quando l'utente richiama il contatto.
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
}
Configurare provider
Come richiesto, specificare un'istanza CXProviderConfiguration
di CallKitOptions
. Per altre informazioni, vedere la documentazione per sviluppatori Apple su CXProviderConfiguration.
let providerConfig = CXProviderConfiguration()
providerConfig.supportsVideo = true
providerConfig.maximumCallGroups = 1
providerConfig.maximumCallsPerCallGroup = 1
providerConfig.includesCallsInRecents = true
providerConfig.supportedHandleTypes = [.phoneNumber, .generic]
Configurare una sessione audio
Configurare una sessione audio da chiamare prima di effettuare o accettare la chiamata in ingresso e prima di riprendere una chiamata in attesa. Per altre informazioni, vedere la documentazione per sviluppatori Apple su 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
}
Abilitare CallKit
Per abilitare CallKit, creare un'istanza di CallKitOptions
e fornirla a 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 ripresa e attesa per CallKit integrato nell'applicazione
Per CallKit integrato nell’applicazione usare hold
e resume
per gestire lo stato delle chiamate.
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
}
}