Swift

VGChatClient

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

Importieren Sie am Anfang der Datei VonageClientSDKChat:

import SwiftUI
import VonageClientSDKChat

Erstellen Sie am Ende der Datei eine neue Klasse namens LoginViewModel:

@MainActor
final class LoginViewModel: ObservableObject {
    @Published var error = ""
    @Published var isError = false
    @Published var isLoggedIn = false
    
    private let aliceJwt = "ALICE_JWT"
    private let bobJwt = "BOB_JWT"
    
    let client = VGChatClient()
    
    func login(_ username: String) async {
        do {
            let jwt = username == "Alice" ? aliceJwt : bobJwt
            try await client.createSession(jwt)
            isLoggedIn = true
        } catch {
            self.error = error.localizedDescription
            self.isError = true
        }
    }
}

Diese Klasse erzeugt eine Instanz von VGChatClient und erstellen Sie dann eine Sitzung mit einem JWT. Ersetzen Sie ALICE_JWT und BOB_JWT mit den JWTs, die Sie zuvor erstellt haben.

Tasten-Aktionen

Damit die Anmeldeschaltflächen funktionieren, müssen Sie ihnen Aktionen hinzufügen, die eine Funktion ausführen, wenn sie angetippt werden. Aktualisieren Sie den Code der Ansicht, um eine LoginViewModel Objekt und rufen dessen login Funktion:

struct ContentView: View {
    @StateObject private var loginModel = LoginViewModel()
    
    var body: some View {
        NavigationStack {
            VStack {
                Button("Login as Alice") {
                    Task {
                        await loginModel.login("Alice")
                    }
                }.buttonStyle(.bordered)
                Button("Login as Bob") {
                    Task {
                        await loginModel.login("Bob")
                    }
                }.buttonStyle(.bordered)
            }
            .padding()
            .navigationDestination(isPresented: $loginModel.isLoggedIn) {
                let chatViewModel = ChatViewModel(client: loginModel.client)
                ChatView(chatViewModel: chatViewModel)
            }
        }.alert(isPresented: $loginModel.isError) {
            Alert(title: Text(loginModel.error))
        }
    }
}

Wenn beim Erstellen einer Sitzung ein Fehler auftritt, wird eine Alert wird die Fehlermeldung angezeigt. Außerdem gibt es eine navigationDestination das den Chat-Bildschirm öffnet, wenn die Sitzung erfolgreich erstellt wurde. Das werden Sie im nächsten Schritt erstellen.