# 古いリリースノート

**CHANGE**
: 後方互換性のない変更

**UPDATE**
: 後方互換性がある変更

**ADD**
: 後方互換性がある追加

**FIX**
: バグ修正

## 2022.6.0

**日付**: 2022-09-14
**対応 Sora**: 2022.1.1
**対応 iOS**: 13.0 以降
**対応 libwebrtc**: m105.5195.0.0

- [CHANGE] bitcode を無効化しました- libwebrtc 105.5195.0.0 より bitcode が含まれなくなりました。bitcode を無効にしてビルドをする必要があります
  - bitcode を含めてアプリケーションをビルドする必要がある場合は一つ前の `2022.5.0` をご利用ください
- [CHANGE] 対応アーキテクチャについて x86_64 を廃止しました- libwebrtc 105.5195.0.0 より macOS x86_64 のビルドが廃止されたことに伴う変更です
- [UPDATE] WebRTC 105.5195.0.0 に対応しました
- [UPDATE] システム条件を変更しました- macOS 12.6 以降
  - Xcode 14.0
  - Swift 5.7
  - CocoaPods 1.11.3 以降

## 2022.5.0

**日付**: 2022-08-04
**対応 Sora**: 2022.1.1
**対応 iOS**: 13.0 以降
**対応 libwebrtc**: m104.5112.8.0

