【发布时间】:2011-06-27 23:20:38
【问题描述】:
使用 iphone sdk 3.1.2
我使用以下代码来监控我的应用是否有互联网连接。我需要接收通知或轮询,以便我的应用始终保持最新状态。
hostReach = [[Reachability reachabilityWithHostName: @"www.google.com"] retain];
[hostReach startNotifer];
然后当我收到通知时,我会使用这些功能让我知道网络状态
NetworkStatus netStatus = [hostReach currentReachabilityStatus];
BOOL connectionRequired= [hostReach connectionRequired];
我发现,如果我拔下 Netgear 路由器上的电源线,我的应用程序正确地知道它失去了互联网连接。但是,当我重新插入电源时,我的应用程序虽然从可达性回调中获取通知,但 netStatus 由
返回[hostReach currentReachabilityStatus]
从不等于 ReachableByWifi 这是我想知道互联网是否可用 通过 WiFi 连接)。
即使我每 30 秒有一个计时器可以调用
[hostReach currentReachabilityStatus]
即使路由器已全部启动并且互联网绝对可用,它仍然不会返回 ReachablebyWifi。这是我认为可行的最坏情况。
另一方面,如果我只拔掉电话线连接并让路由器保持开机状态(即 wifi 信号仍然存在0,我的应用不会收到互联网连接断开的通知。
如何克服这些问题?
【问题讨论】:
标签: iphone