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)
}
}
}
}
}
- Xcodeでアプリをビルドして実行する(CMD + R)。
- テキストフィールドにテキストを入力して送信する。
- メッセージがメッセージ履歴に追加されるのが見えるはずです。
次に、他の誰かがメッセージを送信した場合にどのように見えるかをテストします。別のシミュレーター/デバイスでアプリをもう一度実行することで、それをシミュレートできる:
- 別のシミュレーターでアプリをビルドして実行します。
- 元のシミュレータでアプリを再度開きます。
- テキストフィールドにテキストを入力し、両方のシミュレータに送信します。
- メッセージ履歴に両方のメッセージが追加されるのが見えるはずだ。
トラブルシューティングのヒント セッションに接続できない場合は、Xcode コンソールにエラーがないか確認してください。最も可能性の高い問題は、APIキー、セッションID、またはトークンが適切に設定されていないことです。認証情報をハードコードしているので、トークンの有効期限が切れている可能性もあります。
基本的なテキストチャット
このチュートリアルに従って、Vonage Video API を使用して基本的なテキストチャットをゼロから構築してください。これは、ビデオプラットフォーム上でこの機能の概念実証を構築する最も簡単な方法です。
手順
1
概要2
始める前に3
Vonageビデオアプリケーションの設定4
プロジェクトの作成5
認証の設定6
セッションへの接続7
シグナルを送る8
信号の受信9
コードのテスト10
結論