VGChatClient
Antes de que puedas iniciar un chat, el Client SDK necesita autenticarse en los servidores de Vonage. Las siguientes adiciones son necesarias para ContentView.swift.
En la parte superior del archivo, importe VonageClientSDKChat:
import SwiftUI
import VonageClientSDKChat
Crea una nueva clase al final del archivo llamada 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
}
}
}
Esta clase creará una instancia de VGChatClient y luego crear una sesión utilizando un JWT. Sustituir ALICE_JWT y BOB_JWT con los JWT que creó anteriormente.
Botón Acciones
Para que los botones de inicio de sesión funcionen, tienes que añadirles acciones que ejecuten una función cuando se pulsen. Actualiza el código de la vista para instanciar un LoginViewModel y llamar a su login función:
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))
}
}
}
Si se produce un error al crear una sesión, se mostrará un mensaje Alert aparecerá el mensaje de error. También hay un navigationDestination que abrirá la pantalla de chat si la sesión se ha creado correctamente. Lo construirás en el siguiente paso.
Crear una aplicación de chat para iOS
Crear una aplicación para iOS que permita a los usuarios enviarse mensajes entre sí.