Равиль Зарипов (ZuBy)

CloudFlare [IPV6]

В теме 14 сообщений

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

Для тех, кто не может опубликовать приложение в 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, но это ничего не меняет).

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

вот и вот еще

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

ну и как результат, написанного выше

2016-10-27_12-05-17.png

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Мое приложение 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), ничего об этой ошибке не говорит и это печально конечно.

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
10 минут назад, Alex7wrt сказал:

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

нет

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

что то я так  и не понял - обязательно или нет серверу иметь адрес 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 только?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

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

 

Спасибо. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
8 часов назад, ENERGY сказал:

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

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

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

 

Спасибо. 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Похожий контент

    • От SIARHEI RAHOUSKI
      Создал проект там куча компонентов. Но разворачивании формы на весь экран компоненты размер не меняют:
      Прочитал про свойства align Но как только я выставлю Group box например left другим right все сбивается в кучу и поправить это не могу. 
      Как настроить align ?

    • От SIARHEI RAHOUSKI
      Как сделать форму с компонентами под все разрешения?

    • От SIARHEI RAHOUSKI
      Как сделать мозаику (drag/drop) ? Получается есть 2 прямоугольника (которые надо перетаскивать)  и есть ещё 2 прямоугольника (которые должны принимать) и ещё есть кнопка проверки. При нажатии определяет правильно ли разместили прямоугольники.
    • От Bohdan
      Всем Привет!

      Платформа ios Delphi 10.2.2, хочу при нажатии на label показывать edit (для редактирования label.) Столкнулся с проблемой:
       Как отследить Tap  за пределами Edit чтобы его скрыть, не могу понять как это сделать.
    • От ENERGY
      Есть большой файл с анимацией, ~3 мб.  
      120 AnimCount - кадров, raws 10, одна картинка 400x400
      Под Android и Windows анимация прекрасно работает.
      Под iOS анимация скачет влево-вправо, или появляються куски предыдущего фрейма (нижней части) в верху текущей анимации.
      Я уже что только не делал, много раз менял файл, создавая его с разными raws, разными размерами картинок. Что-то меняется конечно, но остаются эти эффекты разной интенсивности.
      Файл склеиваю в своей проге из картинок, в финальном файле ошибок нет.
       
      Подскажите куда копать, просто замучался уже..
    • От Martifan
      Добрый день,
      Может ктонибудь помочь разобраться с записью/проигрыванием звука на iOS устройствах? 
      Нужно записывать звук в буффер (массив байтов). Нашли "замечатульную" библиотеку на github, которая позволяет обращаться к нативным методам устройства намрямую, и следуя инструкциям по записи звука в xCode пытаемся собрать тоже самое. Ниже привяжу ссылки... Библиотека мягко говоря не в лучшей кондиции такчто некоторые типы приходилось править вручную, и форматирование не вызывает восторга, но другого выбора нет. Если у когонибудь есть практика с другой библиотекой, или какиенибудь идеи, подскажите пожалуйста. Записывать надо обязательно в буффер, для дальнейшей обработки.
      GitHub библиотека
      Запись звука в xCode - github
      IOS.rar
    • От Martifan
      Всем доброго времени суток
      может кто знает как на iOS распознать речь и получены результат записать текстовом поле
      как на Android сделать я знаю но на iOS не получается
       
      Спасибо за ранее
    • От Astghik
      Hello !!!
      I want onButtonClick create popup. I use TPopup component. All good, but on android "Back button" click closing forma. But I want close popup (when popup is shown).

       
      //---------------------------------------------------------------------------------
      void __fastcall  btn3PointsClick(TObject *Sender)
      {
          PopUpSettings->IsOpen = true;
          PopUpSettings->PlacementTarget = btn3Points;
          PopUpSettings->BringToFront();
      }
      //-------------------------------------------------------------------------------------
      void __fastcall FormCloseQuery(TObject *Sender, bool &CanClose)
      {
          try {
              if (PopUpSettings->IsOpen == true) {
                  CanClose = false;
              }
              else {
                  CanClose = true;
              }
          } __finally {
              PopUpSettings->IsOpen = false;
          }
      }
      //-------------------------------------------------------------------
       
    • От Rokweb
      Здравствуйте.
      Речь пойдёт об Android.
      Использовал в Berlin данный unit для проигрывания звуков (TMediaPlayer не подходит) и все отлично работало. Сейчас перешел на Tokyo и происходит зависание в цикле:
       
      while not GLoaded do begin Sleep(10); Application.ProcessMessages; end;  
      Модуль прикрепил в сообщении.
       
      Так же интересует - возможно ли, использовать стиль, созданный в процессе разработки Android приложения - в iOS и если да - то как это правильно реализовать (почти каждый контрол имеет сейчас свой стиль)?
       
      Прошу помощи.
      GameAudioManager.zip
    • От Edward Tarasov
      поставил этот патч 
      https://cc.embarcadero.com/item/30805
      Версия PAserver на mac стала - 10.1.1.37, test connection отвечает success, но при компиляции выдаеться ошибка - [PAClient Error] Error: E0014 Connection refused. Platform Assistant Server version mismatch - expecting version '10.0.1.23'. 
      10.0.1.23 - это старая версия PA... откатиться нельзя ибо не пашет, тоесть этот патч исправляет старую проблему - но добавляет эту... суть в том, как я понял после 4-х часовго гугления, что надо исправить PAclient, у которого версия почему то осталась старая... кто знает как с этим быть?
  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу