我找到了解决问题的方法。(前段时间,但我又找到了这个帖子)
首先我发现,iOS 打了 3 次调用,第一次检查,第二次获取需要显示的页面,第三次在页面加载后再次检查。然后我发现,对于页面所做的每个 POST 或 GET 操作,关于源页面的刷新,iOS 都会检查是否有活动的互联网连接。由于 facebook api 进行了大量调用,浏览器开始停止(可能与我路由器上的 QoS 结合使用)并冻结页面。
我的解决方案:
由于我控制着我使用的路由器的 DNS 记录,我将所有域重定向到我自己的服务器。
首先,我保存了检查请求,以便稍后在他返回第三个请求时识别用户。
当第二个请求到来时,我只显示一个信息窗口,表明一切都是正确的,用户必须单击“完成”按钮。
页面已加载,因此 iOS 再次检查,但我识别用户,因此我显示 Apple 也显示的 OK 代码。根据iOS,我们显示“完成”按钮,用户拥有“互联网”。
在我显示的页面上,我指示用户打开网络浏览器。当他这样做时,他会打开一个页面,并显示我的带有正确页面的门户(我可以根据浏览器代理检测到这一点)。然后我的 facebook api 开始做它的工作,我们去:-)
让我知道是否有人需要更多关于如何检测的信息,或者在必要时甚至可能需要代码示例。
额外信息
要在您自己的服务器上捕获用户,请将每个请求重定向到您的处理页面,例如使用 .htaccess。向带有子文件的域发出请求,例如:
http ://captive.apple.com/getrT09Nx7G/YNrnUOulnDj/3cfrq3M40iR.html
要将多个用户分开,请使用设备在检查互联网时尝试联系的唯一 url,在这种情况下:/getYT09Nx7G/YN1nUOulnDj/3cfMq3M40iR.html