Перейти к содержанию
Fire Monkey от А до Я

Рекомендуемые сообщения

  • Модераторы

Доброго времени суток!

Для тех, кто не может опубликовать приложение в AppStore

Если приложение посылает запросы на сервер и у Вас на сервере нет поддержки IPV6, Apple не опубликует приложение!

Что нужно для успешной публикации:

  1. Получить у Вашего хостера IPV6 адрес (примерно такой вид имеет ipv6 адрес) 
    2001:0db8:11a3:09d7:1f34:8a2e:07a0:765d

     

  2. Если нет root-доступа к серверу, то можно воспользоваться сервисом https://cloudflare.com
  3. Если есть root-доступ, то ознакомьтесь с инструкцией

Мы рассмотрим самый частый вариант, без root-доступа, через сервис CloudFlare

  • Не буду расписывать регистрацию, там все просто
  • Нажимаем +Add Site, вписываем адрес Вашего сайта (домен), как только система проверит конфигурацию Вашего текущего DNS, она предложит изменить NS-сервера
  • В кабинете хостера Вам нужно будет сменить NS-сервара, на те которые выдал CloudFlare 
  • В CloudFlare -> раздел DNS
  1. Нужно будет дописать запись типа AAAA с Вашим ipv6 адресом 2016-10-26_15-25-40.png
  2. Все поддомены которые есть также прописать через запись типа CNAME 2016-10-26_15-25-40.png
  3. Чтобы работало FTP нужно отключить HTTP Proxy (CDN) 2016-10-26_15-25-03.png
    • Теперь FTP протокол будет доступен по IPv4, не по домену

Ждём обновления DNS и проверяем правильность конфигурации

Результат примерно такой должен быть

2016-10-26_15-36-52.png

Что нужно сделать в Delphi / C++:

  • Выкидываем TidHTTP (Indy) и переписываем на TNetHTTPClient

Приложу пример запроса и обработки ответов, учтен баг с получением контента на IOS

TmyAPI.zip или https://github.com/rzaripov1990/FMX.HTTP.Request

Ссылка на комментарий
2 часа назад, ZuBy сказал:

Если приложение посылает запросы на сервер и у Вас на сервере нет поддержки IPV6, Apple не опубликует приложение!

Это неверно: Apple не требует поддержки IPv6 от сервера - она лишь обязывает приложение уметь работать в IPv6-сети, которая, в свою очередь, может взаимодействовать с любыми другими, в том числе с Интернет, где IPv4 никто пока не отменял; официальная документация, собственно, и описывает настройку такого окружения. Сделано это, насколько я понимаю, с прицелом на светлое прекрасное будущее, когда весь Интернет будет понимать IPv6 (а это всё оборудование, включая клиентское, и всё сетевое ПО), что, само-собой, случится не так скоро.

Касательно TIdHTTP. Этот компонент умеет работать с IPv6 - нужно лишь указать это явно, т. к. по умолчанию используется 4-я версия: подробности можно узнать здесь или здесь.

Ссылка на комментарий
  • Модераторы
8 минут назад, Сергей Пьянков сказал:

Это неверно: Apple не требует поддержки IPv6 от сервера - она лишь обязывает приложение уметь работать в IPv6-сети, которая, в свою очередь, может взаимодействовать с любыми другими, в том числе с Интернет, где IPv4 никто пока не отменял; официальная документация, собственно, и описывает настройку такого окружения. Сделано это, насколько я понимаю, с прицелом на светлое прекрасное будущее, когда весь Интернет будет понимать IPv6 (а это всё оборудование, включая клиентское, и всё сетевое ПО), что, само-собой, случится не так скоро

Те кто присутствуют в чате телеграм, могли слышать запись разговора с тех. поддержкой apple. Которые при тесте приложения не увидели контента. Ни один запрос не прошел (скорей всего IPv6-IPv4). Поэтому при публикации все время идут отказы.

Они даже провели тест не через сеть построенной Apple, а через мобильных операторов. Результат одинаковый, контента не было

