在 iOS 应用程序(通常在免费 WiFi 区域、酒店等中)中处理 WiFi 身份验证页面的最佳方式是什么,例如在 Settings.app 中(当用户需要进行身份验证时在模式中显示 Web 视图)?我对自定义解决方案有一些想法,例如检查重定向、内容类型,然后向用户显示 Web 视图,但想知道是否已经实现了预先存在的解决方案。
背景:
支持 iOS 5+
通过 AFNetworking 路由的所有网络请求
在 iOS 应用程序(通常在免费 WiFi 区域、酒店等中)中处理 WiFi 身份验证页面的最佳方式是什么,例如在 Settings.app 中(当用户需要进行身份验证时在模式中显示 Web 视图)?我对自定义解决方案有一些想法,例如检查重定向、内容类型,然后向用户显示 Web 视图,但想知道是否已经实现了预先存在的解决方案。
背景:
支持 iOS 5+
通过 AFNetworking 路由的所有网络请求
我认为你的直觉很好。你应该至少做四件事:
使用 AFNetworkingsetRedirectResponseBlock
并确定request
URL 何时与您想要的域不同。
在您的setCompletionBlockWithSuccess:failure:
处理程序块中,检测由不在 2xx 范围内的状态代码导致的错误。
您可能还应该setWillSendRequestForAuthenticationChallengeBlock
在其中检测到意外的身份验证挑战。
您可能还想使用AFNetworkReachabilityManager
(基于 Apple 的可达性示例)来确定连接类型(例如,识别当前没有任何 WiFi 连接)。
显然,如果 WiFi 热点需要 WPA2/WPA/WEP 密码才能连接到热点(与没有 WPA2/WPA/WEP 身份验证的热点相反,而是身份验证是质询-响应或一些 HTML-基于身份验证),对此您无能为力,因为据 AFNetworking 所知,您根本没有 WiFi 连接(在这种情况下,上面列出的第四种技术可能会提供信息)。但是许多(大多数?)热点不需要任何密码来连接,而是将您重定向到基于 HTML 的登录页面,在这种情况下,上述前三种技术可能会有所帮助。
据我所知,你必须自己实现这个逻辑。