我已将Apple的Reachability样本合并到我自己的项目中,所以我知道我是否有网络连接 - 如果我没有网络连接,我不打算发送和请求。我决定使用状态通知实现,因为在后台更新可更新性并且当前结果立即可用,而不是在我想建立网络连接时启动同步请求,这似乎更容易。

我的问题是我在EDGE网络上开始得到假阴性 - 手机有连接,但应用认为情况并非如此。我的理解是你在EDGE连接时没有得到通知,所以我的假设是我在某些时候丢失并重新获得连接。重新启动应用程序通常足以查看网络连接。

这不是一个最佳解决方案,所以我想知道是否有其他人遇到过这个问题并对解决方案有任何想法。

(我不知道这是否也适用于3G;我正在运行第一代iPhone)。

有帮助吗?

解决方案

对于我来说,可检测性通知对于检测Wi-Fi似乎也不可靠。所以我只是使用轮询。每隔5秒检查似乎没有任何伤害。

- (void) checkReachability {
    BOOL connected = ([[Reachability sharedReachability] localWiFiConnectionStatus] == ReachableViaWiFiNetwork);

    // Do something...

    [self performSelector:@selector(checkReachability) withObject:nil afterDelay:5.0];
}

其他提示

网上有一个很好的可达性示例。它非常好用: http://servin.com/iphone/iPhone-Network-Status.html

但你知道,当我尝试以自己的方式使用它时,它只是炸弹。

尝试使用以下方法实现它:

NSString *sCellNetwork;     
 NSString *sNetworkReachable;  

if (flags & kSCNetworkFlagsReachable || flags & kSCNetworkReachabilityFlagsIsWWAN)

{do it} 

 else {
   Network fail alert; 
}
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top