Swift

概要

リモートストリームを購読し、割り当てる networkStatsDelegate これにより、統計情報のコールバックを受け取ることができます。iOSでは、動画、音声、およびメディアリンクの統計情報(ネットワーク状況を含む) イベント) は、単一の OTSubscriberKitNetworkStatsDelegate—Androidのように個別のリスナーオブジェクトではない。

コールバックの処理は、次のステップで実装されます。

1. ネットワーク統計デリゲートの登録とサブスクライブ

リモートストリームが作成されたら、 OTSubscriber、デリゲートを設定し、購読します:

func session(_ session: OTSession, streamCreated stream: OTStream) {
    guard subscriber == nil else { return }

    let subscriber = OTSubscriber(stream: stream, delegate: self)
    subscriber.networkStatsDelegate = self   // OTSubscriberKitNetworkStatsDelegate
    self.subscriber = subscriber

    var error: OTError?
    session.subscribe(subscriber, error: &error)
    if let error {
        print("Subscribe error: \(error)")
    }
}
代表者 提供内容
OTSubscriberDelegate 接続のライフサイクル(加入者視点)
OTSubscriberKitNetworkStatsDelegate 動画・音声の統計情報、 メディアリンク 統計、 ネットワークの状態 イベント

iOS限定: セット networkStatsDelegate にある。 契約者 例。個別の「メディアリンクリスナー」の登録は行われません—実装 mediaLinkStatsUpdated そして networkConditionChanged 同じデリゲート型上で。

2. ストリームが終了した際の状態をクリアする

ストリームが破棄された際に、オブザーバビリティの状態をリセットする:

func session(_ session: OTSession, streamDestroyed stream: OTStream) {
    subscriber = nil
    latestObservabilityStats = nil
    latestMediaLinkSnapshot = nil
    DispatchQueue.main.async {
        self.subView = nil
    }
}

subscriberDidConnect, SwiftUI用のサブスクライバービューを割り当てます:

func subscriberDidConnect(toStream subscriberKit: OTSubscriberKit) {
    if let view = subscriber?.view {
        DispatchQueue.main.async {
            self.subView = view
        }
    }
}

次へ: ネットワーク統計のデリゲートメソッドを実装し、オーバーレイ用のデータを統合します。