- [UPDATE] WebRTC 104.5112.8.0 に対応しました
- [ADD] 接続時に HTTP プロキシの設定を追加できるようにしました- 詳細は [プロキシ・サーバーの設定](signaling.html#7ef248) をご確認ください

## 2022.4.0

**日付**: 2022-06-29
**対応 Sora**: 2022.1.0
**対応 iOS**: 13.0 以降
**対応 libwebrtc**: m103.5060.4.0

- [CHANGE] mid を必須とする対応を行いました- この修正の結果、 type: offer に mid が含まれない場合は、エラーになります
  - 最新版の Sora をご利用の場合は必ず mid が設定されます
- [CHANGE] `Configuration.spotlightEnabled == .enabled` の際に、自動的にサイマルキャストを有効化しない変更を行いました- サイマルキャストを有効化する場合は明示的に `Configuration.simulcastEnabled == true` を設定してください
  - 詳細は [2022.4.0 で実施するスポットライト機能に対する破壊的変更について](old_migration.html#322ff6) をご確認ください。
- [UPDATE] システム条件を変更しました- macOS 12.3 以降
  - WebRTC SFU Sora 2022.1 以降
- [UPDATE] WebRTC 103.5060.4.0 に対応しました
- [ADD] Sora の bundle_id に対応しました- `Configuration.bundleId` を追加しました

## 2022.3.0

**日付**: 2022-06-10
**対応 Sora**: 2021.2.8
**対応 iOS**: 13.0 以降
**対応 libwebrtc**: m102.5005.7.6

- [UPDATE] システム条件を変更しました- Xcode 13.4
  - Swift 5.6.1
- [UPDATE] WebRTC 102.5005.7.6 に対応しました
- [UPDATE] offer に mid が含まれる場合は、 mid を利用して sender を設定する
- [FIX] CocoaPods 利用時 App Store Connect に bitcode を有効にしてバイナリをアップロードするとエラーになる問題を解消しました。- WebRTC 102.5005.7.6 ビルドにて対応しているため iOS SDK 本体の修正はありません

## 2022.2.1

**日付**: 2022-04-22
**対応 Sora**: 2021.2.8
**対応 iOS**: 13.0 以降
**対応 libwebrtc**: m97.4692.4.0

- [FIX] CocoaPods 利用時 App Store Connect に bitcode を有効にしてバイナリをアップロードするとエラーになる問題が発生しました。暫定回避策として、 WebRTC 97.4692.4.0 に下げています。- 最新のバージョンにて解消しております。

## 2022.2.0

**日付**: 2022-03-11
**対応 Sora**: 2021.2.1
**対応 iOS**: 13.0 以降
**対応 libwebrtc**: m99.4844.1.0

- [CHANGE] DataChannel 経由で受信したメッセージのうち label が signaling, push, notify について `MediaChannelHandlers.onReceiveSignaling` で通知する処理を追加しました
- [CHANGE] `MediaChannel.connectedUrl` を更新するタイミングを修正しました- type: connect を送信するタイミングで `MediaChannel.connectedUrl` を更新していたものを、 type: offer を受信したタイミングで値を更新するように変更しました
- [UPDATE] WebRTC 99.4844.1.0 に対応しました
- [ADD] メッセージング機能を追加しました- 詳細は [リアルタイムメッセージング機能](messaging.html#c80a80) をご確認ください
- [ADD] `MediaChannel.contactUrl` を追加しました- `MediaChannel.contactUrl` は、複数のシグナリング候補の中から最初に type: connect メッセージを送信した Sora のシグナリング URL です

## 2022.1.1

**日付**: 2022-03-04
**対応 Sora**: 2021.2.1
**対応 iOS**: 13.0 以降
**対応 libwebrtc**: m98.4758.0.0

- [FIX] Sora との接続確立後に WebSocket のエラーが発生した場合、 エラーが正しく伝搬されず、終了処理が実行されない問題を修正しました

## 2022.1.0

**日付**: 2022-02-03
**対応 Sora**: 2021.2.0
**対応 iOS**: 13.0 以降
**対応 libwebrtc**: m98.4758.0.0

- [CHANGE] スポットライトレガシーを削除しました
- [CHANGE] `WebSocketChannel` プロトコルを廃止しました- `Configuration.webSocketChannelType` を廃止しました
  - `Configuration.allowsURLSessionWebSocketChannel` を廃止しました
  - `WebSocketChannelHandlers.onDisconnect` を廃止しました
  - `WebSocketChannelHandlers.onPong` を廃止しました
  - `WebSocketChannelHandlers.onSend` を廃止しました
  - `MediaChannel.webSocketChannel` を廃止しました
  - `WebSocketChannelHandlers` を廃止しました
- [CHANGE] `Starscream` を削除して、 `URLSessionWebSocketTask` をデフォルトで使用する対応を行いました
- [CHANGE] サポートする iOS のバージョンを13以上に変更しました
- [CHANGE] `MediaChannel.native` の型を `RTCPeerConnection` から `RTCPeerConnection?` に変更しました- PeerChannel で force unwrapping している箇所を修正する際に、併せて修正しました
- [UPDATE] システム条件を変更しました- macOS 12.2 以降
  - Xcode 13.2
  - Swift 5.5.2
- [UPDATE] WebRTC 98.4758.0.0 に対応しました
- [UPDATE] MediaStream から MediaChannel にアクセスできるようにしました
- [ADD] 複数シグナリング URL の指定に対応しました- `Configuration.url` を廃止して `Configuration.urlCandidates` を追加しました
  - `MediaChannel.connectedUrl` を追加しました
  - 詳細は [複数のシグナリング URL を指定する](signaling.html#648d56) をご確認ください
- [ADD] type: rediret に対応しました- 詳細は [クラスター機能利用時のシグナリングのリダイレクト](signaling.html#da223b) をご確認ください
- [FIX] CameraVideoCapturer で force unwrapping していた箇所を修正しました
- [FIX] VideoView に debugMode = true を設定した際にメモリー・リークが発生する問題を修正しました

## 2021.x

### 2021.3.1

**日付**: 2022-01-05
**対応 Sora**: 2021.2.0
**対応 iOS**: 12.1 以降
**対応 libwebrtc**: m95.4638.3.0

- [FIX] `RTCPeerConnectionState` が `.failed` に遷移した際の切断処理中にクラッシュする問題を修正しました- `BasicPeerChannelContext` と `PeerChannel` の循環参照を防ぐために弱参照を利用していましたが、それが原因で `BasicPeerChannelContext` より先に `PeerChannel` が解放されるケースがあり、クラッシュの原因となっていました
- [FIX] `DataChannel` クラスで利用しているデータ圧縮/復号処理にメモリー・リークがあったので修正しました

### 2021.3.0

**日付**: 2021-11-25

- [CHANGE] PeerChannel, SignalingChannel protocol を削除しました- `Configuration.peerChannelType` を廃止しました
  - `Configuration.signalingChannelType` を廃止しました
  - `Configuration.peerChannelHandlers` を廃止しました
  - `Configuration.signalingChannelHandlers` を廃止しました
  - `MediaChannel.native` を追加しました
  - `MediaChannel.webSocketChannel` を追加しました
- [UPDATE] システム条件を変更しました- macOS 12.0 以降
  - Xcode 13.1
  - Swift 5.5
  - CocoaPods 1.11.2
- [UPDATE] WebRTC 95.4638.3.0 に対応しました
- [ADD] DataChannel シグナリングに対応しました- `Configuration.dataChannelSignaling` を追加しました
  - `Configuration.ignoreDisconnectWebSocket` を追加しました
- [FIX] Sora 接続時に audioEnabled = false を設定すると answer 生成に失敗してしまう問題についてのワークアラウンドを削除しました

### 2021.2.1

**日付**: 2021-09-29

- [FIX] Swift Package Manager に対応するためバージョニングを修正しました

### 2021.2

**日付**: 2021-09-29

- [CHANGE] 接続開始時のカメラ・デバイスを指定可能にしました- `Configuration.cameraSettings.position` に `.front` または `.back` を設定して、接続開始時のカメラ・デバイスを指定します
  - この修正に伴い、以下の API が変更されました- `CameraVideoCapturer` の API を破壊的に変更しました
    - `CameraVideoCapturer.Settings` を `CameraSettings` にリネームしました
    - `VideoCapturerHandlers` を `CameraVideoCapturerHandlers` にリネームしました
    - `VideoCapturer` を廃止しました
    - `VideoCapturerDevice` を廃止しました
    - `CameraPosition` を廃止しました
    - `Configuration.videoCapturerDevice` を廃止しました
    - `MediaStream.videoCapturer` を廃止しました
- [UPDATE] Swift Package Manager に対応しました
- [UPDATE] WebRTC 93.4577.8.0 に対応しました
- [UPDATE] システム条件を変更しました- iOS 12.1 以降
- [UPDATE] Starscream のバージョンを 4.0.4 に更新しました
- [UPDATE] シグナリング・メッセージ re-offer, re-answer に対応しました
- [UPDATE] AES-GCM を有効にしました
- [UPDATE] SoraDispatcher を追加しました- libwebrtc 内部で利用されているディスパッチ・キューをラップし、 SDK のユーザーから利用しやすくしました
- [FIX] 接続、切断の検知に RTCPeerConnectionState を参照するように変更しました
- [FIX] 接続終了後に MediaChannel のメモリーが解放されずに残り続ける事象を修正しました

### 2021.1

**日付**: 2021-06-24

- [CHANGE] スポットライトに関する API を変更しました- Sora のスポットライトレガシー機能を利用するための API を `Sora.useSpotlightLegacy()` に変更しました
  - `Configuration.activeSpeakerLimit` を非推奨にして、 `Configuration.spotlightNumber` に変更しました
  - `Configuration.spotlightFocusRid` を追加しました
  - `Configuration.spotlightUnfocusRid` を追加しました
- [CHANGE] シグナリングに含まれる JSON 型のフィールドを JSONSerialization でデコードするようにしました- フィールドの型を SignalingMetadata から Any? に変更しました。任意の型にキャストして利用する必要があります
  - 対象のフィールド- `SignalingNotifyConnection.metadata`
    - `SignalingOffer.metadata`
    - `SignalingPush.data`
  - 修正にともない `SignalingClientMetadata` を `SignalingNotifyMetadata` にリネームしました
- [CHANGES] type: notify のシグナリング・メッセージに対応する struct として SignalingNotify を追加しました- event_type 毎に定義されていた以下の struct を廃止し `SignalingNotify` に統合しました- `SignalingNotifyConnection`
    - `SignalingNotifySpotlightChanged`
    - `SignalingNotifyNetworkStatus`
- [CHANGE] サイマルキャストのオプションを Sora のアップデートへ追従しました- `SimulcastQuality` を削除し `SimulcastRid` を追加しました
  - `Configuration.simulcastQuality` を削除し `simulcastRid` を追加しました
  - `SignalingConnect.simulcastQuality` を削除し `simulcastRid` を追加しました
- [CHANGE] DeviceModel を廃止し、 hw.machine の結果を表示するよう変更しました
- [UPDATE] システム条件を変更しました- Xcode 12.5
  - Swift 5.4
  - CocoaPods 1.10.1
- [UPDATE] サイマルキャストで VP8 / H.264 (ハードウェアアクセラレーション含む) に対応しました
- [UPDATE] WebRTC 91.4472.9.1 に対応しました
- [UPDATE] AV1 に対応しました
- [ADD] libwebrtc のログレベルを設定する API を追加しました- `Sora.setWebRTCLogLevel(_:)`
- [FIX] SignalingNotify に漏れていたフィールドを追加しました- `SignalingNotify.authnMetadata`
  - `SignalingNotify.authzMetadata`
  - `SignalingNotify.data`
  - `SignalingNotify.turnTransportType`
- [FIX] サイマルキャストのパラメーター active: false が無効化されてしまう問題を修正しました
- [FIX] WebSocketChannel 切断時に MediaChannel を切断する処理が漏れていたので追加しました

## 2020.x

### 2020.7.2

**日付**: 2021-05-26

- [FIX] Sora 接続時に SDK から client_id が指定できない問題を修正しました- `Configuration.clientId`: 追加

### 2020.7.1

**日付**: 2021-01-08

- [FIX] スポットライトレガシー機能に対応しました
- [FIX] API: スポットライトに関する API について以下を変更しました- `Configuration.Spotlight`: 追加しました
  - `Configuration.spotlightEnabled`: 型を `Spotlight` に変更しました

### 2020.7

**日付**: 2020-11-06

- [CHANGE] WebRTC 86.4240.10.0 に変更しました
- [CHANGE] `AudioMode.swift` がターゲット含まれておらずビルドできなかった事象を修正しました

### 2020.6

**日付**: 2020-11-05

- [CHANGE] WebRTC M86 に対応しました
- [CHANGE] API: スポットライトに関する API について以下を変更しました- `Configuration.spotlight`: 非推奨になりました
  - `Configuration.spotlightEnabled`: 追加しました
  - `Configuration.activeSpeakerLimit`: 追加しました
- [CHANGE] API: 音声モードに関する API について以下を変更しました- `Sora.setAudioMode(_:options:)`: 追加しました
  - `AudioMode`: 追加しました
  - `AudioOutput`: 追加しました
- [UPDATE] システム条件を更新しました- Xcode 12.0
  - Swift 5.3
  - CocoaPods 1.9.3
- [FIX] API: `Sora.connect()`: タイムアウト時にハンドラが実行されない事象を修正しました

### 2020.5

**日付**: 2020-08-11

- [UPDATE] システム条件を更新しました- Xcode 11.6
  - Swift 5.2.4
  - WebRTC SFU Sora 2020.1 以降
- [UPDATE] WebRTC M84 に対応しました
- [UPDATE] シグナリング pong に統計情報を追加しました
- [FIX] API: 次のイベントハンドラのクラスにコンストラクタを追加しました- `MediaChannelHandlers`
  - `MediaStreamHandlers`
  - `PeerChannelHandlers`
  - `SignalingChannelHandlers`
  - `SoraHandlers`
  - `VideoCapturerHandlers`
  - `WebSocketChannelHandlers`
- [FIX] API: `Sora.connect()`: 接続先ホストが存在しない場合にハンドラが実行されない事象を修正しました

### 2020.4.1

**日付**: 2020-04-08

- [FIX] 受信したシグナリングの role が `sendonly`, `recvonly`, `sendrecv` の場合にデコードに失敗する事象を修正しました
- [FIX] API: `MediaChannel`: `senderStream`: ストリーム ID が接続時に指定した配信用ストリームID と一致するストリームを返すように修正しました (変更前はカメラのストリームを返した)
- [FIX] API: `MediaChannel`: `receiverStreams`: `senderStream` 以外のストリームを返すように修正しました (変更前はカメラ以外のストリームを返した)

### 2020.4

**日付**: 2021-03-27

- [CHANGE] iOS 13 以降の場合に URLSession を使って WebSocket 通信を行うように修正しました
- [CHANGE] Plan B に関連する API を削除しました
- [CHANGE] シグナリングで送信する JSON にて、 role を upstream/downstream のどちらかで出力するように修正しました
- [CHANGE] シグナリングの offer/update/ping を peer connection の状態に関わらず処理するように修正しました
- [CHANGE] 端末情報を追加しました (iPhone 11, iPhone 11 Pro, iPhone1 11 Pro Max, iPad 7th)
- [CHANGE] ログに出力される WebSocket のエラー内容を詳細にしました
- [CHANGE] API: `MediaChannel`: `senderStream` プロパティを追加しました
- [CHANGE] API: `MediaChannel`: `receiverStreams` プロパティを追加しました

### 2020.3

**日付**: 2020-02-28

- [FIX] マイクが初期化されない事象を修正しました

### 2020.2

**日付**: 2020-02-25

- [CHANGE] 受信時にマイクのパーミッションを要求しないようにしました
- [FIX] `Sora.remove(mediaChannel:)` 実行時に `onRemoveMediaChannel` が呼ばれない事象を修正しました

### 2020.1

**日付**: 2020-01-20

本バージョンよりバージョン表記を「リリース年.リリース回数」に変更しました。

- [CHANGE] WebRTC M79 に対応しました
- [CHANGE] Carthage の使用を止めました
- [CHANGE] シグナリングに含める各種バージョン情報を変更しました
- [CHANGE] API: SocketRocket の使用を止めて Starscream を採用しました
- [CHANGE] API: イベントハンドラのプロパティ名を短縮しました
- [CHANGE] API: `Configuration` : `init(url:channelId:role:)` を非推奨にしました
- [CHANGE] API: `Configuration` : `init(url:channelId:role:multistreamEnabled:)` を追加しました
- [CHANGE] API: `Configuration` : `webSocketChannelHandlers` プロパティを追加しました
- [CHANGE] API: `Configuration` : `multistreamEnabled` プロパティを追加しました
- [CHANGE] API: `Role` : Sora の仕様に合わせて `sendonly`, `recvonly`, `sendrecv` を追加しました
- [CHANGE] API: `Role` : `publisher`, `subscriber`, `group`, `groupSub` を非推奨にしました
- [UPDATE] システム条件を更新しました- Xcode 11.3
  - CocoaPods 1.8.4 以降
  - WebRTC SFU Sora 19.10.3 以降

## 2.x

### 2.6.0

#### CHANGE

- システム条件を更新しました- macOS 10.15
  - Xcode 11.1
- WebRTC M78 に対応しました

### 2.5.0

#### CHANGE

- システム条件を更新しました> - Xcode 11
  > - Swift 5.1

### 2.4.1

#### CHANGE

- 依存するライブラリを変更しました (Cartfile)- sora-webrtc-ios 76.3.1 -> shiguredo-webrtc-ios 76.3.1
- 対応アーキテクチャから armv7 を外しました
- 対応アーキテクチャに x86_64 を追加しました (シミュレーターの動作は未保証です)
- シグナリングに SDK と端末の情報を含めるようにしました

### 2.4.0

#### CHANGE

- システム条件を更新しました- Xcode 10.3
- WebRTC M76 に対応しました
- サイマルキャスト機能に対応しました
- スポットライト機能に対応しました
- VAD 機能を削除しました
- 音声ビットレートの指定に対応しました
- シグナリングのメタデータに対応しました
- API: `Configuration`: `audioBitRate` プロパティを追加しました
- API: `Configuration`: `maxNumberOfSpeakers` プロパティを削除しました
- API: `Configuration`: `simulcastEnabled` プロパティを追加しました
- API: `Configuration`: `simulcastQuality` プロパティを追加しました
- API: `Configuration`: `spotlight` プロパティを追加しました
- API: `SimulcastQuality`: 追加しました
- API: シグナリングに関する API の名前を変更しました- `SignalingMessage` -> `Signaling`
  - `SignalingNotificationEventType` -> `SignalingNotifyEventType`
  - `SignalingConnectMessage` -> `SignalingConnect`
  - `SignalingOfferMessage` -> `SignalingOffer`
  - `SignalingOfferMessage.Configuration` -> `SignalingOffer.Configuration`
  - `SignalingPongMessage` -> `SignalingPong`
  - `SignalingPushMessage` -> `SignalingPush`
- API: `SignalingAnswer`: 追加しました
- API: `SignalingCandidate`: 追加しました
- API: `SignalingClientMetadata`: 追加しました
- API: `SignalingMetadata`: 追加しました
- API: `SignalingNotifyConnection`: 追加しました
- API: `SignalingNotifyNetworkStatus`: 追加しました
- API: `SignalingNotifySpotlightChanged`: 追加しました
- API: `SignalingOffer.Encoding`: 追加しました
- API: `SignalingUpdate`: 追加しました
- API: `Signaling`: 追加しました

### 2.3.2

#### CHANGE

- SDP セマンティクスのデフォルトを Unified Plan に変更しました
- API: シグナリング "notify" の "connection_id" プロパティに対応しました
- API: `SDPSemantics`: `case default` を削除しました
- API: `SignalingNotifyMessage`: `connectionId` プロパティを追加しました

#### FIX

- 接続状態によってシグナリング "notify" が無視される現象を修正しました

### 2.3.1

#### FIX

- グループ (マルチストリーム) 時、映像を無効にした状態で接続すると落ちる現象を修正しました

### 2.3.0

#### CHANGE

- システム条件を更新しました- WebRTC SFU Sora 19.04.0 以降
  - macOS 10.14.4 以降
  - Xcode 10.2
  - Swift 5
- マルチストリーム時に強制的に Plan B に設定していたのを止めました
- 未知のシグナリングメッセージを受信したら例外を発生するように変更しました
- シグナリング "notify" の次のイベントに対応しました- "spotlight.changed"
  - "network.status"

### 2.2.1

#### CHANGE

- システム条件を更新しました- WebRTC SFU Sora 18.10.0 以降
  - macOS 10.14 以降
  - iOS 10.0
  - Xcode 10.1
  - Swift 4.2.1
- シグナリング "push" に対応しました

#### FIX

- シグナリング "notify" に含まれるメタデータが解析されていない現象を修正しました

### 2.2.0

#### CHANGE

- システム条件を更新しました- iOS 12.0
  - Xcode 10.0
  - Swift 4.2
- API: `ConnectionTask`: 追加しました
- API: `Sora`: `connect(configuration:webRTCConfiguration:handler:)`: 実行中に接続の試行をキャンセル可能にしました

### 2.1.3

#### CHANGE

- システム条件を更新しました- macOS 10.13.6 以降
  - Xcode 9.4
  - Swift 4.1

#### FIX

- MediaChannel: 接続解除後、Sora にしばらく接続が残る可能性がある現象を修正しました

### 2.1.2

#### CHANGE

- WebRTC SFU Sora 18.04 以降に対応しました
- WebRTC M66 に対応しました

### 2.1.1

#### CHANGE

- システム条件を更新しました- macOS 10.13.2 以降
  - Xcode 9.3
  - Swift 4.1
  - Carthage 0.29.0 以降、または CocoaPods 1.4.0 以降
  - WebRTC SFU Sora 18.02 以降
- API: `MediaStream`: `audioVolume` プロパティを非推奨にしました
- API: `MediaStream`: `remoteAudioVolume` プロパティを追加しました

#### FIX

- API: `MediaStream`: 配信中に `videoEnabled` プロパティまたは `audioEnabled` プロパティで映像か音声を無効にすると、有効に戻しても他のクライアントに配信が再開されない現象を修正しました
- API: `WebRTCInfo`: `shortRevision`: 戻り値の文字列が 7 桁でない現象を修正しました

### 2.1.0

#### CHANGE

- 視聴のみのマルチストリームに対応しました
- 音声検出による映像の動的切替に対応しました
- API: `Role`: `.groupSub` を追加しました
- API: `Configuration`: `maxNumberOfSpeakers` プロパティを追加しました
- API: `SignalingConnectMessage`: `maxNumberOfSpeakers` プロパティを追加しました

### 2.0.4

#### CHANGE

- WebRTC M64 に対応しました

### 2.0.3

#### CHANGE

- WebRTC M63 に対応しました
- SDWebImage 4.2.2 に対応しました
- API: `WebSocketChannelHandlers`: `onDisconnectHandler` を追加しました
- API: `WebSocketChannelHandlers`: `onFailureHandler` を削除しました
- API: `SignalingChannelHandlers`: `onDisconnectHandler` を追加しました
- API: `SignalingChannelHandlers`: `onFailureHandler` を削除しました
- API: `SoraError`: WebSocket に関するエラーを次の二つに分割しました- `webSocketClosed(statusCode:reason:)`
  - `webSocketError()`
- API: `PeerChannelHandlers`: `onDisconnectHandler` を追加しました
- API: `PeerChannelHandlers`: `onFailureHandler` を削除しました
- API: `MediaChannelHandlers`: `onFailureHandler` を削除しました

#### FIX

- API: `MediaChannel`: `PeerChannel` の接続解除時に `MediaChannel` の状態が接続解除にならない現象を修正しました

### 2.0.2

#### CHANGE

- connect シグナリングメッセージに Offer SDP を含めるようにしました
- API: MediaStreamAudioVolume: 追加しました
- API: MediaStream: audioVolume プロパティを追加しました

#### FIX

- API: MediaStream: videoEnabled: 映像をオフにしても VideoView に反映されない現象を修正しました
- API: MediaStream: audioEnabled: 音声の可否がサブスクライバーに反映されない現象を修正しました

### 2.0.1

#### CHANGE

- Xcode 9.1 に対応しました
- API: MediaStream: 接続中に映像と音声の送受信を停止・再開するプロパティを追加しました
- API: MediaStreamHandlers: 追加しました

### 2.0.0

設計と API を大きく見直しました。

#### CHANGE

- WebRTC M62 に対応しました
- アーキテクチャ armv7 に対応しました
- iOS 11 に対応しました
- Xcode 9 に対応しました
- Swift 4 に対応しました
- 依存するフレームワークから Unbox.framework を削除しました
- WebRTC のネイティブ API (主にクラスやプロトコル名の接頭辞が `RTC` の API) を非公開にしました
- クライアントの設定を `Configuration` にまとめました
- ロールについて、 "パブリッシャー (Publisher)" と "サブスクライバー (Subscriber)" に加えて、マルチストリームで通信を行う "グループ (Group)" を追加しました。
- 通信を行うオブジェクト (WebSocket 接続、シグナリング接続、ピア接続、メディアストリーム) をプロトコルに変更しました (デフォルトの実装は `private`)
- 内部で使用する WebSocket の API (SRWebSocket.framework の API) を非公開にしました
- 任意の映像キャプチャーの使用を可能にしました
- `CMSampleBuffer` を映像フレームとして使用可能にしました
- 映像フレームの編集を可能にしました

#### CHANGE (API)

- 次のクラス、構造体、列挙体、プロトコルを削除しました- `Attendee`: 同等の機能を `MediaChannel` に実装しました
  - `BuildInfo`: 同等の機能を `WebRTCInfo` に実装しました
  - `Connection`: パブリッシャーとサブスクライバーをそれぞれ独立させたため削除しました
  - `ConnectionController`: 同等の機能を削除しました- `ConnectionController.Request`
    - `ConnectionController.Role`
    - `ConnectionController.StreamType`
  - `ConnectionError`: 同等の機能を `SoraError` に実装しました
  - `Event`: 各イベントをイベントハンドラのみで扱うようにしました- `Event.EventType`
    - `EventLog`: ロギング機能を削除しました
  - `MediaConnection`: 同等の機能を `MediaChannel` に実装しました
  - `MediaPublisher`: パブリッシャーを `MediaChannel` で扱うようにしたため削除しました
  - `MediaSubscriber`: サブスクライバーを `MediaChannel` で扱うようにしたため削除しました
  - `MediaOption`: 同等の機能を `Configuration` に実装しました
  - `Message`: 同等の機能を `SignalingMessage` に実装しました- `Message.MessageType`
    - `Messagable`
  - `PeerConnection`: 同等の機能を `PeerChannel` に定義しました
  - `PeerConnectionEventHandlers`: 同等の機能を `PeerChannelHandlers` に実装しました
  - `SignalingEventHandlers`: 同等の機能を `SignalingChannelHandlers` に実装しました
  - `SignalingNotify`: 同等の機能を `SignalingNotifyMessage` に実装しました
  - `SignalingSnapshot`: 同等の機能を `SignalingSnapshotMessage` に実装しました
  - `VideoFrameHandle`: 同等の機能を `VideoFrame` に実装しました
  - `WebSocketEventHandlers`: 同等の機能を `WebSocketChannelHandlers` に実装しました
- 次のクラスを追加しました- `CameraVideoCapturer`
  - `CameraVideoCapturer.Settings`
  - `ICECandidate`
  - `ICEServerInfo`
  - `MediaChannel`
  - `MediaChannelHandlers`
  - `PeerChannelHandlers`
  - `SignalingChannelHandlers`
  - `Sora`
  - `SoraHandlers`
  - `VideoCapturerHandlers`
  - `WebSocketChannelHandlers`
- 次の構造体を追加しました- `Configuration`
  - `MediaConstraints`
  - `SignalingConnectMessage`
  - `SignalingNotifyMessage`
  - `SignalingOfferMessage`
  - `SignalingOfferMessage.Configuration`
  - `SignalingPongMessage`
  - `SignalingSnapshotMessage`
  - `SignalingUpdateOfferMessage`
  - `Snapshot`
  - `WebRTCConfiuration`
  - `WebRTCInfo`
- 次の列挙体を追加しました- `ConnectionState`
  - `ICETransportPolicy`
  - `LogLevel`
  - `NotificationEvent`
  - `SignalingNotificationEventType`
  - `SignalingMessage`
  - `SignalingRole`
  - `SoraError`
  - `TLSSecurityPolicy`
  - `VideoCapturerDecive`
  - `VideoFrame`
  - `WebSocketMessage`
  - `WebSocketMessageStatusCode`
- 次のプロトコルを追加しました- `MediaStream`
  - `PeerChannel`
  - `SignalingChannel`
  - `VideoCapturer`
  - `ViderFilter`
  - `WebSocketChannel`
- `Notification` の使用を中止し、次の関連する構造体と列挙体を削除しました- `Connection.NotificationKey`
  - `Connection.NotificationKey.UserInfo`
  - `MediaConnection.NotificationKey`
  - `MediaConnection.NotificationKey.UserInfo`
  - `MediaStream.NotificationKey`
  - `MediaStream.NotificationKey.UserInfo`
- `AudioCodec` について以下を変更しました- `.Opus` を `.opus` に変更しました
  - `.PCMU` を `.pcmu` に変更しました
- `MediaStream` について以下を変更しました- クラスからプロトコルに変更し、 API を一新しました
- `Role` について以下を変更しました- `.group` を追加しました
- `VideoCodec` について以下を変更しました- `.VP8` を `.vp8` に変更しました
  - `.VP9` を `.vp9` に変更しました
  - `.H264` を `.h264` に変更しました
- `VideoFrame` について以下を変更しました- プロトコルから列挙体に変更し、 API を一新しました
- `VideoRenderer` について以下を変更しました- `onChangedSize(_:)` を `onChange(size:)` に変更しました
  - `renderVideoFrame(_:)` を `render(videoFrame:)` に変更しました

## 1.x

### 1.2.5

#### FIX

- CircleCI でのビルドエラーを修正しました

### 1.2.4

#### CHANGE

- armv7 に対応しました
- API: MediaOption を struct に変更しました
- API: ConnectionController: ロールとストリーム種別の選択制限を削除しました

#### FIX

- API: マルチストリーム時、配信者のストリームが二重に生成されてしまう現象を修正しました

### 1.2.3

**日付**: 2017-8-29
**対応 Sora**: 17.06

#### CHANGE

- API: VideoView: `contentMode` に応じて映像のサイズを変更するようにしました

#### FIX

- API: 残っていたデバッグプリントを削除しました

### 1.2.2

**日付**: 2017-8-16
**対応 Sora**: 17.06

#### CHANGE

- API: 一部の静的変数を定数に変更しました

#### FIX

- API: VideoView: メモリー解放時に Key-Value Observing に関する例外が発生する現象を修正しました
- API: VideoView: メモリー解放時にクラッシュする現象を修正しました

### 1.2.1

**日付**: 2017-8-3
**対応 Sora**: 17.06

#### FIX

- API: ConnectionController: 指定した映像・音声コーデックが UI とシグナリングに反映さ>れない現象を修正しました

### 1.2.0

**日付**: 2017-8-2
**対応 Sora**: 17.06

#### CHANGE

- WebRTC M60 に対応しました
- Bitcode に対応しました
- スナップショットに対応しました
- リンクするフレームワークに SDWebImage.framework を追加しました
- API: Event.EventType: 次のケースを追加しました- `case Snapshot`
- API: MediaOption: 次のプロパティを追加しました- `var snapshotEnabled`
- API: SignalingEventHandlers: 次のメソッドを追加しました- `func onSnapshot(handler: (SignalingSnapshot) -> Void)`
- API: SignalingSnapshot: 追加しました
- API: Snapshot: 追加しました
- API: VideoFrame について以下を変更しました- `var width`: `Int32` -> `Int`
  - `var height`: `Int32` -> `Int`
  - `var timestamp`: `CMTime` -> `CMTime?`
- API: VideoFrameHandle: 次のプロパティ名を変更しました- `case webRTC` -> `case WebRTC`
- API: VideoFrameHandle: 次のプロパティを追加しました- `case snapshot`
- API: VideoView: スナップショットの描画に対応しました
- API: ConnectionController: スナップショットの項目を追加しました

### 1.1.0

**日付**: 2017-7-7
**対応 Sora**: 17.06

#### CHANGE

- CircleCI を利用した自動ビルドを追加しました
- examples を削除しました
- WebRTC M59 に対応しました
- ディレクトリ構造を変更し、プロジェクトのファイルをトップレベルに移動しました
- シグナリング "notify" に対応しました
- イベントログに接続エラーの詳細を出力するようにしました
- 次の不要なファイルを削除しました- `JSON.swift`
- API: Attendee: 追加しました
- API: BuildInfo: 次のプロパティを削除しました- `var VP9Enabled`
- API: Connection: 次のプロパティとメソッドを削除しました- `var numberOfConnections`
  - `func onChangeNumberOfConnections(handler:)`
- API: ConnectionError: `var description` を追加しました
- API: ConnectionController: ビットレートの設定項目を追加しました
- API: ConnectionController: イベントログの画面を追加しました
- API: ConnectionController: Cancel ボタンを Back ボタンに変更しました
- API: Event.EventType: `ConnectionMonitor` を追加しました
- API: MediaConnection: 次のプロパティとメソッドを追加しました- `var numberOfConnections`
  - `func onAttendeeAdded(handler:)`
  - `func onAttendeeRemoved(handler:)`
  - `func onChangeNumberOfConnections(handler:)`
- API: MediaStreamRole: 削除しました
- API: Role: 追加しました
- API: PeerConnection: 接続状態に関わらず WebSocket のイベントハンドラを実行するようにしました
- API: SignalingEventHandlers: `func onNotify(handler:)` を追加しました
- API: SignalingEventType: 追加しました
- API: SignalingNotify: 追加しました
- API: SignalingRole: 追加しました
- API: VideoFrame について以下を変更しました- `var width`: `Int` -> `Int32`
  - `var height`: `Int` -> `Int32`
- API: ConnectionController: リファクタリングを行いました
- API: ConnectionController: VP9 の有効・無効を示すセルを削除しました

#### FIX

- Sora の URL のプロトコルが ws または wss 以外であればエラーにするよう変更しました
- 接続解除可能な状況でも `connectionBusy` のエラーが発生する現象を修正しました
- 接続解除後も内部で接続状態の監視を続ける現象を修正しました
- API: ConnectionController: 接続画面外で接続が解除されても接続画面では接続状態である現象を修正しました
- API: VideoView のサイズの変化に動画のサイズが追従しない現象を修正しました

### 1.0.1

**日付**: 2017-06-05
**対応 Sora**: 17.04

- [CHANGE] システム条件を更新しました- Xcode 8.1 以降 -> 8.3.2 以降
  - Swift 3.0.1 -> 3.1
- [UPDATE] SoraApp の Cartfile で利用する shiguredo/sora-ios-sdk を 1.0.1 にアップデートしました

### 1.0.0

**日付**: 2017-04-10
**対応 Sora**: 17.02

- [CHANGE] WebRTC M57 に対応しました
- [CHANGE] 対応アーキテクチャを arm64 のみにしました
- [CHANGE] マルチストリームに対応しました
- [CHANGE] シグナリング: "notify" に対応しました
- [CHANGE] シグナリング: Sora の仕様変更に伴い、 "stats" への対応を廃止しました
- [CHANGE] シグナリング: Sora の仕様変更に伴い、 "connect" の "access_token" パラメーターを "metadata" に変更しました
- [CHANGE] API: ArchiveFinished: 削除しました
- [CHANGE] API: ArchiveFailed: 削除しました
- [CHANGE] API: MediaConnection: MediaStream を複数保持するようにしました
- [CHANGE] API: MediaConnection: `multistreamEnabled` プロパティを追加しました
- [CHANGE] API: MediaConnection: 次の変数の型を変更しました- `webSocketEventHandlers`: `WebSocketEventHandlers?` --> `WebSocketEventHandlers`
  - `signalingEventHandlers`: `SignalingEventHandlers?` --> `SignalingEventHandlers`
  - `peerConnectionEventHandlers`: `PeerConnectionEventHandlers?` --> `PeerConnectionEventHandlers`
- [CHANGE] API: MediaConnection: `connect(accessToken:timeout:handler:)` メソッドの型を `connect(metadata:timeout:handler:)` に変更しました
- [CHANGE] API: MediaConnection, MediaStream: 次の API を MediaStream に移行しました- `var videoRenderer`
  - `func startConnectionTimer(timeInterval:handler:)`
- [CHANGE] API: MediaConnection.State: 削除しました
- [CHANGE] API: MediaOption.AudioCodec: `unspecified` を `default` に変更しました
- [CHANGE] API: MediaOption.VideoCodec: `unspecified` を `default` に変更しました
- [CHANGE] API: MediaPublisher: `autofocusEnabled` プロパティを追加しました
- [CHANGE] API: MediaStream: RTCPeerConnection のラッパーではなく、 RTCMediaStream のラッパーに変更しました
- [CHANGE] API: MediaStream: `startConnectionTimer(timeInterval:handler:)`: タイマーを起動した瞬間もハンドラーを実行するようにしました
- [CHANGE] API: MediaStream.State: 削除しました
- [CHANGE] API: PeerConnection: RTCPeerConnection のラッパーとして追加しました
- [CHANGE] API: SignalingConnected: 削除しました
- [CHANGE] API: SignalingCompleted: 削除しました
- [CHANGE] API: SignalingDisconnected: 削除しました
- [CHANGE] API: SignalingFailed: 削除しました
- [CHANGE] API: StatisticsReport: RTCStatsReport の変更 (名前が RTCLegacyStatsReport に変更された) に伴い削除しました
- [CHANGE] API: VideoView: 映像のアスペクト比を保持するようにしました
- [UPDATE] API: MediaCapturer: 同一の RTCPeerConnectionFactory で再利用するようにしました
- [UPDATE] API: MediaCapturer: 映像トラック名と音声トラック名を自動生成するようにしました
- [UPDATE] API: VideoRenderer: 描画処理をメインスレッドで実行するようにしました
- [UPDATE] API: VideoView: UI の設計に Nib ファイルを利用するようにしました
- [UPDATE] API: VideoView: バックグラウンド (ビューがキーウィンドウに表示されていない) では描画処理を中止するようにしました
- [ADD] API: BuildInfo: 追加しました
- [ADD] API: ConnectionController: 追加しました
- [ADD] API: Connection: 次の API を追加しました- `var numberOfConnections`
  - `func onChangeNumberOfConnections(handler:)`
- [ADD] API: Connection, MediaConnection, MediaStream, PeerConnection: 次のイベントで (NotificationCenter による) 通知を行うようにしました- onConnect
  - onDisconnect
  - onFailure
- [ADD] API: WebSocketEventHandlers, SignalingEventHandlers, PeerConnectionEventHandlers: イニシャライザーを追加しました
- [FIX] シグナリング: 音声コーデック Opus を指定するためのパラメーターの間違いを修正しました
- [FIX] 接続解除後にイベントログを記録しようとして落ちる現象を修正しました
- [FIX] 接続失敗時にデバイスを初期化しようとして落ちる現象を修正しました (接続成功時のみ初期化するようにしました)
- [FIX] 接続試行中にエラーが発生して失敗したにも関わらず、成功と判断されてしまう場合がある現象を修正しました
- [FIX] API: MediaConnection: 接続解除後もタイマーが実行されてしまう場合がある現象を修正しました (タイマーに関する API は MediaStream に移動しました)
- [FIX] API: PeerConnection: 接続失敗時でもタイムアウト時のイベントハンドラが呼ばれる現象を修正しました

## 0.x

### 0.1.0

**日付**: 2016-12-28
**対応 Sora**: 3.4
