Swift

Testando seu código

Neste momento, o seu VonageVideoSDK.swift O arquivo deve ficar mais ou menos assim (com alguns ajustes):

import OpenTok

// Replace with your Application ID
let kApiKey = ""
// Replace with your generated session ID
let kSessionId = ""
// Replace with your generated token
let kToken = ""

struct Signal: Identifiable {
  let id = UUID()
  let text: String
  let isUsers: Bool
}

class VonageVideoSDK: NSObject {
    @Published var isSessionConnected = false
    @Published var messages: [Signal] = []

    lazy var session: OTSession = {
        return OTSession(apiKey: kApiKey, sessionId: kSessionId, delegate: self)!
    }()
    
    override init() {
        super.init()
        var error: OTError?
        session.connect(withToken: kToken, error: &error)
        if let error = error {
            print("Session creation error \(error.description)")
        }
    }
    
    func sendSignal(type: String, data: String) {
        var error: OTError?
        session.signal(withType: type , string: data, connection: nil, error: &error)
        if let error = error {
            print("Session creation error \(error.description)")
        } else {
            messages.append(.init(text: data, isUsers: true))
        }
    }
   
 }

// MARK: - OTSession delegate callbacks
extension VonageVideoSDK: OTSessionDelegate {
    func sessionDidConnect(_ session: OTSession) {
       isSessionConnected = true
    }
    
    func sessionDidDisconnect(_ session: OTSession) {
        isSessionConnected = false
    }
    
    func session(_ session: OTSession, didFailWithError error: OTError) {
        print("Session Failed to connect: \(error.localizedDescription)")
    }
    
    func session(_ session: OTSession, receivedSignalType type: String?, from connection: OTConnection?, with string: String?) {
        if let string = string, let type = type, let connection = connection {
            guard type == "msg" else { return }
            guard connection.connectionId != self.session.connection?.connectionId else { return }
            messages.append(.init(text: string, isUsers: false))
        }
    }
    
    func session(_ session: OTSession, streamCreated stream: OTStream) {}
    
    func session(_ session: OTSession, streamDestroyed stream: OTStream) {}
}

No seu código finalizado, você deve ter valores fixos para substituir YOUR_APP_ID, YOUR_SESSION_ID e YOUR_TOKEN — se você ainda não fez isso, consulte Configurando a autenticação acima.

Seu ContentView.swift O arquivo deve ficar assim:

import SwiftUI

struct ContentView: View {
    @StateObject private var sdk = VonageVideoSDK()
    @State private var message: String = ""
    
    var body: some View {
        VStack {
            if (sdk.isSessionConnected) {
                List(sdk.messages) { signal in
                    Text(signal.text)
                        .listRowSeparator(.hidden)
                        .frame(maxWidth: .infinity, alignment: signal.isUsers ? .trailing : .leading)
                }
                HStack {
                    TextField("Message", text: $message)
                    Button("Send") {
                        sdk.sendSignal(type: "msg", data: message)
                        self.message = ""
                    }.buttonStyle(.bordered)
                }.padding(8)
            } else {
                ProgressView {
                    Text("Connecting ...")
                        .font(.title)
                }
            }
        }
    }
}
  1. Compile e execute o aplicativo no Xcode (CMD + R).
  2. Digite algum texto no campo de texto e envie-o.
  3. Você deverá ver a mensagem ser adicionada ao histórico de mensagens.

Em seguida, podemos testar como fica se outra pessoa enviar uma mensagem. Podemos simular isso executando o aplicativo novamente em um simulador ou dispositivo diferente:

  1. Compile e execute o aplicativo em um simulador diferente.
  2. Reabra o aplicativo no simulador original.
  3. Digite algum texto no campo de texto e envie-o para os dois simuladores.
  4. Você deverá ver as duas mensagens sendo adicionadas ao histórico de mensagens.

Dica para solução de problemas: Se você não conseguir se conectar à sessão, verifique se há erros no console do Xcode. O problema mais provável é que sua chave de API, ID de sessão ou token não esteja configurado corretamente. Como você codificou suas credenciais diretamente no código, também é possível que seu token tenha expirado.

Bate-papo básico por texto

Siga este tutorial para criar um chat de texto básico do zero usando a Video API da Vonage. Essa é a maneira mais rápida de desenvolver uma prova de conceito para essa funcionalidade na plataforma de vídeo.

Etapas
1
Visão geral
2
Antes de começar
3
Configurar um aplicativo de vídeo da Vonage
4
Criação do projeto
5
Configurando a autenticação
6
Conectando-se à sessão
7
Enviando um sinal
8
Recebimento de um sinal
9
Testando seu código
10
Conclusão