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
を含める必要がある場合は Configuration
の multistreamEnabled
に true
を指定してください。
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 までの onDisconnect
は onDisconnectLegacy
に名前が変更になり、非推奨となりました。
移行法を参照し、どちらかの手段で移行してください。
移行方法¶
以下の 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("正常に切断されました")
}
}