# 2023.2.x から 2023.3.x への移行


## 利用不可項目の削除について

### 概要

`@available(*, unavailable)` および、 `@available(*, deprecated, ... )` の項目について削除を行います。
これらの項目について利用している場合は 2023.3.0 でビルドエラーが発生します。以下のドキュメントを参考に移行への対応をお願いします。

### 経緯

`@available(*, unavailable)` について、Swift 5.9 以降 `@available(*, unavailable) attribute` が廃止となるため削除をします。
このアトリビュートはプロパティが廃止済みであることを伝えるためのものです。

`@available(*, deprecated, ... )` については非推奨 (廃止予定) の項目について移行を促すために記載していたものです。
1 年以上経過しているため削除をします。 移行先の項目は廃止項目をご確認ください。

### 廃止項目

#### @available(, unavailable) が指定されている項目

すでに廃止されており、Sora iOS SDK 2023.2.0 時点の SDK で利用した場合はビルドエラーが発生する項目です。
移行が未完了の場合は、以下を参考に移行をお願いします。

- `Configuration` の `url`- シグナリング URL の複数指定が可能となったため廃止となりました。
  - `urlCandidates` で代替してください。
- `Configuration` の `signalingChannelHandlers`- 廃止となりました。利用できません。
  - `mediaChannelHandlers` で代替してください。
- `Configuration` の `PeerChannelHandlers`- 廃止となりました。利用できません。
  - `mediaChannelHandlers` で代替してください。
