IPv6のみのネットワーク

2016年6月1日以降、App Storeに提出されるアプリは、すべてIPv6のみのネットワーク接続に対応している必要があります。NSURLSessionおよびCFNetworkのAPIはすでにIPv6に対応しているため、多くのアプリでは変更の必要はありません。ただし、IPv4専用のAPIやハードコーディングされたIPアドレスを利用するアプリでは変更が必要になります。アプリを審査のためにApp Storeに提出する前に、IPv6との互換性があるかどうかを必ずテストするようにしてください。

IPv6ネットワークに対応する方法の詳細については、「Supporting IPv6 DNS64/NAT64 Networks(英語)」を参照してください。

IPv6のみの環境でのアプリテスト

必ずIPv6のみのネットワークでアプリをテストするようにしてください。IPv6のみのネットワークがお手元にない場合、「Test for IPv6 DNS64/NAT64 Compatibility Regularly(英語)」に記載された手順でテストネットワークを設定できます。

重要:WWANに対応したデバイスでテストする場合は、テストを実行する前にWWANをオフにしてください。これで確実にIPv6のみのWi-Fiがデバイスで使用されるようになります。

注:WWANは「設定」>「モバイル通信」>「モバイルデータ通信」でオフにできます(北米以外の英語ローカライズ版では、「Setting」>「Mobile」>「Mobile Data」)。

IPv4のリファレンス

IPv6のみの環境で正しく動作する限り、IPv4のみの構成に対するリファレンスをアプリからすべて削除する必要はありません。

重要:IPv4とIPv6に対してコードを別個に用意するよりも、アドレスファミリーを許容するAPIを採用することをお勧めします。

サーバのアップデート

外部インターネットで運用されているサーバであれば、ただちにアップデートする必要はありません。サーバからDNS64/NAT64を経由してIPv6のみを使用したデバイスにアクセスできます。

注:いずれかのタイミングでサーバをアップデートし、IPv6に対応させる必要があります。

iOSアプリにサーバを組み込んでいる場合(アプリとの間でファイルを送受信するWebサーバなど)は、そのサーバがIPv6のみの環境でも正しく動作することを確認してください。

IPv4アドレスからの合成

Use System APIs to Synthesize IPv6 Addresses(System APIを使用してIPv6アドレスを合成する)(英語)」に記載されている通り、iOS 9.2およびOS X v10.11.2から、getaddrinfoを使用してIPv4アドレスからIPv6アドレスを合成できるようになりました。アプリのテストは、リリースされている最新バージョンのiOSを搭載したデバイスで行われます。

警告:自分でIPv6アドレスを合成することは簡単ではありません。特に、IPv4アドレスにWell-Known Prefix (64:ff9b::/96) を組み合わせてIPv6アドレスを合成することは安全ではありません。この方法は一部のNAT64ネットワークで機能する場合もありますが、一般的な解決策ではありません。

IPv4ネットワークベースのアクセサリ

IPv6のみのネットワークで動作するようアクセサリを修正することを強くお勧めします。アクセサリをIPv6に対応させるか、IPv4のリンクローカルアドレスに対応させるという方法があります。双方のデバイスがIPv6のみのネットワーク上に存在すれば、いずれの方法でもアプリがアクセサリと通信できるようになります。

以上のいずれの方法にもアクセサリが対応しておらず、アクセサリを修正して対応させることもできない場合、そのアクセサリはIPv6への対応条件を根本的に満たしていないことになります。

注:以上の内容は、ローカルネットワークにおけるアプリとアクセサリの間の通信でのみ当てはまります。アプリのその他の要素については、IPv6のみの環境で動作することが求められます。