- Qiitaのこの記事 が非常に良いまとめ
- これを読めば良い
##概要
- 現行は IPv4 と IPv6 の両方に対応しているが、今後 IPv6 のみのサポートになるらしい
- そのための、サーバ/アプリ での対応内容
最近の Apple の声明によると、2016年初頭だそうです。これは今後も変わる可能性があります。それ以降は iTunes Connect で IPv6 対応が審査されます。
https://developer.apple.com/news/?id=08282015a
↓
「2016年6月から」と明記されました。 これ以降の申請時は、IPv6 対応必須です。 https://developer.apple.com/news/?id=05042016a
結論と言うと、「アプリ側で 一部の変わったこと」をやっていない限りは、サーバ側も アプリ側も、特に対応は要らない。
- サーバ側は、IPv4 のみのIFでも、問題ない
- キャリア側のゲートウェイが適切に変換する
- アプリ側も、上位レイヤの通信機構(具体的には、CFNetwork、NSURLほげほげ)を使っている分には、特に意識する必要はない
つまり、CFNetwork よりも下層、socket 系の関数を生で使っている場合は、IPv4前提の関数などを使っていることになるので、対応が必要。
困ったことに、Apple の提供している Reachability がこれを使っている。
→ 更新版のReachability で、IPv6対応がされました。
注意すべきは、以下の3つ。
- 自分で socket系関数を使っているケース(多分、稀)
Reachability もしくは その改良型である NetworkReachability を使っているケース
- 更新版の Reachability を使うようにしましょう
- サードパーティのライブラリ内で使われているケース
IPv6検証は、例のQiita記事やWWDCセッションにもあるように、El Capitanを導入してNAT64ネットワークを構築するオプションを利用するのが手っ取り早そうです。
- サーバサイドは、都合、何もしなくても良い(仮に IPv4のIFのみでも問題ない)
- クライアントサイドは、普通の作り方をしていれば、ほぼ問題ない
- 外部のライブラリを使っている場合は注意
- 特にアナリティクスや 広告や DRMなど?
- IPv6ネットワーク下でのデバッグ方法があるので、それで動作テストを行う