Application rejetée en raison de problèmes de connectivité réseau IPv6

Les raisons de rejeter mon application sont les problèmes de connectivité réseau ipv6.

Premièrement, j’utilise AWS comme serveur principal. J’utilise mon nom de domaine pour me connecter à mon serveur comme http://ec2-XX-XXX-XXX-XXX.compute-1.amazonaws.com:80/parse où X est un nombre

Deuxièmement, j’ai essayé de reproduire le problème en: a) Accédez au paramètre de mon iPhone -> Developer -> Status (Newwork Link Conditioner) -> créez un profil identique à LTE mais le protocole est IPv6 b) Faites la même chose qu’Apple suggérer. Utilisez l’ethernet de foudre pour connecter mon MacBook et partager le wifi avec mon iPhone. Mon application fonctionne dans les deux cas.

Troisièmement, je regarde AWS sur la prise en charge d’IPv6. Voici le lien. http://docs.aws.amazon.com/Route53/latest/DeveloperGuide/ResourceRecordTypes.html#AAAAFormat Il semble que rien ne devrait être changé. Je ne suis pas tout à fait sûr car je ne connais pas le serveur.

Aucune suggestion? Merci.


METTRE À JOUR

Si vous utilisez la classe Rechability d’ancienne pomme et si vous utilisez l’ancienne classe AFNetworkReachabilityManager d’AFNetworking

Réponse – Je n’ai implémenté aucun code pour Reachability ou AFNetworking. Dois-je m’inquiéter de ce que ces classes sont dans d’autres Frameworks comme Parse?

entrer la description de l'image ici

Si vous utilisez des adresses IP codées en dur

Réponse: Mon nom de domaine est http://ec2-XX-XXX-XXX-XXX.compute-1.amazonaws.com:80/parse où X est un nombre. Donc, je pense que ça devrait aller.

il y a peu de points qui causent fréquemment ce problème.

  • Si vous utilisez la classe Rechability vieille pomme, remplacez-la par la dernière, car l’ancienne Rechability class n’est pas compatible avec le réseau `ipv6 only.
  • Idem pour l’ancienne bibliothèque AfNetworking , si vous utilisez l’ancienne AFNetworking's AFNetworkReachabilityManager class remplacez cette classe par la dernière classe AFNetworkReachabilityManager ou remplacez la bibliothèque entière par la plus récente.
  • Si vous utilisez hard coded IP addresses comme api remplacez-le par un nom de domaine. Par exemple, vous ne devriez pas utiliser api comme: http://192.168.1.11:4444/login . Votre API devrait être comme: http://api.example.com/login

Comme l’indique le document Apple,

Assurez-vous de ne pas transmettre les littéraux d’adresse IPv4 en notation par points à des API telles que getaddrinfo et SCNetworkReachabilityCreateWithName. Au lieu de cela, utilisez des infrastructures réseau de haut niveau et des versions indépendantes de l’adresse des API, telles que getaddrinfo et getnameinfo, et transmettez-leur des noms d’hôte ou des noms de domaine complets (FQDN). Voir getaddrinfo (3) Page de manuel des outils de développement Mac OS X et getnameinfo (3) Page de manuel des outils de développement Mac OS X.

Remarque: sous iOS 9 et OS X 10.11 et versions ultérieures, NSURLSession et CFNetwork synthétisent automatiquement les adresses IPv6 à partir des littéraux IPv4 localement sur les périphériques fonctionnant sur les réseaux DNS64 / NAT64. Cependant, vous devriez toujours travailler pour débarrasser votre code des littéraux d’adresse IP

  • Et votre serveur d’hébergement api devrait être compatible avec ipv6 (ce n’est pas une préoccupation majeure car presque le serveur est compatible avec ipv6)

Vous pouvez consulter la documentation Apple pour plus de détails

Vous allez savoir que vous pouvez créer un réseau IPv6 uniquement sur votre Mac pour le tester également avec la documentation d’Apple ci-dessus!

Mon application est approuvée.

La seule chose que je change est

  • définir la signature sur “gérer automatiquement la signature” car mon application ne s’exécute pas lorsque je change la configuration de la version en “Release” (je ne suis pas sûr que cela soit lié à IPv6. Je pense que c’est plutôt étrange)

Référence pour les autres utilisateurs d’API Google Map, hébergement Parse dans AWS et connexion Facebook:

  • Je pense que leurs frameworks sont bien adaptés aux exigences IPv6.

Je me demande encore pourquoi Apple a déclaré que mon application ne répondait pas aux exigences IPv6 lors de ma dernière soumission.