it-swarm.com.de

iPv6-Kompatibilität erforderlich - iOS-App von Apple abgelehnt

 enter image description here

nach dem 1. Juni reiche ich meine ionische App bei iTunes connect ein und erhielt die Nachricht von Apple.

Apps werden in einem IPv6-Netzwerk überprüft. Bitte stellen Sie sicher, dass Ihre App IPv6-Netzwerke unterstützt, als IPv6-Kompatibilitätist erforderlich.

Informationen zur Unterstützung von IPv6-Netzwerken finden Sie unter Unterstützung von iPv6-DNS64/NAT64-Netzwerken.

Eine Übersicht über das Netzwerk finden Sie unter Informationen zum Netzwerk.

Ich habe AFNetworking für den API-Aufruf verwendet.

Bitte helfen Sie, die Lösung dafür zu finden.

Vielen Dank.

31

Eigentlich rufe ich API mit AFNetworking Library auf. 

Ich habe gerade die Klassen AFNetworkReachabilityManager von Github durch meine vorhandenen Klassen ersetzt. Und Apple hat kein Problem mehr.

Und meine App funktioniert jetzt.

Wenn Sie IPv4-spezifische APIs oder hart codierte IP-Adressen verwenden, müssen Sie Ihren Code aktualisieren. Obwohl alle NSURLSession- und CFNetwork-APIs (einschließlich NSURLConnection) bereits IPV6 unterstützen.

Wie von Apple erwähnt:

Auf der WWDC 2015 haben wir die Umstellung auf IPv6-reine Netzwerkdienste angekündigt in iOS 9. Ab dem 1. Juni 2016 werden alle Apps an den App Store übermittelt muss nur IPv6-Netzwerke unterstützen. Die meisten Apps benötigen keine Änderungen, da IPv6 bereits von NSURLSession und .__ unterstützt wird. CFNetwork-APIs.

Wenn Ihre App IPv4-spezifische APIs oder hartcodierte IP-Adressen verwendet, können Sie müssen einige Änderungen vornehmen.

Obwohl. Apple empfiehlt außerdem, auf lange Sicht keine IP-Adressliterale zu verwenden (nicht erforderlich).

Verwenden Sie keine IP-Adressliterale

Stellen Sie sicher, dass Sie keine IPv4-Adressliterale in Punktnotation an .__ übergeben. APIs wie getaddrinfo und SCNetworkReachabilityCreateWithName . Verwenden Sie stattdessen High-Level-Netzwerk-Frameworks und Adress-Agnostik Versionen von APIs wie getaddrinfo und getnameinfo und übergeben sie Hostnamen oder vollqualifizierte Domänennamen (FQDNs). Siehe getaddrinfo (3) Mac OS X Developer Tools-Handbuch Seite und getnameinfo (3) Mac OS X Handbuch für Entwickler-Tools.

Hinweis: In iOS 9 und OS X 10.11 und höher sind NSURLSession und CFNetwork Synthetisierung von IPv6-Adressen aus IPv4-Literalen lokal auf Geräte, die in DNS64/NAT64-Netzwerken arbeiten. Sie sollten jedoch noch Arbeite daran, den Code von IP-Adress-Literalen zu befreien

Wenn Sie die AFNetworking Library verwenden, stellen Sie sicher, dass Sie die Version über 3.x aktualisieren, da sie anscheinend einige Änderungen vorgenommen haben. -> AFNetworking Unterstützung für IPv6 für die Erreichbarkeit wurde hinzugefügt.

Für detaillierte Informationen folgen Sie bitte diesem Link

Unterstützung nur für IPv6-Netzwerke

AUCH ZU TESTEN

Sie können diesem ausführlichen Tutorial folgen:

Tutorial-How-to-Test Ihrer App-für-IPv6-Kompatibilität

20
gunjot singh

Lösung für die Ablehnung von Apple-Apps aufgrund eines IPv6-Netzwerks

Meine Internet-Erreichbarkeitsprüfung für IPv6 funktioniert nicht gut. Es zeigt immer, dass kein Netzwerk vorhanden ist. Wenn ich diesen Code verwende, genehmigte Apple meine App innerhalb von 24 Stunden. VIELEN DANK

Ändern Sie die folgende Zeile im Code in AFNetworking Library in Class AFNetworkReachabilityManager

CHANGE AF_INET TO 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;
}

BEARBEITEN:

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

replace

AF_INET; to AF_INET6;
13

Entfernen Sie die Punktnotation von der API-URL, da das IPv6-Netzwerk keine Punktnotation in der URL zulässt. Ich habe die API-URL und ihre Arbeit für mich entfernt.

0
Parth