0

我在类可达性和 vpn 或公共互联网网关方面遇到了一点问题。

如果 iPhone 通过一些 vpn 连接到公共 Wifi 或付费应用程序崩溃。如果我禁用 wifi 并强制通过 3g 一切正常,如果 wifi 是经典的工作 wifi,它也可以正常工作。所以我知道问题与那些带有登录名和密码的公共wifi热点有关。

我如何测试 Wifi 是否可以到达服务器并取回数据?主机名的可达性不应该解决问题吗?看起来即使设置了主机名,它也会返回reachableviaWifi。

谢谢!

Reachability * reach = [Reachability reachabilityWithHostName:@"www.mysoapp.com"];

NetworkStatus status = [reach currentReachabilityStatus];

if (status == NotReachable) {

    return NO;
}
else
    return YES;
4

1 回答 1

1

可达性只检查第一跳(在去请求主机的路上)。这在移动环境中很重要,因为第一跳可以随着设备移动而动态变化和丢弃。

如果您想一直检查到所需主机,经过第一跳,最好的方法是实际尝试连接到该主机,并发送和接收网络数据包(例如,您的应用程序的常规网络流量)。然后让应用程序在连接似乎超时时向用户提供选项,而不是让应用程序锁定或崩溃。Apple 有时会在其应用程序审查过程中测试后者,并使用失败(如果网络路由中断,则崩溃或锁定)作为拒绝应用程序的理由。

于 2012-11-10T21:34:29.853 回答