2016-10-20 6 views
2

アプリのレビュープロセスを通じてアプリを送信し、ipv6の完全性の問題により拒否されました。私たちのアプリはAFNetworking 3.1.0を使用していますので問題ありません。 APIはIPV6と互換性がありません。このレビューでは、再現できないクラッシュが戻ってきています。AFNetworkingとIPV6はiOSで拒否されます

私の最初の質問は、 です。1.)週末には何かが必要です。 AFNetworkingを通じてバックエンドでipv6を実際にサポートすることなくビルドを作成できますか?

2.)最新のAFNetworking以外に、AFNetworkingで必要なことはありますか?私たちがipv6をサポートしていることを確認するコード変更はありますか?

+0

iOSデバイス上で実行されているアプリケーションは、サーバーではなくIPv6専用ネットワークで実行する必要があります。 Appleには、IPv6のみのテストネットワークを構築する方法に関する一連の手順があります。 –

+0

ホスト名を使用し、アプリケーション内のサーバーにIPv4アドレスを使用していないことを確認してください。 – Paulw11

+1

AF 3.0.0 IPv6にReachabilityへのサポートが追加されました.IPV6接続でローカルにデバッグする必要があります。 ://support.apple.com/en-in/HT202237 –

答えて

3

AFNetworkingでコードを検索してみてください:

struct sockaddr_in address; 
    bzero(&address, sizeof(address)); 
    address.sin_len = sizeof(address); 
    address.sin_family = AF_INET; 

更新コードへ:

#if (defined(__IPHONE_OS_VERSION_MIN_REQUIRED) && IPHONE_OS_VERSION_MIN_REQUIRED >= 90000) || (defined(__MAC_OS_X_VERSION_MIN_REQUIRED) && MAC_OS_X_VERSION_MIN_REQUIRED >= 101100) 
    struct sockaddr_in6 address; 
    bzero(&address, sizeof(address)); 
    address.sin6_len = sizeof(address); 
    address.sin6_family = AF_INET6; 
#else 
    struct sockaddr_in address; 
    bzero(&address, sizeof(address)); 
    address.sin_len = sizeof(address); 
    address.sin_family = AF_INET; 
#endif 

アップデートすべてのlibsそれが使用している場合:

address.sin_family = AF_INET; 
+0

お返事ありがとうございます。私はすでにレビューのためにそれを送ったときにコードでそれを持っていますが、まだ拒否されて戻って来ました。私はAFNetworkingの3.1.0を使用しているので、問題はないはずです。 –

+0

レビューチームにクラッシュログを依頼することで、実際の問題を見つけることができます。 –

+0

@John D、これで問題は解決しますか?そのコメントを見ても、それはあなたの問題を解決してくれなかったようですが、なぜそれを選択して答えますか? – samoye

0

を私のデプロイメント・ターゲットがまだありますiOS7とAFNetworking 3.1は、AFNetworkReachabilityManager.m内で受け入れられた答えと同じコードを持っています。

そこにブレークポイントを置くと、iPhone 6SでテストしてもIPv4部分に移動することがわかります。 これが、IPv6をサポートしていないというAppleの拒否の理由だと私は信じています。

AFNetworkingのコードは、IPHONE_OS_VERSION_MIN_REQUIREDを使用してデプロイメントターゲットのみを確認しますが、実際のデバイスのiOSバージョンはチェックしません。 あなたは簡単に

if (NSFoundationVersionNumber >= NSFoundationVersionNumber_iOS_9_0) { 
    struct sockaddr_in6 address; 
    bzero(&address, sizeof(address)); 
    address.sin6_len = sizeof(address); 
    address.sin6_family = AF_INET6; 

    return [self managerForAddress:&address]; 
    } 
    else { 
    struct sockaddr_in address; 
    bzero(&address, sizeof(address)); 
    address.sin_len = sizeof(address); 
    address.sin_family = AF_INET; 

    return [self managerForAddress:&address]; 
    } 

に変更することができ、それがiOS9以降でIPv6コードになります。 私はこのビルドをレビューのために送信しています。

+0

OK、どうしたの? –

+1

申し訳ありませんが、この回避策がうまく動作するように、何度もレビューを通過したと言いました。 – Skeletom

関連する問題