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
- Um dispositivo iOS físico. Um simulador iOS não suporta a funcionalidade CallKit.
- Uma conta do Azure com uma subscrição ativa. Crie uma conta gratuitamente.
- Um recurso de Serviços de Comunicação implantado. Crie um recurso de Serviços de Comunicação.
- Um token de acesso de usuário para habilitar o cliente de chamada. Obtenha um token de acesso de usuário.
- Opcional: conclusão do Guia de início rápido para introdução aos compostos da Biblioteca da Interface do Usuário.
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
}
}