Poppin Games Engineer Blog

ポッピンゲームズジャパン株式会社のエンジニアのブログ。弊社製品やcocos2d-x、AWSに関する情報を中心に発信しております。

iOS9時代の通信とApp Transport Securityとcocos2d-x

WWDC2015で発表されたiOS9ですが、パブリックベータ版の配布も今月中にはじまるようです。

iOS9には様々な新機能・改善が含まれており、その中にはセキュリティとプライバシーに関するものも含まれています。

ちかごろgoogleMozillahttpsへの移行を強く推進していますが、AppleiOSにおける通信のセキュリティにかなり強力な機能 "App Transport Security(ATS)" を盛り込んできました。

www.itmedia.co.jp

www.itmedia.co.jp

ATSは、予期せぬhttp通信を防いでくれる機能になっています。ATSはhttpの通信を失敗させたりhttpsに切り替えたりするようですが、ただ、開発中のアプリなんかだと、ローカルのサーバにつなぎたいんだよ〜という場合もあるわけです。

Appleの公式ドキュメントはこのあたりですが、Technoteの方をみると、Info.plistに設定を書くことでATSの動作を抑制できる…と書いてあります。

developer.apple.com

developer.apple.com

具体的にはこんな感じで書いておくと、httpの通信も許されるそうです。

他にも細かく例外設定が提供されているので、開発期間や暗号化通信への切り替えの過渡期に利用できるかとおもいます。

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

cocos2d-xは通信用APIとして cocos2d::network::HttpClient を提供していますが、これはiOSでは NSURLConnection を使う実装になっており、上記のATSの影響を受けます。Xcode7 / iOS9 でゲーム開発中に「なんか通信できないな〜?」となった方はチェックしてみてください。