我在可达性类和 VPN 或公共(public)互联网网关方面遇到了一些小问题。
如果 iPhone 通过某些 VPN 或付费内容连接到公共(public) Wifi,则应用程序崩溃。如果我禁用 wifi 并强制通过 3g,一切都工作正常,如果 wifi 是经典的工作 wifi,它也工作得很好。所以我知道问题与那些带有登录名和密码的公共(public) WiFi 热点有关。
如何测试 Wifi 是否能够连接到服务器并取回数据?主机名的可达性不应该解决这个问题吗?看起来即使设置了主机名,它也会返回reachableviaWifi。
谢谢!
Reachability * reach = [Reachability reachabilityWithHostName:@"www.mysoapp.com"];
NetworkStatus status = [reach currentReachabilityStatus];
if (status == NotReachable) {
return NO;
}
else
return YES;
最佳答案
可达性仅检查第一跳(在到达请求主机的途中)。这在移动环境中很重要,因为第一跳可能会随着设备移动而动态更改和丢弃。
如果您想一直检查到所需主机(经过第一跳),最好的方法是实际尝试连接到该主机,并发送和接收网络数据包(例如您应用程序的常规网络流量)。然后,如果连接似乎超时,则让应用程序向用户提供选项,而不是让应用程序锁定或崩溃。苹果有时会在应用程序审核过程中对后者进行测试,并使用失败(如果网络路由中断则崩溃或锁定)作为拒绝应用程序的理由。
关于iphone - iOS 对 vpn 上的 wifi 的可达性帮助不大,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13325129/