在应用启动/恢复时检测在线状态 - 网络可能会启动延迟?

时间:2013-03-18 17:48:54

标签: ios reachability

我想在每次应用程序到达前台时执行可访问性检查,以警告用户远程数据可能已过时。我可以依靠这样一个事实,即3G或Wi-Fi已经在应用启动时正确初始化了吗?或者我应该延迟可达性检查以避免“误报”。如果我应该延迟它,那么什么是足够的延迟间隔?

也许甚至有更推荐的方法?

2 个答案:

答案 0 :(得分:3)

请务必先尝试连接。只有在失败时才应使用可达性来确定您是否处于脱机状态,并确定何时应自动重试。

尝试连接时,可能会以检查网络的方式重新激活网络。

然而,听取Reachability通知网络已经上线并再次尝试(假设您还没有尝试过)是完全合适的。

要明确:

  • 即使Reachability说它不可用,访问网络也可能将其唤醒,所以试试吧。
  • 尝试失败后,Reachability应该告诉您网络是否可用。 (不要完全信任它,但使用它来自定义错误消息。)
  • 可达性会因其他原因检测到网络被唤醒,因此在收到Reachability的通知后再试一次。
  • 不要忽视令人难以置信的复杂移动网络,并尽可能少做假设。

答案 1 :(得分:0)

  

“每次我的应用程序到达前台时,我都想执行可访问性检查...”

进行可访问性检查viewDidAppear:

-(void)viewDidAppear:(BOOL)animated {
    // reachability check
}

iOS Developer Library上的可访问性:http://developer.apple.com/library/ios/#samplecode/Reachability/Introduction/Intro.html