diff --git a/CHANGES.md b/CHANGES.md index a5012d03..eb08e849 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -13,6 +13,22 @@ - [UPDATE] libwebrtc を 129.6668.1.0 に上げる - @miosakuma +- [UPDATE] SoraForwardingFilterOption 型の引数を Sora での 2025 年 12 月の廃止に向けて非推奨にする + - 今後はリスト形式の転送フィルター設定を利用してもらう + - 非推奨になるクラス + - SoraMediaChannel + - SignalingChannelImpl + - ConnectMessage (Any で定義されているが、実態は SoraForwardingFilterOption を Map に変換したもの) + - @zztkm +- [ADD] 転送フィルター機能の設定を表すクラス `SoraForwardingFilterOption` に `name` と `priority` を追加する + - @zztkm +- [ADD] 転送フィルターをリスト形式で指定するためのプロパティを追加する + - プロパティが追加されるクラス + - SoraMediaChannel に `forwardingFiltersOption` を追加する + - SignalingChannelImpl に `forwardingFiltersOption` を追加する + - ConnectMessage に `forwardingFilters` を追加する + - クラスそのものに変更はないが `MessageConverter.buildConnectMessage` に `forwardingFiltersOption` を追加する + - @zztkm - [FIX] SoraMediaChannel のコンストラクタで `signalingMetadata` と `signalingNotifyMetadata` に Map オブジェクトを指定した場合、null を持つフィールドが connect メッセージ送信時に省略されてしまう問題を修正 - `signalingMetadata` と `signalingNotifyMetadata` に設定する情報はユーザが任意に設定する項目であり value 値が null の情報も送信できるようにする必要がある - Gson は JSON シリアライズ時、デフォルトで null フィールドを無視するので、null を持つフィールドは省略される diff --git a/sora-android-sdk/src/main/kotlin/jp/shiguredo/sora/sdk/channel/SoraMediaChannel.kt b/sora-android-sdk/src/main/kotlin/jp/shiguredo/sora/sdk/channel/SoraMediaChannel.kt index dd7857b9..02bb3ef8 100644 --- a/sora-android-sdk/src/main/kotlin/jp/shiguredo/sora/sdk/channel/SoraMediaChannel.kt +++ b/sora-android-sdk/src/main/kotlin/jp/shiguredo/sora/sdk/channel/SoraMediaChannel.kt @@ -69,6 +69,7 @@ import kotlin.concurrent.schedule * @param dataChannels connect メッセージに含める `data_channels` * @param bundleId connect メッセージに含める `bundle_id` * @param forwardingFilterOption 転送フィルター機能の設定 + * @param forwardingFiltersOption リスト形式の転送フィルター機能の設定 */ class SoraMediaChannel @JvmOverloads constructor( private val context: Context, @@ -86,7 +87,13 @@ class SoraMediaChannel @JvmOverloads constructor( ignoreDisconnectWebSocket: Boolean? = null, dataChannels: List>? = null, private var bundleId: String? = null, + @Deprecated( + "この項目は 2025 年 12 月リリース予定の Sora にて廃止されます", + ReplaceWith("forwardingFiltersOption"), + DeprecationLevel.WARNING + ) private val forwardingFilterOption: SoraForwardingFilterOption? = null, + private val forwardingFiltersOption: List? = null, ) { companion object { private val TAG = SoraMediaChannel::class.simpleName @@ -672,6 +679,7 @@ class SoraMediaChannel @JvmOverloads constructor( |bundleId = ${this.bundleId} |signalingNotifyMetadata = ${this.signalingNotifyMetadata} |forwardingFilter = ${this.forwardingFilterOption} + |forwardingFilters = ${this.forwardingFiltersOption} """.trimMargin() ) @@ -781,7 +789,8 @@ class SoraMediaChannel @JvmOverloads constructor( signalingNotifyMetadata = signalingNotifyMetadata, connectDataChannels = connectDataChannels, redirect = redirectLocation != null, - forwardingFilterOption = forwardingFilterOption + forwardingFilterOption = forwardingFilterOption, + forwardingFiltersOption = forwardingFiltersOption ) signaling!!.connect() } diff --git a/sora-android-sdk/src/main/kotlin/jp/shiguredo/sora/sdk/channel/option/SoraForwardingFilterOption.kt b/sora-android-sdk/src/main/kotlin/jp/shiguredo/sora/sdk/channel/option/SoraForwardingFilterOption.kt index 72246757..8828f666 100644 --- a/sora-android-sdk/src/main/kotlin/jp/shiguredo/sora/sdk/channel/option/SoraForwardingFilterOption.kt +++ b/sora-android-sdk/src/main/kotlin/jp/shiguredo/sora/sdk/channel/option/SoraForwardingFilterOption.kt @@ -3,12 +3,16 @@ package jp.shiguredo.sora.sdk.channel.option /** * 転送フィルター機能の設定を表すクラスです。 * + * @param name 転送フィルターの名前 + * @param priority 転送フィルターの優先度 * @param action 転送フィルター適用時の挙動 * @param rules 転送フィルターの適用ルール * @param version 転送フィルターのバージョン * @param metadata 転送フィルターのメタデータ */ class SoraForwardingFilterOption( + var name: String? = null, + var priority: Int? = null, val action: Action? = null, val rules: List>, val version: String? = null, @@ -66,6 +70,8 @@ class SoraForwardingFilterOption( internal val signaling: Any get() { return mapOf( + "name" to name, + "priority" to priority, "action" to (action?.name?.lowercase() ?: null), "rules" to rules.map { outerRule -> outerRule.map { rule -> diff --git a/sora-android-sdk/src/main/kotlin/jp/shiguredo/sora/sdk/channel/signaling/SignalingChannel.kt b/sora-android-sdk/src/main/kotlin/jp/shiguredo/sora/sdk/channel/signaling/SignalingChannel.kt index fa071e43..2fe87f98 100644 --- a/sora-android-sdk/src/main/kotlin/jp/shiguredo/sora/sdk/channel/signaling/SignalingChannel.kt +++ b/sora-android-sdk/src/main/kotlin/jp/shiguredo/sora/sdk/channel/signaling/SignalingChannel.kt @@ -68,7 +68,13 @@ class SignalingChannelImpl @JvmOverloads constructor( private val signalingNotifyMetadata: Any? = null, private val connectDataChannels: List>? = null, private val redirect: Boolean = false, + @Deprecated( + "この項目は 2025 年 12 月リリース予定の Sora にて廃止されます", + ReplaceWith("forwardingFiltersOption"), + DeprecationLevel.WARNING + ) private val forwardingFilterOption: SoraForwardingFilterOption? = null, + private val forwardingFiltersOption: List? = null, ) : SignalingChannel { companion object { @@ -260,7 +266,8 @@ class SignalingChannelImpl @JvmOverloads constructor( signalingNotifyMetadata = signalingNotifyMetadata, dataChannels = connectDataChannels, redirect = redirect, - forwardingFilterOption = forwardingFilterOption + forwardingFilterOption = forwardingFilterOption, + forwardingFiltersOption = forwardingFiltersOption ) it.send(message) } diff --git a/sora-android-sdk/src/main/kotlin/jp/shiguredo/sora/sdk/channel/signaling/message/Catalog.kt b/sora-android-sdk/src/main/kotlin/jp/shiguredo/sora/sdk/channel/signaling/message/Catalog.kt index 0648ac3d..42639e75 100644 --- a/sora-android-sdk/src/main/kotlin/jp/shiguredo/sora/sdk/channel/signaling/message/Catalog.kt +++ b/sora-android-sdk/src/main/kotlin/jp/shiguredo/sora/sdk/channel/signaling/message/Catalog.kt @@ -49,7 +49,13 @@ data class ConnectMessage( @SerializedName("audio_streaming_language_code") val audioStreamingLanguageCode: String? = null, @SerializedName("redirect") var redirect: Boolean? = null, - @SerializedName("forwarding_filter") val forwardingFilter: Any? = null + @Deprecated( + "この項目は 2025 年 12 月リリース予定の Sora にて廃止されます", + ReplaceWith("forwardingFilters"), + DeprecationLevel.WARNING + ) + @SerializedName("forwarding_filter") val forwardingFilter: Any? = null, + @SerializedName("forwarding_filters") val forwardingFilters: List? = null ) data class VideoSetting( diff --git a/sora-android-sdk/src/main/kotlin/jp/shiguredo/sora/sdk/channel/signaling/message/MessageConverter.kt b/sora-android-sdk/src/main/kotlin/jp/shiguredo/sora/sdk/channel/signaling/message/MessageConverter.kt index b224f9b2..995c8870 100644 --- a/sora-android-sdk/src/main/kotlin/jp/shiguredo/sora/sdk/channel/signaling/message/MessageConverter.kt +++ b/sora-android-sdk/src/main/kotlin/jp/shiguredo/sora/sdk/channel/signaling/message/MessageConverter.kt @@ -44,6 +44,7 @@ class MessageConverter { dataChannels: List>? = null, redirect: Boolean = false, forwardingFilterOption: SoraForwardingFilterOption? = null, + forwardingFiltersOption: List? = null, ): String { val msg = ConnectMessage( @@ -60,6 +61,7 @@ class MessageConverter { signalingNotifyMetadata = signalingNotifyMetadata, audioStreamingLanguageCode = mediaOption.audioStreamingLanguageCode, forwardingFilter = forwardingFilterOption?.signaling, + forwardingFilters = forwardingFiltersOption?.map { it.signaling } ) if (mediaOption.upstreamIsRequired) {