Unity3D
ATS
iOS9

UnityでiOS9ATS対策(HTTP通信が使えない件の応急処置)

More than 3 years have passed since last update.


iOS9ではセキュリティ強化のためHTTP禁止

これまで作ったアプリがiOS9で正常に動かない。どうやら通信周りがうまくいかないようだ。

調べるとiOS9ではHTTPはセキュリティの都合でplistで明示的に許可を取らないと使えないらしい。


標準的なiOSアプリ開発での対策

基本的にHTTPS通信を使えとのこと。

しかしplistでブラックリスト、ホワイトリストを設定し許可したドメインのみでHTTP通信もできるようだ。

これに関しては今回は割愛。

今回紹介する応急処置は、推奨はされないのだろうけど

<key>NSAppTransportSecurity</key>

<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>

をplistに記述しこれまで通り全面的にHTTP通信を許可する方法だ。


Unityでは何が不都合か

UnityでビルドされたiOSプロジェクトのplistを手動で書き換えるのはスマートではない。

ビルド毎にplistを編集するのはしんどいし、リリースビルド時などに間違えがあれば最悪だ。

(その上、Unityクラウドビルドに対応できない。)

かといってPostProcessBuildPlayerスクリプトを書くのは面倒だ。


良質なアセット見つけた

BuildBuddy

[https://www.assetstore.unity3d.com/jp/#!/content/20041]

というアセットを見つけた。

これがあればplist(Androidアプリ開発でもmanifestファイル)を編集できる。

これはiOSやAndroidをビルドすると自動的に変更が適応される。

iOS9でHTTPを全面的に許可するにはこのように設定すれば良い。

Title.unity - Cazasdeel - iPhone, iPod Touch and iPad 2015-09-24 03-36-38.jpg

あとは普通にiOSビルドすればplistに反映される。