我想在每次我的應用程序進入前臺時執行可達性檢查,以警告用戶遠程數據可能已過時。我能否依靠3G或Wi-Fi在應用程序啓動時被正確初始化的事實?或者我應該延遲可達性檢查以避免「誤報」。如果我應該延遲它,那麼延遲時間會有多長?在應用程序啓動/恢復時檢測在線狀態 - 網絡可能啓動延遲?
也許還有一個更推薦的方法?
我想在每次我的應用程序進入前臺時執行可達性檢查,以警告用戶遠程數據可能已過時。我能否依靠3G或Wi-Fi在應用程序啓動時被正確初始化的事實?或者我應該延遲可達性檢查以避免「誤報」。如果我應該延遲它,那麼延遲時間會有多長?在應用程序啓動/恢復時檢測在線狀態 - 網絡可能啓動延遲?
也許還有一個更推薦的方法?
總是嘗試先做好連接。只有在失敗時,才能使用Reachability來確定您是否處於脫機狀態,並確定何時應該自動重試。
嘗試連接可能會以檢查網絡的方式重新激活網絡。
它是,但是,完全適合聽可達性的通知,網絡已聯機,並然後再次嘗試(假設你不是已經開始嘗試)。
要明確:
「我要執行可達每一個我的應用程序涉及到前臺時檢查......」
把你的可達性檢查viewDidAppear:
-(void)viewDidAppear:(BOOL)animated {
// reachability check
}
可達上iOS開發庫: http://developer.apple.com/library/ios/#samplecode/Reachability/Introduction/Intro.html
好主意,但我不想把它在每一個viewDidAppear可能的,但要在應用程序的簡歷觸發/啓動。 – 2013-03-18 18:23:24
你可以看看使用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
我知道,我知道...我的問題不是在哪裏檢查它,但我怎麼可以肯定網絡已經重新啓動了。 – 2013-03-18 18:40:02
重新激活網絡是否真的取決於應用程序網絡調用?我認爲這將獨立完成,並通過喚醒手機(解鎖)觸發。 – 2013-03-18 18:27:40
如果手機沒有看到任何其他原因來喚醒數據網絡,那麼是的,絕對是。您應該觀看WWDC 2012會話706. – 2013-03-18 18:38:51
謝謝...一個很好的精確答案... – 2013-03-18 18:41:29