Отказ App Store от IPv6

Сегодня наше обновление было отклонено за проблемы с подключением к сети ipv6. Наш сетевой код не изменился между предыдущей версией и текущей версией.

Приложение делает только сетевые запросы https на api.metooapp.io, который правильно настроен для ipv6 [0] и работает за маршрутом53 на AWS. В коде нет жестко закодированных IP-адресов.

Я не могу воспроизвести эту проблему, даже после выполнения шагов по созданию сети ipv6 в [1], которая это ссылка, которая была предоставлена ​​в уведомлении об отказе. Похоже, что я не единственный, кто испытывает эту проблему, либо [2].

Ответ 1

После некоторого стресса я могу подтвердить, что проблема была связана с неправильной настройкой нашего бэкэнд для IPv6. По-видимому, AWS не поддерживает IPv6, а DNS-протокол IPv6 только через Route53. В конечном итоге я переместил все интернет-биты бэкэнда от AWS.

Я хотел оставить это, потому что думаю, что, вероятно, будут другие, которые сталкиваются с аналогичными проблемами, поскольку люди начинают отправлять обновления за ограничение только IPv6. Лучший инструмент, который я нашел для тестирования готовности сервера /dns, был: http://ready.chair6.net/

Ответ 2

Обратите внимание, что Поддержка сетей только для IPv6 и IPv6 и просмотр приложений может быть очень полезной в определяя, что проблема с отклонениями яблока. В этом конкретном случае в статьях четко указано, что вы можете настроить тестовую сеть DNS64/NAT64, но "эта тестовая сеть не совсем такая же, как сеть, используемая в обзоре приложений", поэтому все может работать в тестовой среде и все еще иметь приложение отклонено.

При этом:

Сеть просмотра приложений, такая как сети, развернутые службой провайдеров, поддерживает подключение IPv6 к IPv6. Таким образом, если ваш сервер поддерживает IPv6, ваше приложение будет напрямую разговаривать с ним, без необходимости через транслятор NAT64. Это, в общем, хорошо, но он может отключить вас, если ваш сервер заявит о поддержке IPv6, но этот IPv6 поддержка нарушена. Например, если: DNS-имя неверно, DNS правильно, но сервер не прослушивает IPv6, сервер прослушивание IPv6, но не выполняется, когда запрос поступает через IPv6

Итак, если ваш сервер backend поддерживает IPv6, сеть тестирования Apple будет использовать его, и в этом случае это было неправильно.

Я добавляю это как ссылку и отправную точку для других пользователей, которые испытывают ту же проблему

Ответ 3

Мы столкнулись с этой же проблемой, и выяснилось, что у нас была настройка записи AAAA для IPv6, поскольку у нас фактически не было поддержки IPv6 (мы также используем Route53), это все сводило. Исправлена ​​проблема с записью AAAA.

Я опубликовал радар о несоответствии между документацией для тестирования и настройкой App Review - мы смогли только диагностировать его, потому что наш технический директор на WWDC и смог подключиться к своей сети, что не совсем так, как мы можем регулярно воспроизводить.

Ответ 4

Мы столкнулись с подобной ситуацией. Наше приложение было отклонено из-за проблем с подключением в сетях IPv6. Также наши серверы используют AWS.

Я выполнил тест для IPv6 DNS64/NAT64 без каких-либо проблем на моей стороне, и мы решили подать апелляцию на это отклонение.

Мы объяснили, что тест на нашей стороне завершился с успехом и мы используем инфраструктуру AWS.

Через два дня приложение снова было рассмотрено и принято

Ответ 5

мы столкнулись с одной и той же проблемой. Наше приложение было отвергнуто сервальными временами для причины ipv6. Но мы тестировали сеть ipv6, которая была настроена как официальный документ APPLE: https://developer.apple.com/library/mac/documentation/NetworkingInternetWeb/Conceptual/NetworkingOverview/UnderstandingandPreparingfortheIPv6Transition/UnderstandingandPreparingfortheIPv6Transition.html#//apple_ref/doc/uid/TP40010220-CH213-SW1

Ответ 6

