Swift

セッションへのストリームの公開

アプリがVonage Videoセッションに接続すると、デバイスのカメラとマイクを使って、オーディオ・ビデオ・ストリームをセッションに公開します:

  1. 追加 publisher & pubView プロパティを 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)
    }()
    @Published var pubView: UIView? // this will be needed to display the UI later on

について OTPublisher(出版社 クラスは iOS SDK で定義されています。これは、デバイスのカメラとマイクを使用して、ストリームVonage Videoセッションを公開します。

  1. の実装を変更する。 sessionDidConnect(_:) メソッドに、ストリームをセッションに公開するコードを追加します:
func sessionDidConnect(_ session: OTSession) {
    print("The client connected to the session.")

    var error: OTError?
    defer {
        if let error {
            print(error)
        }
    }
    
    guard let publisher else {
        return
    }
        
    session.publish(publisher, error: &error)
    
    if let view = publisher.view {
        DispatchQueue.main.async {
            self.pubView = view
        }
    }
}

アプリがセッションに接続すると、次のようにインスタンスを初期化する。 OTPublisheriOS SDKで定義されている。コンストラクタは1つのパラメータを取る。 OTPublisherDelegate プロトコルを使用する。

を渡す。 OTPublisher オブジェクトを session.publish() メソッドを使用します。このメソッドは、iOS デバイスのカメラとマイクを使用して、セッションにオーディオビデオストリームを公開します。(Xcodeシミュレータでは、iOS SDKはストリームを公開するときにテストビデオを使用することに注意してください)

について OTPublisher オブジェクトは view プロパティである。 ユーアイビュー オブジェクトを表示します。このビューはデバイスのカメラからキャプチャされたビデオを表示します。次のステップでは、SwiftUIでこのビューを表示します( UIKit で簡単にできる。 addSubview(view) 関数)

  1. 次に、SwiftUIの世界でUIViewを使えるようにするために、UIViewのラッパーを作成する必要があります:
struct Wrap: UIViewRepresentable {
    @State var view: UIView
    
    func makeUIView(context: Context) -> UIView {
        return view
    }
    
    func updateUIView(_ uiView: UIView, context: Context) {
        DispatchQueue.main.async {
            self.view = uiView
        }
    }
}
  1. では、接続しよう VonageVideoManager に対する ContentView をプロパティとして使用する場合、データと対話するためにこのプロパティが必要になります。このソリューションは柔軟性があり、どのようなアーキテクチャにも適合するため、プロジェクトで ViewModel や Interactors などを使用している場合は、私たちにお任せください:
struct ContentView: View {
    @ObservedObject var videoManager = VonageVideoManager()
}
  1. ビュー本体にデータを入力する時間です。 Wrap ビューを作成した:
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)
        }
        .task {
            videoManager.setup()
        }
    }
}
  1. のメソッドを実装する。 OTPublisherDelegate プロトコルで定義されています。このプロトコルにはパブリッシャーに関連するイベントを処理するメソッドが含まれています。以下のコードを VonageVideoManager.swift ファイルの閉じ括弧の後に OTSessionDelegate を拡張した:
// MARK: - OTPublisherDelegate callbacks
extension VonageVideoManager: OTPublisherDelegate {
    func publisher(_ publisher: OTPublisherKit, didFailWithError error: OTError) {
        print("The publisher failed: \(error)")
    }
}
  • クライアントがセッションへの発行に失敗した場合 OTError オブジェクトは publisher(_: didFailWithError:) メソッドを使用する。

アプリケーションをデバッグしてください。アプリがセッションへの接続に成功すると、セッションにストリームがパブリッシュされ、アプリ内にパブリッシャーのビデオが表示されます。

基本的なビデオチャット

Vonage Video API プラットフォームの基本概念(ビデオ、音声、メッセージングによるユーザ間のコミュニケーション方法など)を学びます。Vonage Video API の基本的なフローを説明します。

手順
1
はじめに
2
はじめに
3
新規プロジェクトの作成
4
Vonageビデオライブラリの追加
5
認証の設定
6
セッションへの接続
7
セッションへのストリームの公開
8
他のクライアントのストリームを購読する
9
アプリの実行
10
結論