Swift

コードのテスト

この時点で VonageVideoSDK.swift ファイルは次のようになるはずだ(少し調整して):

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

完成したコードでは、以下の値をハードコードで置き換える必要があります。 YOUR_APP_ID, YOUR_SESSION_ID そして YOUR_TOKEN - まだの方は 認証の設定 以上。

あなたの ContentView.swift ファイルはこのようになるはずだ:

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. Xcodeでアプリをビルドして実行する(CMD + R)。
  2. テキストフィールドにテキストを入力して送信する。
  3. メッセージがメッセージ履歴に追加されるのが見えるはずです。

次に、他の誰かがメッセージを送信した場合にどのように見えるかをテストします。別のシミュレーター/デバイスでアプリをもう一度実行することで、それをシミュレートできる:

  1. 別のシミュレーターでアプリをビルドして実行します。
  2. 元のシミュレータでアプリを再度開きます。
  3. テキストフィールドにテキストを入力し、両方のシミュレータに送信します。
  4. メッセージ履歴に両方のメッセージが追加されるのが見えるはずだ。

トラブルシューティングのヒント セッションに接続できない場合は、Xcode コンソールにエラーがないか確認してください。最も可能性の高い問題は、APIキー、セッションID、またはトークンが適切に設定されていないことです。認証情報をハードコードしているので、トークンの有効期限が切れている可能性もあります。

基本的なテキストチャット

このチュートリアルに従って、Vonage Video API を使用して基本的なテキストチャットをゼロから構築してください。これは、ビデオプラットフォーム上でこの機能の概念実証を構築する最も簡単な方法です。

手順
1
概要
2
始める前に
3
Vonageビデオアプリケーションの設定
4
プロジェクトの作成
5
認証の設定
6
セッションへの接続
7
シグナルを送る
8
信号の受信
9
コードのテスト
10
結論