Condividi tramite


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

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

Passaggi successivi