iOS9時代の通信とApp Transport Securityとcocos2d-x
WWDC2015で発表されたiOS9ですが、パブリックベータ版の配布も今月中にはじまるようです。
iOS9には様々な新機能・改善が含まれており、その中にはセキュリティとプライバシーに関するものも含まれています。
ちかごろgoogleやMozillaはhttpsへの移行を強く推進していますが、AppleもiOSにおける通信のセキュリティにかなり強力な機能 "App Transport Security(ATS)" を盛り込んできました。
ATSは、予期せぬhttp通信を防いでくれる機能になっています。ATSはhttpの通信を失敗させたりhttpsに切り替えたりするようですが、ただ、開発中のアプリなんかだと、ローカルのサーバにつなぎたいんだよ〜という場合もあるわけです。
Appleの公式ドキュメントはこのあたりですが、Technoteの方をみると、Info.plistに設定を書くことでATSの動作を抑制できる…と書いてあります。
具体的にはこんな感じで書いておくと、httpの通信も許されるそうです。
他にも細かく例外設定が提供されているので、開発期間や暗号化通信への切り替えの過渡期に利用できるかとおもいます。
<key>NSAppTransportSecurity</key> <dict> <key>NSAllowsArbitraryLoads</key> <true/> </dict>
cocos2d-xは通信用APIとして cocos2d::network::HttpClient
を提供していますが、これはiOSでは NSURLConnection
を使う実装になっており、上記のATSの影響を受けます。Xcode7 / iOS9 でゲーム開発中に「なんか通信できないな〜?」となった方はチェックしてみてください。