2016-08-03 5 views
0

У меня есть мобильное приложение IOS написано в Swift 2. Внутри приложения есть вызов к нашему серверу черезIOS 9+ Testflight Cellular Data не работает

Session.dataTaskWithRequest(request, completionHandler: (func)) 

У меня есть 3 IPADS с сотовыми данными. 1, к которому у меня есть доступ и могу подключиться к отладчику. 2, что я не имею доступа и должен задавать вопросы, чтобы понять, что происходит.

Внутренний iPad работает со сборкой X как на WiFi, так и на сотовой, по работе я имею в виду, что запрос проходит и прекрасно связывается с сервером.

Внешние iPads работают через Wi-Fi, но не работают по сотовой связи.

Мы попытались

  • Обеспечение мобильных данных включена, & на для конкретного приложения в режиме
  • Переключение Самолет
  • Сброс сети
  • Перезапуск устройства
  • Убедитесь, что устройства на самом деле имел соединение, когда dataTaskWithRequest не удалось.

Любые идеи о том, что может происходить здесь? Есть ли уступ пропущен? Настройка в info.plist (почему работает 1), которую я пропустил?

+0

Является ли ваш сервер доступен из сотовой сети внешних пользователей? Вы можете попробовать проверить блокировку с помощью интернет-браузера или аналогичного. – dgatwood

+0

Сервер доступен из браузера, похоже, это проблема только с запросами, поступающими из приложения iOS. Существует некоторое переписывание запросов, которые необходимо перенаправить в приложении, которые могут быть отфильтрованы. Создал новую сборку для захвата ответа от сервера от пользователей, испытывающих проблему – Ajwhiteway

ответ

0

Так дгатвуд был на правильном пути.

Запросы внутри приложения в некоторых случаях перенаправляются на внешний сервер и внутренний сервер в других случаях. Поскольку эти запросы возникли из WKWebView, у них были стандартные HTTPHeaderFields, которые поступают из WKWebView. Поскольку эти запроса были повернуты внутрь на мини-сервера, написанного жить в фоне приложения эти три заголовки содержали недостоверную информацию для запроса

  • Происхождение
  • Referer
  • Узел

Over в плане данных о сотрудничестве была проведена фильтрация для запросов. Поскольку источник, объявленный в полях заголовка, не соответствует началу вызова, сотовая сеть отбрасывала запросы, и они никогда не доходили до сервера.

Проблема была исправлена ​​

request.setValue(nil, forHTTPHeaderField: "Origin") 
request.setValue(nil, forHTTPHeaderField: "Host") 
request.setValue(nil, forHTTPHeaderField: "Referer") 

Надеюсь, кто-то считает, что это полезно в какой-то момент

Смежные вопросы