Integrace CallKitu do knihovny uživatelského rozhraní

Knihovna uživatelského rozhraní služby Azure Communication Services poskytuje připravenou podporu pro CallKit. Vývojáři můžou poskytnout vlastní konfiguraci pro CallKit, která se má použít pro knihovnu uživatelského rozhraní.

V tomto článku se dozvíte, jak správně nastavit CallKit pomocí knihovny uživatelského rozhraní ve vaší aplikaci.

Požadavky

Další informace najdete v opensourcové knihovně uživatelského rozhraní iOS a ukázkovém kódu aplikace.

Nastavení integrace CallKitu

Sada Azure Communication Services Volající iOS SDK podporuje integraci CallKitu. Tuto integraci můžete povolit v knihovně uživatelského rozhraní konfigurací instance CallCompositeCallKitOption. Další informace naleznete v tématu Integrace s CallKit.

Zadání informací o příjemci hovorů pro odchozí hovory

Chcete-li zadat informace o odchozích hovorech, vytvořte instanci CallKitRemoteInfo. Pokud ho nezadáte CallKitRemoteInfo, zobrazí se ve výchozím nastavení nezpracovaná hodnota identifikátoru účastníka.

Přiřaďte hodnotu pro displayName přizpůsobení zobrazovaného jména volajícího. Hodnota zadaná CallKitRemoteInfo ve formátu přesně odpovídá tomu, jak se zobrazuje v protokolu posledního vytáčeného volání.

Také přiřaďte cxHandle hodnotu. Je to, co aplikace obdrží, když uživatel zavolá zpět na tento kontakt.

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)

Zadání informací o příjemci hovorů pro příchozí hovory

Chcete-li zadat informace o volajícím příchozího volání, vytvořte instanci CallKitOptions. Pokud ho nezadáte CallKitOptions, zobrazí se ve výchozím nastavení nezpracovaná hodnota identifikátoru účastníka.

Přiřaďte hodnotu pro provideRemoteInfo přizpůsobení zobrazovaného jména volajícího. Hodnota zadaná CallKitRemoteInfo ve formátu přesně odpovídá tomu, jak se zobrazuje v protokolu posledního vytáčeného volání.

Také přiřaďte cxHandle hodnotu. Je to, co aplikace obdrží, když uživatel zavolá zpět na tento kontakt.

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
}

Konfigurace poskytovatelů

Podle potřeby zadejte CXProviderConfiguration instanci .CallKitOptions Další informace najdete v dokumentaci pro vývojáře Apple o CXProviderConfiguration.

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

Konfigurace zvukové relace

Nakonfigurujte volat zvukovou relaci před umístěním nebo přijetím příchozího hovoru a před pokračováním hovoru, který je přidržený. Další informace najdete v dokumentaci pro vývojáře Apple týkající se 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
}

Povolení CallKitu

Chcete-li povolit CallKit, vytvořte instanci CallKitOptions a poskytněte ji .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
)

Rozhraní API pro blokování a obnovení pro CallKit integrované v aplikaci

Pro CallKit integrovaný do aplikace se používají hold a resume spravují stav volání.

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

Další kroky