Swift

他のクライアントのストリームを購読する

最後に、私たちはクライアントに次のようなことを望んでいる。 サブスクライブ セッション内の他のクライアントのストリームにアクセスする(または表示する):

  1. 追加 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セッションをサブスクライブします。

  1. の実装を変更する。 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 プロトコルを使用する。

  1. 次に 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:) メソッドを使用する。
  1. 最後に、購読者ビューも含めるように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
結論