web-dev-qa-db-fra.com

compatibilité iPv6 requise - Une application iOS rejetée par Apple

 enter image description here

après le 1er juin, je soumets mon application ionic à iTunes Connect et le message d’Apple me parvient.

Les applications sont examinées sur un réseau IPv6. Assurez-vous que votre application prend en charge les réseaux IPv6}, comme compatibilité IPv6 _ {est requis.}

Pour plus d'informations sur la prise en charge des réseaux IPv6, reportez-vous à la section Prise en charge des réseaux iPv6 DNS64/NAT64.

Pour un aperçu de la mise en réseau, veuillez consulter À propos de la mise en réseau.

J'ai utilisé AFNetworking pour l'appel API.

S'il vous plaît aider à trouver la solution pour la même chose.

Merci.

31

En fait, j'appelle l'API en utilisant AFNetworking Library. 

Je viens de remplacer le AFNetworkReachabilityManager classes de Github par mes classes existantes. Et Apple n'a plus de problème.

Et mon application fonctionne maintenant.

7

Si vous utilisez des API spécifiques à IPv4 ou des adresses IP codées en dur, vous devrez mettre à jour votre code. Bien que toutes les API NSURLSession et CFNetwork (y compris NSURLConnection) prennent déjà en charge IPV6

Comme mentionné par Apple:

Lors de la WWDC 2015, nous avons annoncé la transition vers les services réseau exclusivement IPv6 sous iOS 9. À compter du 1er juin 2016, toutes les applications soumises à l'App Store doit prendre en charge la mise en réseau IPv6 uniquement. La plupart des applications ne nécessiteront aucun changements car IPv6 est déjà pris en charge par NSURLSession et API de CFNetwork.

Si votre application utilise des API spécifiques à IPv4 ou des adresses IP codées en dur, vous devra faire quelques changements.

Bien que. Apple recommande également de ne pas utiliser les littéraux d'adresse IP, à long terme (non nécessaire).

Ne pas utiliser les littéraux d'adresse IP

Assurez-vous de ne pas transmettre les littéraux d’adresse IPv4 en notation point à API telles que getaddrinfo et SCNetworkReachabilityCreateWithName . Au lieu de cela, utilisez des infrastructures réseau de haut niveau et des adresses non agnostiques versions d’API, telles que getaddrinfo et getnameinfo, et transmettez-les noms d’hôte ou noms de domaine complets (FQDN). Voir getaddrinfo (3) Mac OS X Manuel des outils de développement Page et getnameinfo (3) Mac OS X Manuel du développeur - Outils.

Remarque: dans iOS 9 et OS X 10.11 et versions ultérieures, NSURLSession et CFNetwork synthétiser automatiquement les adresses IPv6 à partir de littéraux IPv4 localement sur appareils fonctionnant sur des réseaux DNS64/NAT64. Cependant, vous devriez toujours travaillez pour débarrasser votre code des littéraux d'adresse IP

Si vous utilisez AFNetworking Library, assurez-vous de la mettre à jour vers la version supérieure à 3.x, car ils semblent avoir mis à jour quelques-unes des choses. -> AFNetworking Ajout du support pour IPv6 dans Accessibilité.

Pour des informations détaillées, suivez ce lien

Prise en charge des réseaux exclusivement IPv6

AUSSI, TESTER

Vous pouvez suivre ce tutoriel détaillé:

tutorial-comment-tester-votre-application-pour-ipv6-compatibilité

20
gunjot singh

Solution pour le rejet des applications Apple en raison du réseau IPv6

Mon contrôle d'accessibilité Internet pour IPv6 ne fonctionne pas bien. Il montre toujours l'absence de réseau. Lorsque j'utilise ce code, Apple a approuvé mon application dans les 24 heures. MERCI

Modifiez la ligne suivante dans le code de AFNetworking Library in Class AFNetworkReachabilityManager

CHANGEZ AF_INET EN 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;
}

MODIFIER:

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

replace

AF_INET; to AF_INET6;
13
Maninderjit Singh

Supprimez la notation par points de l'URL de l'API, car le réseau IPv6 n'autorisait pas la notation par points dans l'URL. J'ai supprimé l'URL de l'API et son travail pour moi.

0
Parth