iOS 9で導入されたアプリのHTTPS通信を推奨するApp Transport Security(ATS)。これまでは設定ファイルによってグローバルまたは個別にドメインを除外してHTTP通信することも可能でしたが、2016年の終わりからこれが基本的に許されなくなることが分かりました(What's New in Security、AppleInsider、TechCrunch日本版)。
例外指定が基本できなくなる?
ATS必須化が始まると、アプリは基本的にHTTPを使った通信が不可能となります。以下の設定によってこれを回避することもできますが、例外指定には妥当な正当性が必要とのこと。
- NSAllowsArbitraryLoads
- NSExceptionAllowsInsecureHTTPLoads
- NSExceptionMinimumTLSVersion
例として外部で運営されているサーバーに接続する場合があげられています。
WKWebViewでは回避策も
また新たな例外としてAVFoundationを利用したストリーミングメディアや、WKWebViewを使用した場合はiOS 10以降でNSAllowsArbitraryLoadsInWebContentを指定することもできるようです。すなわちWKWebView使用しているWebブラウザ系アプリならばこの指定を行うことで従来通りHTTP通信が行えるのだと思われます。
例外がどのくらい許されるのか不明ですが、NSURLSession/NSURLConnectionやUIWebViewを使ったアプリを作成している開発者の方は今から準備を進めたほうがよさそうです。
参考情報
https://wayohoo.com/ios/news/ios-is-fully-introduced-the-ats.html
http://hitoriblog.com/?p=41624
http://nlogic.jp/?p=479
https://developer.apple.com/library/prerelease/content/releasenotes/General/WhatsNewIniOS/Articles/iOS10.html
The new NSAllowsArbitraryLoadsInWebContent key for your Info.plist file gives you a convenient way to allow arbitrary web page loads to work while retaining ATS protections for the rest of your app.