Notre mise à jour a été rejetée deux fois aujourd'hui pour des problèmes de connectivité réseau ipv6. Notre code de réseau n'a pas changé entre la version précédente et la version actuelle.
L'application envoie uniquement des requêtes réseau https à api.metooapp.io, qui est correctement configuré pour ipv6 [ 0 ] et s'exécute derrière route53 sur AWS. Il n'y a pas d'adresses IP codées en dur dans le code.
Je ne parviens pas à reproduire ce problème, même après avoir suivi les étapes permettant de créer un réseau ipv6 sur [ 1 ], qui est le lien fourni dans l'avis de rejet. Il semble que je ne sois pas le seul à avoir rencontré ce problème non plus [ 2 ].
Après un peu de stress, je peux confirmer que le problème était dû au fait que notre backend n’était pas correctement configuré pour IPv6. Apparemment, AWS ne prend pas en charge IPv6, ni les DNS uniquement IPv6 via Route53. Pour l’instant, j’ai déplacé tous les éléments Internet faisant face au backend d’AWS.
Je voulais laisser tomber parce que je pense qu'il y en aura probablement d'autres qui se retrouveront avec des problèmes similaires alors que les gens commencent à soumettre des mises à jour au-delà de la restriction IPv6 uniquement. Le meilleur outil que j'ai trouvé pour tester la préparation serveur/dns a été: http://ready.chair6.net/
Veuillez noter que Prise en charge des réseaux exclusivement IPv6 et IPv6 et App Review link peut s'avérer très utile pour déterminer le problème des rejets Apple . Dans ce cas spécifique, les articles indiquent clairement que vous pouvez configurer le réseau de test DNS64/NAT64 mais que "Ce réseau de test n’est pas exactement le même que celui utilisé par App Review", c’est pourquoi tout peut fonctionner dans l’environnement de test et que l’application reste rejetée.
En outre:
Le réseau App Review, comme les réseaux déployés par le service fournisseurs, prend en charge la connectivité IPv6 à IPv6. Ainsi, si votre serveur prend en charge IPv6, votre application lui parlera directement, sans passer par à travers le traducteur NAT64. C’est en général une bonne chose, mais cela peut vous faire trébucher si votre serveur prétend prendre en charge IPv6 mais que IPv6 le support est cassé. Par exemple, si: le nom DNS est incorrect, le DNS est correct mais le serveur n'écoute pas sur IPv6, il est écouter sur IPv6 mais échouer lorsqu'une requête arrive sur IPv6
Donc, si votre serveur principal prend en charge IPv6, le réseau de test Apple l’utilisera, et c’est ce qui s’est mal passé dans ce cas.
J'ajoute ceci comme référence et point de départ pour d'autres utilisateurs rencontrant le même problème
Nous avons rencontré le même problème, et il s’est avéré que nous avions créé un enregistrement AAAA pour IPv6, car nous n’avions pas réellement de support IPv6 (nous utilisons également Route53), cela a tout bouleversé. Supprimer l'enregistrement AAAA a résolu le problème.
J'ai déposé un radar à propos de l'écart entre la documentation de test et la configuration utilisée par App Review - nous n'avons pu le diagnostiquer que parce que notre CTO était à la WWDC et était en mesure de se connecter à son réseau, qui est pas exactement une situation que nous pouvons reproduire régulièrement.
Nous avons couru dans une situation similaire. Notre application a été rejetée en raison de problèmes de connectivité dans les réseaux IPv6. De plus, nos serveurs utilisent AWS.
J'ai effectué Test pour IPv6 DNS64/NAT64 sans aucun problème de mon côté et nous avons décidé de faire appel de ce rejet.
Nous avons expliqué que le test de notre côté avait été terminé avec succès et que nous utilisions l'infrastructure AWS.
Après deux jours supplémentaires, l'application a été à nouveau examinée et acceptée.
Notre application est rejetée la première fois, nous configurons l'environnement de test local basé sur document Apple et trouvons que notre bibliothèque curl est trop ancienne sans activer ipv6 par défaut. Nous construisons donc la dernière version de curl lib et cela fonctionne. Mais il est rejeté à nouveau pour la même raison. Je vérifie beaucoup d'informations, je trouve quelqu'un qui a la même expérience, une plainte auprès du réviseur Apple pour lui dire que votre application fonctionne bien dans un environnement de test et lui demander de faire appel à un ingénieur pour l'aider s'il insiste sur une erreur. L'équipe d'examen Apple a approuvé notre application le week-end quand elle a vu nos plaintes.
Comme je sais qu'il y a 2 problèmes que vous devez vérifier. Avez-vous coder l'adresse IP dans votre application? Configurez-vous votre enregistrement AAAA pour le domaine de votre serveur pour indiquer qu'il prend en charge ipv6, mais que votre serveur n'écoute pas ipv6. Si oui, supprimez simplement cet enregistrement AAAA dans les paramètres de votre domaine à partir du site de votre fournisseur de domaine.
nous avons rencontré le même problème.。 Notre application a été rejetée pour des raisons liées à ipv6 Mais nous avons été testés sur le réseau ipv6 configuré en tant que document officiel d’Apple: https://developer.Apple.com/library/mac/documentation/NetworkingInternetWeb/Conceptual/NetworkingOverview/UnderstandingandPreparingfortHIPv6Transition doc/uid/TP40010220-CH213-SW1
La bibliothèque d'accessibilité doit prendre en charge les paramètres réseau IPv6. Utilisez donc cette classe d'accessibilité.
C'est la deuxième fois que j'ai rencontré ce problème après 6 mois. Auparavant, c'était dans le projet Objective-C utilisant AFNetworking et j'ai utilisé cette solution et cela a fonctionné en une fois. Maintenant, la même chose s'est produite avec Alamofire. Les gars cette solution est travaillé pour moi 2 fois et j'ai trouvé que cette question est la première à google, donc je poste la réponse.
Recherchez AF_INET dans l'espace de travail et remplacez-le par AF_INET6 où que vous soyez. Je pense que cela doit se trouver dans la bibliothèque AFNetworking ou dans la bibliothèque Alamofire si vous l’utilisez. C'est dans la classe NetworkReachabilityManager.
J'ai trouvé cette réponse à partir de la source ci-dessous.
https://stackoverflow.com/a/38196337/4030971
EDIT: - 24 juin -
Cela m'a beaucoup aidé, mais il existe également une solution étrange à ce problème. Dans notre récent projet, nous avons appliqué cette solution mais Apple a néanmoins rejeté l’application. Ensuite, nous avons réalisé une vidéo montrant que l’application fonctionne correctement et connectée à un réseau NAT64 créé sur un Mac à partir de l’option de partage wifi. Nous avons fait appel pour la révision de la vidéo et ils ont approuvé la demande. Donc, si vous avez terminé avec toutes vos options, essayez aussi celle-ci.
J'ai effectué un test pour IPv6
DNS64/NAT64
sans aucun problème, comme indiqué dans documentation Apple
cependant, nous ne pouvons pas reproduire le problème (Crash) . Nous avons réussi à installer l'application sur nos appareils sans crash.
Enfin, app store APPROUVÉ mon application
Vous pouvez vérifier votre API sur le site ci-dessous, votre API est-elle configurée ou non?
J'ai résolu le problème en leur envoyant une vidéo montrant que mon application fonctionne sur ipv6.
mon application est rejetée deux fois sur l'App Store. Ils donnent une erreur à Twitter login sur iphone ayant os 11.4. Le principal problème que nous avons en raison de l'URL de rappel de Twitter, qui n'est pas défini sur le compte développeur de Twitter. quand j'ai mis l'URL de rappel sur le compte de développeur de Twitter. Cela résout mon problème. Lorsque nous ne définissons pas l'URL de rappel sur le compte de développeur de Twitter, la connexion à Twitter est réussie lorsque l'appareil dispose de l'application Twitter. mais en cas d'absence d'application Twitter sur l'appareil, l'erreur 403 est interdite.
Donc, régler l'URL de rappel surmonte mon problème et l'application est acceptée.
Je vous remercie
J'ai rencontré le même rejet d'application lorsque j'utilisais le SDK de Facebook. Si vous utilisez le SDK de Facebook pour vous connecter, il est extrêmement important de déconnecter l'utilisateur lorsque vous terminez une session. Sinon, vous devrez faire face à des rejets d'applications similaires à l'avenir. J'ai inclus le code ci-dessous pour aider les personnes susceptibles de rencontrer des problèmes similaires.
let loginManager = FBSDKLoginManager()
loginManager.logOut()