SoraHandlers
public final class SoraHandlers
Sora オブジェクトのイベントハンドラです。
呼び出し元のスレッドは保証されない。UI 更新や共有状態の変更は main queue / main actor へ 束ねること。
配送のたびにプロパティを読むため、接続の途中で設定を変更しても次の配送から反映される (プロパティの読み書きを排他する lock は無く、並行する設定変更はデータ競合になる)。
Swift 6 言語モードで @MainActor の文脈からハンドラーを設定する場合は、クロージャに
@Sendable を付けるか nonisolated な関数へ処理を分離して隔離を外す。MediaChannel と
RTCAudioSession は Sendable ではないため、main actor へ渡す場合は
nonisolated(unsafe) let で運び、Task { @MainActor in ... } で main actor 上へ移す
(AVAudioSession.RouteChangeReason と AVAudioSessionRouteDescription は Sendable のため
そのまま渡せる)。
イベントを actor / Task から購読する場合は Sora.subscribeEvents(bufferingPolicy:) を使う
(接続ごとのイベントは MediaChannel.subscribeEvents(bufferingPolicy:))。新しい購読 API は、
この handler と同じ配送点から対応するイベントを配送する。
-
接続成功時に呼ばれるクロージャー
Declaration
Swift
public var onConnect: ((MediaChannel?, Error?) -> Void)? -
接続解除時に呼ばれるクロージャー
Declaration
Swift
public var onDisconnect: ((MediaChannel, Error?) -> Void)? -
メディアチャネルが追加されたときに呼ばれるクロージャー
Declaration
Swift
public var onAddMediaChannel: ((MediaChannel) -> Void)? -
メディアチャネルが除去されたときに呼ばれるクロージャー
Declaration
Swift
public var onRemoveMediaChannel: ((MediaChannel) -> Void)? -
音声入出力ルートが変更されたときに呼ばれるクロージャー
Declaration
Swift
public var onChangeAudioRoute: ((RTCAudioSession, AVAudioSession.RouteChangeReason, AVAudioSessionRouteDescription) -> Void)?Parameters
session変更通知元の
RTCAudioSessionreason変更理由
previousRoute変更前のルート情報
-
初期化します。
Declaration
Swift
public init()
View on GitHub
Install in Dash