この記事でのバージョン
Xcode 7.1
はじめに
Xcode7でビルドした所、iOS9で広告が表示されなくなってしまったので、
色々調べてみた所、ATSが原因で通信が遮断されていました。
以下の記事を参考にATSを無効にした所、表示されました。
内容はほぼ重複していますが、一応メモとして残します。
ATS(App Transport Security )
まずATSってなんぞやって所からですが。
ATS が有効の場合、HTTP での通信はできません。
また、Apple が推奨する必要条件を満たさない接続は強制的に接続失敗扱いになります。
との事で、セキュアにする為には有効だとは思いますが、
各方面が対応してくれるまでは使えなさそう……。
ちなみにATSで通信をブロックされると以下のようなメッセージが表示されます。
App Transport Security has blocked a cleartext HTTP (http://) resource load since it is insecure. Temporary exceptions can be configured via your app's Info.plist file.
ATS無効
ATSを無効にするにはInfo.plistにNSAppTransportSecurityというDictを作り、
さらにその中にNSAllowsArbitraryLoadsというDictを作成、
さらにさらにその中にAllows Arbitrary LoadsというkeyでBool値のYESを登録するだけです。
また、NSAppTransportSecurityを使う事で個別に許可を出す事も可能なようです。
XcodeProjectUpdater
Unityで開発したアプリの話になりますが、
以前作成した、Xcodeプロジェクトの自動設定を行うXcodeProjectUpdaterに
ATSの自動設定を追加しました。
おわりに
参考記事にもある通り、ATS自体を無効にするのは正攻法とは言えませんが、
未対応のURLを個別に指定していくのは現実的では無いので、
各広告が対応するまではATSはお預けですね。
無効化する項目があるので、当分はこの対処で大丈夫そうですが、
非推奨なのでそのうちATS必須とかになりそうな気がする今日この頃です。