読者です 読者をやめる 読者になる 読者になる

(:3[kanのメモ帳]

個人ゲーム開発者kan.kikuchiのメモ的技術ブログ。月木更新でUnity関連がメイン。

Xcode7 + iOS9 だと ATSが原因で広告が出なかった話【iOS】【トラブルシューティング】


このエントリーをはてなブックマークに追加

この記事でのバージョン
Xcode 7.1

はじめに

Xcode7でビルドした所、iOS9で広告が表示されなくなってしまったので、

色々調べてみた所、ATSが原因で通信が遮断されていました。


以下の記事を参考にATSを無効にした所、表示されました。


http://nijoen.net/blog/316/


内容はほぼ重複していますが、一応メモとして残します。


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を登録するだけです。


f:id:kan_kikuchi:20151026134453p:plain


また、NSAppTransportSecurityを使う事で個別に許可を出す事も可能なようです。


XcodeProjectUpdater

Unityで開発したアプリの話になりますが、

以前作成した、Xcodeプロジェクトの自動設定を行うXcodeProjectUpdater

ATSの自動設定を追加しました。





おわりに

参考記事にもある通り、ATS自体を無効にするのは正攻法とは言えませんが、

未対応のURLを個別に指定していくのは現実的では無いので、

各広告が対応するまではATSはお預けですね。


無効化する項目があるので、当分はこの対処で大丈夫そうですが、

非推奨なのでそのうちATS必須とかになりそうな気がする今日この頃です。