Swift
他のクライアントのストリームを購読する
最後に、私たちはクライアントに次のようなことを望んでいる。 サブスクライブ セッション内の他のクライアントのストリームにアクセスする(または表示する):
- 追加
subscriber&subViewプロパティをVonageVideoManagerクラスである:
final class VonageVideoManager: NSObject, ObservableObject {
private var session: OTSession?
private lazy var publisher: OTPublisher? = {
let settings = OTPublisherSettings()
settings.name = UIDevice.current.name
return OTPublisher(delegate: self, settings: settings)
}()
private var subscriber: OTSubscriber?
@Published var pubView: UIView?
@Published var subView: UIView?
について OTS購読者 クラスは iOS SDK で定義されています。これは、デバイスのカメラとマイクを使用して、ストリームVonage Videoセッションをサブスクライブします。
- の実装を変更する。
session(_: streamCreated)メソッドOTSessionDelegateコールバック) に、他のクライアントのセッションストリームを購読するコードを含める:
func session(_ session: OTSession, streamCreated stream: OTStream) {
print("Session streamCreated: \(stream.streamId)")
var error: OTError?
defer {
if let error {
print(error)
}
}
let subscriber = OTSubscriber(stream: stream, delegate: self)
self.subscriber = subscriber
session.subscribe(subscriber, error: &error)
}
他のクライアントがセッションにストリームをパブリッシュすると、このメソッドが呼び出され OTStream オブジェクトが渡される。オブジェクトは OTStream クラスはiOS SDKで定義されており、セッション内のオーディオ・ビデオ・ストリームを表します。コードは OTSubscriber クラスはiOS SDKで定義されている。このクラスは OTSubscriber() コンストラクタは2つのパラメータを取る:コンストラクタは OTStream オブジェクト(表示したいストリーム用)と OTSubscriberDelegate プロトコルを使用する。
- 次に
OTSubscriberDelegateプロトコルを使用する。このプロトコルには、サブスクライバーに関連するイベントを処理するメソッドが含まれています。以下のコードをVonageVideoManager.swiftファイルの閉じ括弧の後にOTPublisherDelegateを拡張した:
// MARK: - OTSubscriberDelegate callbacks
extension VonageVideoManager: OTSubscriberDelegate {
func subscriberDidConnect(toStream subscriberKit: OTSubscriberKit) {
print("The subscriber did connect to the stream.")
if let view = subscriber?.view {
DispatchQueue.main.async {
self.subView = view
}
}
}
func subscriber(_ subscriber: OTSubscriberKit, didFailWithError error: OTError) {
print("Subscriber failed: \(error.localizedDescription)")
}
}
- クライアントがセッションに接続すると
subscriberDidConnect(_:)メソッドが呼び出される。 - クライアントがセッションへの接続に失敗すると、OTErrorオブジェクトが
subscriber(_: didFailWithError:)メソッドを使用する。
- 最後に、購読者ビューも含めるようにUIコードを更新してください:
struct ContentView: View {
@ObservedObject var videoManager = VonageVideoManager()
var body: some View {
VStack {
videoManager.pubView.flatMap { view in
Wrap(view)
.frame(width: 200, height: 200, alignment: .center)
}.cornerRadius(5.0)
videoManager.subView.flatMap { view in
Wrap(view)
.frame(width: 200, height: 200, alignment: .center)
}.cornerRadius(5.0)
}
.task {
videoManager.setup()
}
}
}
基本的なビデオチャット
Vonage Video API プラットフォームの基本概念(ビデオ、音声、メッセージングによるユーザ間のコミュニケーション方法など)を学びます。Vonage Video API の基本的なフローを説明します。
手順
1
はじめに2
はじめに3
新規プロジェクトの作成4
Vonageビデオライブラリの追加5
認証の設定6
セッションへの接続7
セッションへのストリームの公開8
他のクライアントのストリームを購読する9
アプリの実行10
結論