2013-03-18 33 views

回答

3

总是尝试先做好连接。只有在失败时,才能使用Reachability来确定您是否处于脱机状态,并确定何时应该自动重试。

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

它是,但是,完全适合听可达性的通知,网络已联机,并然后再次尝试(假设你不是已经开始尝试)。

要明确:

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

重新激活网络是否真的取决于应用程序网络调用?我认为这将独立完成,并通过唤醒手机(解锁)触发。 – 2013-03-18 18:27:40

+1

如果手机没有看到任何其他原因来唤醒数据网络,那么是的,绝对是。您应该观看WWDC 2012会话706. – 2013-03-18 18:38:51

+0

谢谢...一个很好的精确答案... – 2013-03-18 18:41:29

0

“我要执行可达每一个我的应用程序涉及到前台时检查......”

把你的可达性检查viewDidAppear:

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

可达上iOS开发库: http://developer.apple.com/library/ios/#samplecode/Reachability/Introduction/Intro.html

+0

好主意,但我不想把它在每一个viewDidAppear可能的,但要在应用程序的简历触发/启动。 – 2013-03-18 18:23:24

+0

你可以看看使用UIApplicationDelegate方法applicationWillEnterForeground,applicationWillResignActive,applicationDidEnterBackground和applicationDidBecomeActive。请参阅:http://developer.apple.com/library/ios/#documentation/uikit/reference/UIApplicationDelegate_Protocol/Reference/Reference.html – rog 2013-03-18 18:34:37

+0

我知道,我知道...我的问题不是在哪里检查它,但我怎么可以肯定网络已经重新启动了。 – 2013-03-18 18:40:02