Swift

VGVoiceClient

Antes de iniciar um bate-papo, o Client SDK precisa se autenticar nos servidores da Vonage. São necessárias as seguintes adições para ViewController.swift.

NOTA: Observe que você já importou VGVoiceClient no início do arquivo.

Adicione um VGVoiceClient instância e um User propriedade, abaixo do connectionStatusLabel.

class ViewController: UIViewController {
    ...
    let connectionStatusLabel = UILabel()
    
    var client = VGVoiceClient()
    
    var user: User? {
        didSet {
            login()
        }
    }
}

Metas do Button

Para que os botões de login funcionem, é preciso adicionar destinos a eles, que executarão uma função quando forem tocados. No ViewController.swift Adicione essas duas funções ao arquivo.

class ViewController: UIViewController {
    ...

    override func viewDidLoad() {
        ...
    }

    ...

    @objc func setUserAsAlice() {
        self.user = User.Alice
    }

    @objc func setUserAsBob() {
        self.user = User.Bob
    }
}

Em seguida, vincule as duas funções aos respectivos botões no final do viewDidLoad função.

override func viewDidLoad() {
    ...

    loginAliceButton.addTarget(self, action: #selector(setUserAsAlice), for: .touchUpInside)
    loginBobButton.addTarget(self, action: #selector(setUserAsBob), for: .touchUpInside)
}

Adicionar a função de login

No final de ViewController.swift, adicione o login função necessária para a propriedade do usuário. Essa função cria uma sessão quando a propriedade do usuário é definida com um novo valor.

class ViewController: UIViewController {
    ...

    override func viewDidLoad() {
        ...
    }

    func login() {
        guard let user = self.user else { return }

        VGVoiceClient.isUsingCallKit = false
        let config = VGClientConfig(region: .US)
        config.enableWebsocketInvites = true
        client.setConfig(config)
        client.createSession(user.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
                }
            }
        }
    }
    
}

Se ocorrer um erro, ele será exibido, e o connectionStatusLabel é atualizado com o status da conexão correspondente.

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.

Compilar e executar

Imprensa Cmd + R para compilar e executar novamente. Se você tocar em um dos botões de login, o cliente fará o login com o respectivo usuário:

Interface connected