Dela via


Integrera CallKit i användargränssnittsbiblioteket

Användargränssnittsbiblioteket för Azure Communication Services tillhandahåller inbyggt stöd för CallKit. Utvecklare kan ange en egen konfiguration för CallKit som ska användas för användargränssnittsbiblioteket.

I den här artikeln får du lära dig hur du konfigurerar CallKit korrekt med hjälp av användargränssnittsbiblioteket i ditt program.

Förutsättningar

Mer information finns i iOS-användargränssnittsbiblioteket med öppen källkod och exempelprogramkoden.

Konfigurera CallKit-integrering

Azure Communication Services Calling iOS SDK stöder CallKit-integrering. Du kan aktivera den här integreringen i användargränssnittsbiblioteket genom att konfigurera en instans av CallCompositeCallKitOption. Mer information finns i Integrera med CallKit.

Ange information om samtalsmottagare för utgående samtal

Om du vill ange information om utgående samtal skapar du en instans av CallKitRemoteInfo. Om du inte anger CallKitRemoteInfovisas deltagaridentifierarens råvärde som standard.

Tilldela ett värde för för displayName att anpassa visningsnamnet för anroparen. Värdet som anges i CallKitRemoteInfo är exakt hur det visas i den senast uppringda samtalsloggen.

Tilldela cxHandle även värdet. Det är vad programmet tar emot när användaren ringer tillbaka till kontakten.

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)

Ange information om samtalsmottagare för inkommande samtal

Om du vill ange information om inkommande uppringare skapar du en instans av CallKitOptions. Om du inte anger CallKitOptionsvisas deltagaridentifierarens råvärde som standard.

Tilldela ett värde för för provideRemoteInfo att anpassa visningsnamnet för anroparen. Värdet som anges i CallKitRemoteInfo är exakt hur det visas i den senast uppringda samtalsloggen.

Tilldela cxHandle även värdet. Det är vad programmet tar emot när användaren ringer tillbaka till kontakten.

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
}

Konfigurera providers

Ange en CXProviderConfiguration instans till CallKitOptions. Mer information finns i Apples utvecklardokumentation om CXProviderConfiguration.

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

Konfigurera en ljudsession

Konfigurera en ljudsession som ska anropas innan du ringer eller accepterar inkommande samtal och innan du återupptar ett samtal som är pausat. Mer information finns i Apples utvecklardokumentation om 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
}

Aktivera CallKit

Om du vill aktivera CallKit skapar du en instans av CallKitOptions och anger den till 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
)

Hold and Resume API för CallKit integrerat i programmet

För CallKit integrerat i programanvändning hold och resume för att hantera samtalstillstånd.

    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ästa steg