17 минут назад, Сергей Пьянков сказал:

Касательно TIdHTTP. Этот компонент умеет работать с IPv6 - нужно лишь указать это явно, т. к. по умолчанию используется 4-я версия: подробности можно узнать здесь или здесь.

я проверил эту теорию...

минусы:

1) если работать с сервером IPv4-IPv4 нужно сначала узнать, в какой сети ты находишься и от этого уже решать ставить [] или нет.

2) Если сервер имеет SSL, то на андроиде начиная с 6.0 не работает TIdHTTP (не помню помогает ли, включение отдельно скачанных ssl библиотек в проект)

Так для чего все эти операции, если можно использовать TNetHTTPClient который рекомендован Embarcadero и работает без этих минусов?

Ссылка на комментарий
11 минут назад, ZuBy сказал:

Которые при тесте приложения не увидели контента. Ни один запрос не прошел (скорей всего IPv6-IPv4).

Я ничего не знаю про конкретно этот случай - проблема могла крыться в коде самого приложения, в коде использованных компонентов (в том числе Indy) или в оборудовании - я лишь продолжаю настаивать на необязательности поддержки IPv6 сервером, что является принципиальным моментом, ибо столкнувшиеся с этой темой впервые и прочитавшие начальное сообщение могут принять написанное за истину.

33 минуты назад, ZuBy сказал:

Поэтому при публикации все время идут отказы.

Отказы по какому-то одному приложению или по всем, где есть сетевой обмен? Подозреваю, что первый вариант, иначе бы на форумах был вал вопросов и жалоб по таким отказам. Мой личный опыт подобной проблемы не подтверждает: IPv4-сервер спокойно проходит проверку Apple (правда речь о TCP, но это ничего не меняет).

43 минуты назад, ZuBy сказал:

Так для чего все эти операции, если можно использовать TNetHTTPClient который рекомендован Embarcadero и работает без этих минусов?

Ни в коей мере не призываю использовать лишь Indy и срочно отказываться от премерзких альтернатив, аминь. Если проект только создаётся, то TNetHTTPClient - вероятнее всего лучший выбор; если кода с Indy уже много, то каждый пусть сам оценит трудозатраты на его доработку к IPv6 - вполне может случиться, что полное переписывание будет невыгодным.

Ссылка на комментарий
4 минуты назад, Сергей Пьянков сказал:

Отказы по какому-то одному приложению или по всем, где есть сетевой обмен? Подозреваю, что первый вариант, иначе бы на форумах был вал вопросов и жалоб по таким отказам. Мой личный опыт подобной проблемы не подтверждает: IPv4-сервер спокойно проходит проверку Apple (правда речь о TCP, но это ничего не меняет).

Сергей, тоже являюсь "жертвой" таких обстоятельств. Да, согласен, не обязательно приложение будет отклонено контролем. Бывает, проходит с первого раза. Если не проходит сразу, проходит на второй или третий. Ничего не меняю, просто повторно возвращаю на проверку...

Для меня Apple тоже проводили тестирование не только в рабочей сети, но и через мобильных операторов. Показывали результаты...

Но в целом системы такого поведения не уловил. На Андроиде все работает прекрасно.

Нисколько не агитирую за какое-либо решение... Каждый вибирает для себя. Просто делюсь опытом.

 

 

Ссылка на комментарий
  • Модераторы
13 минут назад, Сергей Пьянков сказал:

Я ничего не знаю про конкретно этот случай - проблема могла крыться в коде самого приложения, в коде использованных компонентов (в том числе Indy) или в оборудовании - я лишь продолжаю настаивать на необязательности поддержки IPv6 сервером, что является принципиальным моментом, ибо столкнувшиеся с этой темой впервые и прочитавшие начальное сообщение могут принять написанное за истину.

проблемы в коде нету, тестировали ребята по всему СНГ (IPv4-IPv4) (хотите потестить в личку напишите)

16 минут назад, Сергей Пьянков сказал:

