iphone - iOS 对 vpn 上的 wifi 的可达性帮助不大

标签 iphone objective-c ios reachability

我在可达性类和 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/

相关文章:

ios - 为 ios 中的不同 View Controller 设置不同的标签栏外观

ios - 构建 iOS owncloud

ios - 使用 NSDictionary 对 UITableview 中的数据进行排序

ios - 如何只更新 UITableViewCell 的一个元素?

c++ - 自定义字符串文字

ios - 如何在基于 iOS Cordova 的应用程序中的 onDeviceReady 函数后加载 map ?

ios - CoreBluetooth 从不调用 iPhone 5S 上的发现服务

ios - 如何在 IOS 7 的 UISearchBar 中更改位置或隐藏放大镜图标?

iphone - 在iPhone中编译并执行C程序

iphone - 我想要 iLBC 格式,但似乎只能录制 IMA4 格式的音频