VGVoiceClient
Antes de que puedas recibir una llamada, el Client SDK necesita autenticarse en los servidores de Vonage. Las siguientes adiciones son necesarias para ViewController.swift.
NOTA: Tenga en cuenta que ya ha importado VGVoiceClient al principio del archivo.
Añade un VonageClientSDKVoice por debajo del connectionStatusLabel.
class ViewController: UIViewController {
...
let connectionStatusLabel = UILabel()
let client = VGVoiceClient()
...
}
Añadir el JWT
Al final de viewDidLoadestablezca el delegado del cliente y cree una sesión; asegúrese de sustituir ALICE_JWT para la JWT que has creado en un paso 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: En enableWebsocketInvites opción de configuración del cliente y el isUsingCallKit Esta configuración no debe utilizarse en entornos de producción. Activa las notificaciones push para asegurarte de recibir las llamadas entrantes incluso cuando la aplicación esté en segundo plano utilizando CallKit. Consulta el notificaciones push Consulta la guía para obtener más información.
El delegado del cliente
Para que el delegado funcione, debe tener ViewController ajustarse a VGVoiceClientDelegate. Añada la extensión al final del archivo.
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
}
}
}
Si se encuentra un error, se mostrará connectionStatusLabel se actualiza con el estado de la conexión correspondiente.
Construir y ejecutar
Pulse Cmd + R para construir y ejecutar de nuevo:

Recibir una llamada telefónica in-app
Recibes una llamada de un teléfono a tu aplicación