Swift

VGChatClient

Avant de pouvoir démarrer un chat, le Client SDK doit s'authentifier auprès des serveurs de Vonage. Les ajouts suivants sont nécessaires pour ContentView.swift.

En tête du fichier, importez VonageClientSDKChat:

import SwiftUI
import VonageClientSDKChat

Créez une nouvelle classe au bas du fichier, appelée 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
        }
    }
}

Cette classe créera une instance de VGChatClient puis créez une session à l'aide d'un JWT. Remplacer ALICE_JWT et BOB_JWT avec les JWTs que vous avez créés précédemment.

Actions sur les boutons

Pour que les boutons de connexion fonctionnent, vous devez leur ajouter des actions qui exécuteront une fonction lorsqu'ils seront activés. Mettez à jour le code de la vue afin d'instancier un LoginViewModel et appeler son objet login fonction :

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

En cas d'erreur lors de la création d'une session, un message d'erreur est affiché. Alert le message d'erreur s'affiche. Il existe également un navigationDestination qui ouvrira l'écran de discussion si la session est créée avec succès. Vous la construirez à l'étape suivante.