ATS (App Transport Security) で使用するNSAllowsArbitraryLoadsについて調べる
そもそもATSとは
iOS9から追加されたセキュアな通信を保証する機能のこと。
iOS9の時はとりあえず無効化して問題がなかったが2017/1以降はATS有効化が必須に!!
OSで自動的に安全なhttpsの通信のみを許可して、それ以外をシャットダウンする。
なので、アプリ側は通信を全てhttpsにするか例外をinfo.plistに追加しないといけない。
NSAllowsArbitraryLoadsとは
デフォルトはNO
YESにするとATSを無効化
「NSExceptionDomains」を設定すると制御の対象外となるドメインを設定できる。
iOS10で増えたサブキーについて
iOS10からは下記のサブキーを設定することにより、以下のキーが優先される。(例えばNSAllowsArbitraryLoadsInWebContentを設定した場合はiOS10ではweb関連だけATSが無効化される)
NSAllowsArbitraryLoads
- NSAllowsArbitraryLoadsInMedia
- AVFoundationからAPIを使用してロードされたメディアに関する全てのATSを無効化
- NSAllowsArbitraryLoadsInWebContent
- KWebView、UIWebViewのATSを無効化 webviewを使う場合はとりあえずこれを設定すればok
これらを設定すればiOS9では全体でATSを無効化し、iOS10ではそれぞれのサブキーで設定したもののみ無効化する。