Отказы по какому-то одному приложению или по всем, где есть сетевой обмен? Подозреваю, что первый вариант, иначе бы на форумах был вал вопросов и жалоб по таким отказам. Мой личный опыт подобной проблемы не подтверждает: IPv4-сервер спокойно проходит проверку Apple (правда речь о TCP, но это ничего не меняет).

Такие вопросы на форуме есть и не только на форуме

вот и вот еще

Ссылка на комментарий
  • 4 месяца спустя...

Мое приложение Apple также отклонила с тем же сообщением о IPv6. 

Но насколько я понимаю, CloudFlare нужно использовать для своего хостинга, а как быть с Google?

У меня приложение использует сервис Google, а все сервисы Google вроде как поддерживают IPv6 c 2012 года.

Поэтому не пойму, в чем здесь ошибка. Использую TIdHTTP. Или нужно использовать TNetHTTPClient?

 

P.S. И, если кто знает, как вообще проверить самому, решена ли в приложении проблема с IPv6, без ожидания ответа Apple каждый раз?

Можно на Windows или Android? А то в инструкции Apple нужно подключить макбук не через WiFi, а у меня в макбуке нет сетевого порта... и провайдер к тому же поддерживает только IPv4...

Изменено пользователем Alex7wrt
Ссылка на комментарий
  • Модераторы
11 часов назад, Alex7wrt сказал:

Поэтому не пойму, в чем здесь ошибка. Использую TIdHTTP. Или нужно использовать TNetHTTPClient?

я бы даже сказал обязательно использовать T(Net)HTTPClient

Если работать с IPv6 в TIdHTTP, нужно хост указывать в квадратных скобках, вы наверное этого не делаете?

11 часов назад, Alex7wrt сказал:

P.S. И, если кто знает, как вообще проверить самому, решена ли в приложении проблема с IPv6, без ожидания ответа Apple каждый раз?

Скорей всего построить такую сеть. от провайдера нужен IPv6 и роутер перевести в режим работы по IPv6 (если такое имеется).

Хотя тот же TestFlight (тестовый сервис AppStore), ничего об этой ошибке не говорит и это печально конечно.

Узнать об ошибке можно только при публикации

Ссылка на комментарий
  • Модераторы
10 минут назад, Alex7wrt сказал:

А при использовании  T(Net)HTTPClient нужны какие-либо действия для указания IPv6 или нет?

нет

Ссылка на комментарий
  • 1 месяц спустя...

что то я так  и не понял - обязательно или нет серверу иметь адрес ipv6? 

сделал, как описано выше, с помощью макбук подключенному в 3ж сеть (ipv4) , расшаренную вай-фай подсеть dns64/nat64, в нее смог приконнектится только Iphone ( два китайских смарта повисли при подключении на словах - получение ИП адреса, один подключается, получает ип6 адрес, но без инета)

ipv6.thumb.jpg.7746afb0968c6afacf01753de0d405c9.jpg

внизу, если раскрыть 2 адреса в разделе ipv6 есть два длинных ipv6 адреса

не очень понимаю - в какой сети iphon -  6 или 4? 

мой сайт имеющий ipv4 адрес ( по имени хоста) TWebbrowser открывает, в то же время попытка открыть connection ( TIdTcpClient) ipv4 по имени или ип адресу не работает.. exception

поставил программу пинг - google.com - показывает его ipv6 адрес.

как приконнектится к хосту с ИП4 только?

Ссылка на комментарий
  • 6 месяцев спустя...

Если у клиента хостинг не имеет Ipv6 поддержки, что делать в этом случае?

Переходить на другой хостинг?

Сделать какой - нибудь редирект с нового хостинга на старый?

 

Спасибо. 

Ссылка на комментарий
  • Модераторы
8 часов назад, ENERGY сказал:

Если у клиента хостинг не имеет Ipv6 поддержки, что делать в этом случае?

Переходить на другой хостинг?

Сделать какой - нибудь редирект с нового хостинга на старый?

 

Спасибо. 

перейти на другой хостинг, это самое простое

Ссылка на комментарий

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...