[iOS] [C++] libcurl の IPv6 の対応漏れで Apple 申請がリジェクト
Posted: | 2016-06-14 |
Category: | iOS |
Tags: | #iOS #C++ |
現象
- Apple 申請でネットワークエラーが起きた、という理由でリジェクトされる。
- こんな感じのことを言われる:
Apps are reviewed on an IPv6 network. Please ensure that your app supports IPv6 networks, as IPv6 compatibility is required.
背景と原因
- 2016-06-01 から、Apple の審査では IPv6-only で接続できるかがチェックされる
- iOS9 では IPv6-only なネットワークでも動くようにしろ、と Apple は要求している
- 基本的に普通の通信ライブラリを使っていたら対応タスクは無いことが多いが、
例えば C++ で使われる通信ライブラリ
libcurl
をビルドする時に IPv6 サポートが有効になってなかった、 なんてことがあったりもする 使っている libcurl が IPv6 をサポートしているかは、以下のコードでチェックできる
# 0 が表示されたら libcurl が IPv6 サポートする状態になっていない curl_version_info_data *data = curl_version_info(CURLVERSION_NOW); printf("%d\n", data->features & CURL_VERSION_IPV6);
解決方法
- libcurl を IPv6 対応版に差し替える
- Apple は IPv6-only なネットワーク環境を作る手段を提供している
- (OS X 10.11 / El Capitan 以降の Mac を NAT64 の WiFi アクセスポイントにできる)
- Supporting IPv6 DNS64/NAT64 Networks
- この環境を作って実機でつなげば、IPv6-only でも問題なく動くかどうかがテストできる
参考リンク
- IPv6 化の全容や NAT64 環境の作り方については、以下の記事が詳しい