2013-03-18 32 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