Наше приложение отклонено в первый раз, мы настраиваем локальную тестовую среду на основе яблочного документа и обнаруживаем, что наш curl lib слишком стар, без разрешения ipv6 по умолчанию. Поэтому мы создаем последнюю версию curl lib, и она работает. Но он опять отвернулся по той же причине. Я проверяю много информации, нахожу, что у кого-то был такой же опыт, просто жалоба на рецензента Apple, чтобы сказать, что ваше приложение хорошо работает в тестовой среде и попросит их предоставить инженера, чтобы помочь, если они настаивают на наличии некоторой ошибки. Экспертная группа Apple одобрила наше приложение в выходные, когда они увидели наши жалобы.

Как я знаю, есть 2 вопроса, которые нужно проверить. У вас жесткий IP-адрес в вашем приложении? Вы настраиваете свою запись AAAA для своего домена сервера, чтобы показать, что она поддерживает ipv6, но ваш сервер не прослушивает ipv6. Если да, просто удалите эту запись AAAA в настройках своего домена с сайта поставщика домена.

Ответ 8

Я выполнил тест для IPv6 DNS64/NAT64 без каких-либо проблем, как предписано документация Apple

однако мы не можем воспроизвести проблему (Crash). Мы успешно устанавливаем приложение на наших устройствах без сбоев.

  • Мы взяли видео об этом общем процессе тестирования (который включает в себя отображение возможностей подключения, загрузку из testflight, сетевое подключение NAT64, операции с приложениями).
  • и обратиться за отказом с видеофайлом

Наконец, приложение УТВЕРЖДЕНО мое приложение

Ответ 9

Это второй раз, когда я столкнулся с этой проблемой через 6 месяцев. Раньше это было в проекте Objective-C с использованием AFNetworking, и я использовал это решение, и он работал на одном пути. То же самое произошло с Аламофиром. Ребята, это решение работает для меня 2 раза, и я нашел, что этот вопрос идет первым в google, поэтому я отправляю ответ.

Найдите в рабочей области для AF_INET и измените ее на AF_INET6 в любом месте. Я думаю, что это должно быть внутри библиотеки AFNetworking или библиотеки Alamofire, если вы ее используете. Его в классе NetworkReachabilityManager.

Я нашел этот ответ из приведенного ниже источника.

fooobar.com/questions/75753/...

РЕДАКТИРОВАТЬ: - 24 июня -

Это помогло мне так много раз, но есть и странное решение этой проблемы. В нашем недавнем проекте мы применили это решение, но все же яблоко отклонило приложение. Затем мы сделали видео, в котором показывалось, что приложение работает нормально, подключившись к сети NAT64, созданной на Mac, из опции обмена wifi. Мы подали заявку на просмотр с видео, и они одобрили заявку. Поэтому, если вы закончили со всеми вашими параметрами, попробуйте это тоже.

Ответ 10

Вы можете проверить свой API на веб-сайте ниже, настроен ли ваш API iPV6 или нет!

http://ipv6-test.com/validate.php

Ответ 11

Я столкнулся с тем же отказом приложения при использовании SDK для Facebook. Если вы используете Facebook SDK для входа в систему, невероятно важно выйти из системы после завершения сеанса. В противном случае вы столкнетесь с подобными отклонениями приложений в будущем. Я включил код ниже, чтобы помочь тем, кто может испытывать подобные проблемы.

let loginManager = FBSDKLoginManager()
loginManager.logOut()

Ответ 12

Я решил проблему, отправив им видео, показывающее, что мое приложение работает на ipv6.

  1. Настройте ipv6 с вашим macOS
  2. Видеолента, что вы подключены к общей сети ipv6 и докажите, что ваше приложение работает в этой среде.

Ответ 13

мое приложение отклонено два раза в магазине приложений. Они выдают ошибку при входе в твиттер на iphone с ОС 11.4. Основная проблема возникла из-за URL обратного вызова твиттера, который не установлен на аккаунте разработчика в твиттере. когда я установил URL обратного вызова в учетной записи разработчика в твиттере. Это решает мою проблему. Когда мы не устанавливаем URL обратного вызова в учетной записи разработчика Twitter, то время входа в систему Twitter будет успешным, когда на устройстве установлено приложение Twitter. но в случае отсутствия приложения твиттер на устройстве выдает ошибку 403.

Таким образом, установка URL обратного вызова преодолевает мою проблему, и приложение принято.

Спасибо

Ответ 14

Вы можете создать сеть IPv6 самостоятельно, чтобы проверить эту проблему, если вы используете подключение по Ethernet. Шаги для создания сети IPV6 в Mac были объяснены в этом ответе.

Не забудьте нажать клавишу ALT при создании сети