VGVoiceClient
Antes que você possa receber uma chamada, o Vonage Client SDK precisa se autenticar nos servidores da Vonage. São necessárias as seguintes alterações para ViewController.swift.
NOTA: Observe que você já importou VGVoiceClient no início do arquivo.
Adicione um VonageClientSDKVoice por exemplo, abaixo do connectionStatusLabel.
class ViewController: UIViewController {
...
let connectionStatusLabel = UILabel()
let client = VGVoiceClient()
...
}
Adicione o JWT
No final de viewDidLoad, defina o delegado do cliente e crie uma sessão — certifique-se de substituir ALICE_JWT para o JWT que você criou em uma etapa anterior.
override func viewDidLoad() {
...
VGVoiceClient.isUsingCallKit = false
let config = VGClientConfig(region: .US)
config.enableWebsocketInvites = true
client.setConfig(config)
client.delegate = self
client.createSession("ALICE_JWT") { error, sessionId in
DispatchQueue.main.async { [weak self] in
guard let self else { return }
if error == nil {
self.connectionStatusLabel.text = "Connected"
} else {
self.connectionStatusLabel.text = error?.localizedDescription
}
}
}
}
NOTA: O enableWebsocketInvites opção na configuração do cliente e o isUsingCallKit Essa configuração não deve ser usada em ambiente de produção. Ative as notificações push para garantir que você receba chamadas mesmo quando o aplicativo estiver em segundo plano, usando CallKit. Consulte o notificações push guia para obter mais informações.
O Representante do Cliente
Para que o delegado funcione, é necessário ter ViewController estar em conformidade com VGVoiceClientDelegate. Adicione a extensão ao final do arquivo.
extension ViewController: VGVoiceClientDelegate {
func client(_ client: VGBaseClient, didReceiveSessionErrorWith reason: VGSessionErrorReason) {
let reasonString: String!
switch reason {
case .tokenExpired:
reasonString = "Expired Token"
case .pingTimeout, .transportClosed:
reasonString = "Network Error"
default:
reasonString = "Unknown"
}
DispatchQueue.main.async { [weak self] in
self?.connectionStatusLabel.text = reasonString
}
}
}
Se ocorrer um erro, ele será exibido e o connectionStatusLabel é atualizado com o status da conexão correspondente.
Compilar e executar
Imprensa Cmd + R para compilar e executar novamente:

Receber uma ligação dentro do aplicativo
Você recebe uma chamada de um telefone no seu aplicativo