- `Configuration` の `signalingChannelType`- 廃止となりました。利用できません。
- `Configuration` の `webSocketChannelType`- 廃止となりました。利用できません。
- `Configuration` の `peerChannelType`- 廃止となりました。利用できません。
- `Configuration` の `allowsURLSessionWebSocketChannel`- 廃止となりました。利用できません。
- `Configuration` の `videoCapturerDevice`- 廃止となりました。利用できません。
  - カメラの設定については `Configuration` の `cameraSettings` にて指定できます。
  - カスタムキャプチャーについては `MediaStream.send(videoFrame:)` を利用して映像フレームを送信してください。
  - [カメラの操作](camera.html#7a6cdc) も参考にしてください。
- `MediaChannelHandlers` の `webSocketChannel`- 廃止となりました。利用できません。
- `WebSocketChannelHandlers` の `onMessageHandler`- `onReceive` に置き換えられました。
- `WebSocketChannelHandlers` の `onDisconnectHandler`- 廃止となりました。利用できません。
- `WebSocketChannelHandlers` の `onPongHandler`- 廃止となりました。利用できません。
- `WebSocketChannelHandlers` の `onSendHandler`- 廃止となりました。利用できません。
- `WebSocketChannelHandlers` の `onDisconnect`- 廃止となりました。利用できません。
- `WebSocketChannelHandlers` の `onPong`- 廃止となりました。利用できません。
- `WebSocketChannelHandlers` の `onSend`- 廃止となりました。利用できません。
- `WebSocketChannel`- 廃止となりました。利用できません。
- `VideoCapturerDevice`- 廃止となりました。利用できません。
- `VideoCapturer`- 廃止となりました。利用できません。
  - カスタムキャプチャーについては `MediaStream.send(videoFrame:)` を利用して映像フレームを送信してください。
- `VideoCapturerHandlers`- 廃止となりました。利用できません。
  - カスタムキャプチャーについては `MediaStream.send(videoFrame:)` を利用して映像フレームを送信してください。
- `CameraVideoCapturer` の `shared`- 廃止となりました。利用できません。
  - 起動中の `CameraVideoCapturer` は `CameraVideoCapturer.current!` で取得できます。
- `CameraVideoCapturer` の `settings`- 廃止となりました。利用できません。
  - `CameraSettings` に定義を行うように変更しています。
- `CameraVideoCapturer` の `captureDevices`- `CameraVideoCapturer` の `devices` を利用して取得をおこなってください。
- `CameraVideoCapturer` の `captureDevice(for position: AVCaptureDevice.Position)`- `CameraVideoCapturer` の `device(for position: AVCaptureDevice.Position)` を利用して取得をおこなってください。
- `CameraVideoCapturer` の `suitableFormat(for device: AVCaptureDevice, resolution: Any)`- 廃止となりました。利用できません。
  - `CameraVideoCapturer` の `format(width: Int32, height: Int32, for device: AVCaptureDevica, frameRate: Int?)` で代替してください。
- `CameraVideoCapturer` の `suitableFrameRate(for format: AVCaptureDevice.Format, frameRate: Int)`- 廃止となりました。利用できません。
  - `CameraVideoCapturer` の `maxFrameRate(_ frameRate: Int, for format: AVCaptureDevice.Format)` で代替してください。
- `CameraVideoCapturer` の `canStop`- 廃止となりました。利用できません。
  - Sora との切断時にカメラは自動的に停止されます。
- `CameraVideoCapturer` の `stopWhenDone`- 廃止となりました。利用できません。
  - Sora との切断時にカメラは自動的に停止されます。
- `CameraVideoCapturer` の `stopWhenDone`- 廃止となりました。利用できません。
  - Sora との切断時にカメラは自動的に停止されます。
- `SignalingMetadata`- 廃止となりました。利用できません。
  - メタデータは Any? を任意の型にキャストして利用してください。
- `SignalingClientMetadata`- 廃止となりました。利用できません。
  - `SignalingNotifyMetadata` で代替してください。
- `SignalingNotifyEventType`- 廃止となりました。利用できません。
- `SignalingNotifyConnection`- 廃止となりました。利用できません。
  - この Struct の定義は `SignalingNotify` に集約されています。
- `SignalingNotifySpotlightChanged`- 廃止となりました。利用できません。
  - この Struct の定義は `SignalingNotify` に集約されています。
- `SignalingNotifyNetworkStatus`- 廃止となりました。利用できません。
  - この Struct の定義は `SignalingNotify` に集約されています。
- `DeviceInfo` の `model`- 廃止となりました。利用できません。

#### @available(, deprecated, ... ) が指定されている項目

Sora iOS SDK 2023.2.0 までは警告のみで内部的に移行先に値を設定しておりビルドエラーは発生しませんでした。項目自体を削除したため、以下を参考に移行をお願いします。
移行が未完了の場合は、以下を参考に移行をお願いします。

- `Role` の `publisher`- 廃止となりました。利用できません。
  - `sendonly` で代替してください。
- `Role` の `subscriber`- 廃止となりました。利用できません。
  - `recvonly` で代替してください。
- `Role` の `group`- 廃止となりました。利用できません。
  - `sendrecv` で代替してください。
- `Role` の `groupSub`- 廃止となりました。利用できません。
  - `recvonly` で代替してください。
- `Configuration` の `init`- 初期化時にマルチストリームの指定が必須となりました。
  - `Configuration(url: url, channelId: soraChannelId, role: .recvonly, multistreamEnabled: false)` のように指定してください。
- `Configuration` の `spotlight`- `spotlightNumber` に置き換えられました。
- `Configuration` の `activeSpeakerLimit`- `spotlightNumber` に置き換えられました。
- `SignalingConnect` の `spotlight`- `spotlightNumber` に置き換えられました。
- `SignalingConnect` の `activeSpeakerLimit`- `spotlightNumber` に置き換えられました。
- `SignalingNotify` の `publisherCount`- 廃止となりました。利用できません。
  - `channelSendonlyConnections` と `channelSendrecvConnections` の合計値で代替してください。
- `SignalingNotify` の `subscriberCount`- 廃止となりました。利用できません。
  - `channelRecvonlyConnections` と `channelSendrecvConnections` の合計値で代替してください。
- `SoraHandlers` の `onConnectHandler`- `onConnect` に置き換えられました。
- `SoraHandlers` の `onDisconnectHandler`- `onDisconnect` に置き換えられました。
- `SoraHandlers` の `onAddMediaChannelHandler`- `onAddMediaChannel` に置き換えられました。
- `SoraHandlers` の `onRemoveMediaChannelHandler`- `onRemoveMediaChannel` に置き換えられました。
- `MediaChannelHandlers` の `onConnectHandler`- `onConnect` に置き換えられました。
- `MediaChannelHandlers` の `onDisconnectHandler`- `onDisconnect` に置き換えられました。
- `MediaChannelHandlers` の `onAddStream`- `onRemoveStreamHandler` に置き換えられました。
- `MediaChannelHandlers` の `onDisconnectHandler`- `onRemoveStream` に置き換えられました。
- `MediaChannelHandlers` の `onReceiveSignalingHandler`- `onReceiveSignaling` に置き換えられました。
- `MediaStreamHandlers` の `onSwitchVideoHandler`- `onSwitchVideo` に置き換えられました。
- `MediaStreamHandlers` の `onSwitchAudioHandler`- `onSwitchAudio` に置き換えられました。
- `CameraPosition`- 起動時のカメラ設定は `Configuration.cameraSettings.position` の `.front` または `.back` を設定します。
  - 起動後のカメラの切り替えは `CameraVideoCapturer` の `flip(_:completionHandler:)` を使用します。
  - [カメラの操作](camera.html#7a6cdc) も参考にしてください。
- `CameraVideoCapturer` の `currentCameraDevice`- `CameraVideoCapturer` の `device` を利用して取得をおこなってください。
