web-dev-qa-db-ja.com

iPv6との互換性が必要-iOSアプリはapple

enter image description here

6月1日以降、ionicアプリをiTunes Connectに送信し、Appleからメッセージを受け取りました。

アプリはIPv6ネットワークでレビューされます。 アプリがIPv6ネットワークをサポートしていることを確認してくださいIPv6互換性が必要です。

IPv6ネットワークのサポートについては、iPv6 DNS64/NAT64ネットワークのサポートを参照してください。

ネットワークの概要については、ネットワークについてを参照してください。

API呼び出しにAFNetworkingを使用しました。

同じための解決策を見つけるのを助けてください。

ありがとう。

31

実際、AFNetworking Libraryを使用してAPIを呼び出しています。

GithubのAFNetworkReachabilityManagerクラスを既存のクラスに置き換えるだけです。そしてAppleはもう問題はありません。

そして、私のアプリは現在動作しています。

IPv4固有のAPIまたはハードコードされたIPアドレスを使用している場合は、コードを更新する必要がありますが、NSURLSessionおよびCFNetwork API(NSURLConnectionを含む)はすべてIPV6

Appleが述べたように:

WWDC 2015で、iOS 9でのIPv6のみのネットワークサービスへの移行を発表しました。2016年6月1日から、App Storeに提出するすべてのアプリはIPv6のみのネットワークをサポートする必要があります。 NSURLSessionおよびCFNetwork APIでIPv6が既にサポートされているため、ほとんどのアプリは変更を必要としません。

アプリでIPv4固有のAPIまたはハードコードされたIPアドレスを使用している場合、いくつかの変更を行う必要があります。

でも。 Appleまた、IPアドレスリテラルを長期間使用しないことをお勧めします(不要)

IPアドレスリテラルを使用しない

GetaddrinfoやSCNetworkReachabilityCreateWithNameなどのAPIにドット表記のIPv4アドレスリテラルを渡さないようにしてください。代わりに、高レベルのネットワークフレームワークとgetaddrinfoやgetnameinfoなどのAPIのアドレスに依存しないバージョンを使用し、それらにホスト名または完全修飾ドメイン名(FQDN)を渡します。 getaddrinfo(3)Mac OS X開発者ツールマニュアルページおよびgetnameinfo(3)Mac OS X開発者ツールマニュアルページを参照してください。

注:iOS 9およびOS X 10.11以降では、NSURLSessionおよびCFNetworkは、DNS64/NAT64ネットワークで動作するデバイス上でローカルにIPv4リテラルからIPv6アドレスを自動的に合成します。ただし、IPアドレスリテラルのコードを取り除く作業は引き続き行う必要があります。

AFNetworking Libraryを使用している場合は、3.xより上のバージョンに更新してください。更新されたものはほとんどないようです。-> AFNetworking ReachabilityにIPv6のサポートが追加されました。

詳細情報については、このリンクに従ってください

IPv6-onlyネットワークのサポート

また、テストする

この詳細なチュートリアルに従うことができます。

tutorial-how-to-test-your-app-for-ipv6-compatibility

20
gunjot singh

Apple IPv6ネットワークによるアプリの拒否)の解決策

IPv6のインターネット到達可能性チェックはうまく機能していません。常にネットワークがないことを示しています。このコードを使用すると、Appleは24時間以内にアプリを承認しました。THANKS

AFNetworkingのコードの次の行を変更します-クラスのライブラリAFNetworkReachabilityManager

AF_INETをAF_INET6に変更;

+ (instancetype)sharedManager {
    static AFNetworkReachabilityManager *_sharedManager = nil;
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        struct sockaddr_in address;
        bzero(&address, sizeof(address));
        address.sin_len = sizeof(address);
        address.sin_family = AF_INET6;  //Change AF_INET TO AF_INET6
        _sharedManager = [self managerForAddress:&address];
    });

    return _sharedManager;
}

編集:

$ grep -nr 'AF_INET*' .
./Pods/AFNetworking/AFNetworking/AFNetworkReachabilityManager.m:122:        address.sin_family = AF_INET;

replace

AF_INET; to AF_INET6;
13

IPv6ネットワークではURLにドット表記を使用できないため、API URLからドット表記を削除してください。 API URLとその作業から削除しました。

0
Parth