使用iphone sdk 3.1.2
我使用以下代码来监控我的应用是否具有互联网连接。我需要获得通知或投票,以便我的应用程序始终具有最新状态。
hostReach = [[Reachability reachabilityWithHostName: @"www.google.com"] retain];
[hostReach startNotifer];
然后当我收到通知时,我使用这些功能让我知道网络状态
NetworkStatus netStatus = [hostReach currentReachabilityStatus];
BOOL connectionRequired= [hostReach connectionRequired];
我发现如果我拔下Netgear路由器上的电源线,我的应用程序正确地知道它丢失了它的互联网连接。然而,当我重新插上电源时,我的应用程序虽然从Reachability回调中获得通知,但是由
返回的netStatus[hostReach currentReachabilityStatus]
永远不等于ReachableByWifi,这是我想知道的互联网是否可用 通过WiFI连接)。
即使我每隔30秒就有一个计时器来打电话
[hostReach currentReachabilityStatus]
即使路由器全部启动并且互联网绝对可用,它仍然不会返回ReachablebyWifi。这是我认为最有效的情况。
另一方面,如果我只拔出电话线连接并让路由器保持开机状态(即wifi信号仍然存在,我的应用程序没有得到通知,互联网连接已关闭。
如何解决这些问题?
答案 0 :(得分:1)
几个月前,我发现有人写了一个更好的Reachability实现。您可以在http://blog.ddg.com/?p=24找到它。我的公司在我们的应用程序中使用它,它比Apple样本更强大。
答案 1 :(得分:0)
Reachability
类是开心的,应该被视为示例代码。有人应根据社区的反馈重写整件事。