我在课程Reachability和vpn或公共互联网网关方面遇到了一些问题。
如果iPhone连接到带有某些vpn的公共Wifi或付费内容,则应用程序崩溃。如果我禁用wifi并强制通过3g一切正常,如果wifi是一个经典的工作wifi,它也能很好地工作。所以我知道这个问题与那些带有登录名和密码的公共wifi热插座相关联。
如何测试Wifi将以何种方式运行到服务器并获取数据?不应该使用主机名实现可行性吗?即使设置了主机名,它看起来也能通过Wifi返回。
谢谢!
Reachability * reach = [Reachability reachabilityWithHostName:@"www.mysoapp.com"];
NetworkStatus status = [reach currentReachabilityStatus];
if (status == NotReachable) {
return NO;
}
else
return YES;
答案 0 :(得分:1)
可达性仅检查第一跳(在前往所请求主机的路上)。这在移动环境中很重要,因为第一跳可以随着设备的移动而动态地改变和下降。
如果要检查所需的主机,经过第一跳,最好的方法是实际尝试连接到该主机,并发送和接收网络数据包(例如您应用的常规网络流量)。然后让应用程序向用户提供选项,如果连接似乎超时,而不是让应用程序锁定或崩溃。 Apple有时会对后者进行测试,作为其应用审核流程的一部分,并使用失败(如果网络路由中断则崩溃或锁定)作为拒绝应用的理由。