Swift

VGVoiceClient

Bevor Sie einen Chat starten können, muss sich das Client SDK bei den Vonage-Servern authentifizieren. Die folgenden Ergänzungen sind erforderlich, um ViewController.swift.

HINWEIS: Beachten Sie, dass Sie bereits importiert haben VGVoiceClient am Anfang der Datei.

Hinzufügen einer VGVoiceClient Instanz und eine User Eigenschaft, unterhalb der connectionStatusLabel.

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

Schaltfläche Ziele

Damit die Anmeldeschaltflächen funktionieren, müssen Sie ihnen Ziele hinzufügen, die eine Funktion ausführen, wenn sie angetippt werden. In der ViewController.swift Datei diese beiden Funktionen hinzufügen.

class ViewController: UIViewController {
    ...

    override func viewDidLoad() {
        ...
    }

    ...

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

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

Verknüpfen Sie dann die beiden Funktionen mit ihren jeweiligen Schaltflächen am Ende der viewDidLoad Funktion.

override func viewDidLoad() {
    ...

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

Hinzufügen der Log-in-Funktion

Am Ende des ViewController.swiftfügen Sie die login Funktion, die für die Benutzereigenschaft benötigt wird. Diese Funktion erstellt eine Sitzung, wenn die Benutzereigenschaft auf einen neuen Wert gesetzt wird.

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
                }
            }
        }
    }
    
}

Wenn ein Fehler auftritt, wird eine Fehlermeldung angezeigt, und die connectionStatusLabel wird mit dem entsprechenden Verbindungsstatus aktualisiert.

HINWEIS: Die enableWebsocketInvites Flagge in der Client-Konfiguration und die isUsingCallKit Einstellung sollte nicht in der Produktion verwendet werden. Aktivieren Sie Push-Benachrichtigungen, um sicherzustellen, dass Sie eingehende Anrufe erhalten, auch wenn Ihre Anwendung im Hintergrund läuft. CallKit. Siehe die Push-Benachrichtigungen Leitfaden für weitere Informationen.

Bauen und Ausführen

Presse Cmd + R zu erstellen und erneut auszuführen. Wenn Sie auf eine der Anmeldeschaltflächen tippen, wird der Client mit dem entsprechenden Benutzer angemeldet:

Interface connected