Swift

NXMClient

Antes de que puedas realizar 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 NexmoClient en la parte superior del archivo.

Añadir un NXMClient por debajo del callButton.

class ViewController: UIViewController {
    
    var connectionStatusLabel = UILabel()
    var callButton = UIButton(type: .roundedRect)
    let client = NXMClient.shared
    ...
}

Añadir el JWT

Al final de viewDidLoadConfigure el delegado del cliente e inicie sesión; asegúrese de sustituir ALICE_JWT para la JWT que creó en un paso anterior. Recuerde que el tiempo de caducidad del token es de 6 horas, por lo que tendrá que generar uno nuevo si es demasiado antiguo.

override func viewDidLoad() {
    ...
    client.setDelegate(self)
    client.login(withAuthToken: "ALICE_JWT")
}

El delegado cliente

Para que la parte delegada funcione, es necesario tener ViewController ajustarse a NXMClientDelegate. Al final del archivo, añada esta extensión.

extension ViewController: NXMClientDelegate {
    
    func client(_ client: NXMClient, didReceiveError error: Error) {
        print("✆  ‼️ connection error: \(error.localizedDescription)")
        DispatchQueue.main.async { [weak self] in
            self?.callButton.alpha = 0
            self?.connectionStatusLabel.text = error.localizedDescription
        }
    }
    
    func client(_ client: NXMClient, didChange status: NXMConnectionStatus,
                reason: NXMConnectionStatusReason) {
        DispatchQueue.main.async { [weak self] in
            self?.callButton.alpha = 0
            switch status {
            case .connected:
                self?.connectionStatusLabel.text = "Connected"
                self?.callButton.alpha = 1
            case .disconnected:
                self?.connectionStatusLabel.text = "Disconnected"
            case .connecting:
                self?.connectionStatusLabel.text = "Connecting"
            @unknown default:
                self?.connectionStatusLabel.text = "Unknown"
            }
        }
    }
    
}

Si se encuentra un error, se mostrará connectionStatusLabel se actualiza con el estado de la conexión correspondiente. También, callButton se muestra cuando está conectado.

Construir y ejecutar

Cmd + R para construir y ejecutar de nuevo:

Interface connected