Я нашел свое решение своей проблемы. (некоторое время назад, но я снова нашел этот пост)
Сначала я узнал, iOS делает 3 вызова, первый для проверки, второй для получения страницы, которую нужно отобразить, третий для повторной проверки после загрузки страницы. Затем я обнаружил, что для каждого действия POST или GET, выполненного страницей, относительно исходной страницы было обновлено, iOS проверяет активное подключение к Интернету. Поскольку API facebook делает много вызовов, браузер начинает зависать (возможно, в сочетании с QoS на моем маршрутизаторе) и зависает страница.
Мое решение:
Поскольку я контролирую записи DNS используемого маршрутизатора, я перенаправил все домены на свой собственный сервер.
Сначала я сохранил запрос на проверку, чтобы позже идентифицировать пользователя, когда он вернется для третьего запроса.
Когда приходит второй запрос, я просто показываю информационное окно, в котором все правильно, и пользователь должен нажать кнопку «Готово».
Страница загружена, поэтому iOS снова проверяет, но я узнаю пользователя, поэтому я показываю код OK, который также отображает Apple. Кнопка «Готово» показывается, и у пользователя есть «интернет», согласно iOS.
На отображаемой странице я предлагаю пользователю открыть веб-браузер. Когда он это делает, он открывает страницу, и отображается мой портал с нужной страницей (я могу обнаружить это на основе агента браузера). Затем мой facebook API начинает делать свою работу, и мы идем :-)
Дайте мне знать, если кому-то нужна дополнительная информация о том, как обнаружить или, возможно, даже пример кода, если это необходимо.
Дополнительная информация. Чтобы захватить пользователя на вашем собственном сервере, перенаправляйте каждый запрос на вашу страницу обработки, используя, например, .htaccess. Запрос направляется в домен с подфайлом, например: http://captive.apple.com/getrT09Nx7G/YNrnUOulnDj/3cfrq3M40iR.html
Чтобы разделить нескольких пользователей, используйте уникальный URL-адрес, с которым устройство пытается связаться при проверке Интернета, в данном случае: /getYT09Nx7G/YN1nUOulnDj/3cfMq3M40iR.html.
person
Cas Wolters
schedule
19.08.2014