2025.1.x から 2025.2.x への移行

シグナリング の "type": "connect" メッセージの JSON に multistream 項目をデフォルトでは含めないように変更

2025.1.x までは必ず multistream を connect メッセージに含めていましたが、2025.2.x 以降はデフォルトでは multistream 項目を含めないようにしました。

経緯

Sora のバージョン 2025.1.0 からレガシーストリームが廃止され、connect メッセージの multistream 項目が廃止されました。

この変更に合わせて Sora iOS SDK でも connect メッセージの multistream 項目をデフォルトで送信しない仕様に変更しました。

これに伴い、デフォルトでは multistream を含めない挙動にするために Configuration の設定に応じて接続メッセージに multistream: true を自動的に設定する仕様も廃止しました。

connect メッセージに multistream を含める必要がある場合は引き続き Configuration を初期化する際に multistreamEnabled を指定してください。

移行方法

Sora 2025.1.0 以降リリースされた Sora を利用する場合は multistreamEnabled を指定しないようにしてください。

let config = Configuration(url: url,
                              channelId: channelId,
                              role: .sendrecv)

シグナリング の "type": "connect" メッセージの multistream を自動で true に設定する仕様を廃止

2025.1.x までは Configuration の設定時に条件に応じて自動的に connect メッセージに multistream: true を設定していましたが、2025.2.x では本仕様を廃止しました。

廃止の経緯は シグナリング の "type": "connect" メッセージの JSON に multistream 項目をデフォルトでは含めないように変更 の経緯に記載しています。

影響を受けるケース

自動的に multistream: true が設定される仕様に依存していた場合は影響を受ける可能性があります。

2025.2.x の移行で影響を受けるケース:

  • Sora がデフォルトでレガシーストリームを使うように設定されている、かつ Configuration が以下のいずれかの設定になっている場合

    • role.sendrecv である場合

    • spotlightEnabled.enabled である場合

移行方法

connect メッセージに multistream: true を含める必要がある場合は ConfigurationmultistreamEnabledtrue を指定してください。

let config = Configuration(url: url,
                              channelId: channelId,
                              role: .sendrecv,
                              multistreamEnabled: true)

onDisconnect: ((Error?) -> Void)? から onDisconnect: ((SoraCloseEvent) -> Void)? への移行

Sora iOS SDK 2025.2.x から 引数に SoraCloseEvent を持った onDisconnect コールバックを MediaChannelHandlers に追加しました。

SoraCloseEvent には、Sora との接続が終了したときのステータスコードと切断理由、または Error が含まれています。

onDisconnect: ((SoraCloseEvent) -> Void)? に移行することにより、Sora から切断された理由をアプリケーションで取得することが可能になります。

警告

2025.1.x までの onDisconnectonDisconnectLegacy に名前が変更になり、非推奨となりました。 移行法を参照し、どちらかの手段で移行してください。

移行方法

以下の 2 つの移行方法があります。

新 onDisconnect への移行

2025.2.x からは ((Error?) -> Void)? から ((SoraCloseEvent) -> Void)? に移行してください。

// 移行前
config.mediaChannelHandlers.onDisconnect = { [weak self] error in
    guard let self = self else { return }

    if let error {
        // エラー内容を表示
        print("エラー内容: \(error.localizedDescription)")
    } else {
        // 正常に切断された場合の処理
        print("正常に切断されました")
    }
}

// 移行後 (SoraCloseEvent のハンドリング処理を実装する)
config.mediaChannelHandlers.onDisconnect = { [weak self] event in
    guard let self = self else { return }
    switch event {
    case .ok(let code, let reason):
        // 正常に切断された場合の処理
        print("切断コード: \(code)")
        print("切断理由: \(reason)")
    case .error(let error):
        // エラー内容を表示
        print("エラー内容: \(error.localizedDescription)")
    }
}

SoraCloseEvent の定義は以下のようになっています。

enum SoraCloseEvent {
    // 正常系
    case ok(code: Int, reason: String)
    // 異常系
    case error(Error)
}

旧 onDisconnect を使い続ける

onDisconnect を onDisconnectLegacy に置き換えることで、旧 onDisconnect を使い続けることができます。

// onDisconnect を onDisconnectLegacy に置き換える
config.mediaChannelHandlers.onDisconnectLegacy = { [weak self] error in
    guard let self = self else { return }

    if let error {
        // エラー内容を表示
        print("エラー内容: \(error.localizedDescription)")
    } else {
        // 正常に切断された場合の処理
        print("正常に切断されました")
    }
}
© Copyright 2018-2025, Shiguredo Inc. Created using Sphinx 8.2.3