[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 なネットワーク環境を作る手段を提供している
  • この環境を作って実機でつなげば、IPv6-only でも問題なく動くかどうかがテストできる

参考リンク