确定何时在iPhone上出现退出后EDGE连接回来
问题描述:
我已将Apple的Reachability示例合并到我自己的项目中,以便知道我是否具有网络连接 - 如果我没有网络连接,不要打扰发送和请求。我决定使用状态通知实现,因为在后台更新可用性并立即获得当前结果似乎更容易,而不是在需要建立网络连接时启动同步请求。确定何时在iPhone上出现退出后EDGE连接回来
我的问题是,我开始在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;
}
感谢我打算今天结合可达性,所以你可能救了我的未来的自己一些时间:) – 2008-10-08 07:19:19