Partilhar via


Integrar o CallKit à biblioteca da interface do usuário

A Biblioteca da Interface do Usuário dos Serviços de Comunicação do Azure fornece suporte pronto para uso para o CallKit. Os desenvolvedores podem fornecer sua própria configuração para o CallKit a ser usado para a biblioteca da interface do usuário.

Neste artigo, você aprenderá a configurar o CallKit corretamente usando a biblioteca de interface do usuário em seu aplicativo.

Pré-requisitos

Para obter mais informações, consulte a biblioteca de interface do usuário do iOS de código aberto e o código de aplicativo de exemplo.

Configurar a integração com o CallKit

O SDK do iOS de Chamada dos Serviços de Comunicação do Azure dá suporte à integração do CallKit. Você pode habilitar essa integração na Biblioteca da Interface do Usuário configurando uma instância do CallCompositeCallKitOption. Para obter mais informações, consulte Integrar com o CallKit.

Especificar informações do destinatário da chamada para chamadas de saída

Para especificar as informações da chamada de saída, crie uma instância do CallKitRemoteInfo. Se você não fornecer CallKitRemoteInfo, o valor bruto do identificador de participante será exibido por padrão.

Atribua um valor para displayName personalizar o nome de exibição do chamador. O valor especificado em CallKitRemoteInfo é exatamente como ele aparece no último registro de chamadas discadas.

Atribua também o cxHandle valor. É o que o aplicativo recebe quando o usuário liga de volta para esse contato.

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)

Especificar informações do destinatário da chamada para chamadas recebidas

Para especificar as informações do chamador de chamada de entrada, crie uma instância de CallKitOptions. Se você não fornecer CallKitOptions, o valor bruto do identificador de participante será exibido por padrão.

Atribua um valor para provideRemoteInfo personalizar o nome de exibição do chamador. O valor especificado em CallKitRemoteInfo é exatamente como ele aparece no último registro de chamadas discadas.

Atribua também o cxHandle valor. É o que o aplicativo recebe quando o usuário liga de volta para esse contato.

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
}

Configurar provedores

Conforme necessário, forneça uma CXProviderConfiguration instância para CallKitOptions. Para obter mais informações, consulte a documentação do desenvolvedor da Apple sobre CXProviderConfiguration.

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

Configurar uma sessão de áudio

Configure uma sessão de áudio a ser chamada antes de fazer ou aceitar chamadas de entrada e antes de retomar uma chamada que está em espera. Para obter mais informações, consulte a documentação do desenvolvedor da Apple sobre o 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
}

Ativar o CallKit

Para habilitar o CallKit, crie uma instância de CallKitOptions e forneça-a ao 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 de retenção e retomada para CallKit integrada no aplicativo

Para CallKit integrado no uso hold do aplicativo e resume para gerenciar o estado da chamada.

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

Próximos passos