2008-10-08 14 views
10

我已將Apple的Reachability示例合併到我自己的項目中,以便知道我是否具有網絡連接 - 如果我沒有網絡連接,不要打擾發送和請求。我決定使用狀態通知實現,因爲在後臺更新可用性並立即獲得當前結果似乎更容易,而不是在需要建立網絡連接時啓動同步請求。確定何時在iPhone上出現退出後EDGE連接回來

我的問題是,我開始在EDGE網絡上獲得漏報 - 手機已連接,但應用程序認爲情況並非如此。我的理解是你在EDGE連接時沒有收到通知,所以我的假設是我丟失了並在某個時候恢復了連接。重新啓動應用通常足以查看網絡連接。

這不是一個最佳的解決方案,所以我想知道是否有其他人遇到這個問題,並對解決方案有任何想法。

(我不知道這是否也適用於3G;我正在運行第一代iPhone)。

回答

14

爲了檢測Wi-Fi,可達性通知對我來說似乎並不可靠。所以我只是使用輪詢。每5秒檢查一次似乎沒有任何傷害。

- (void) checkReachability { 
    BOOL connected = ([[Reachability sharedReachability] localWiFiConnectionStatus] == ReachableViaWiFiNetwork); 

    // Do something... 

    [self performSelector:@selector(checkReachability) withObject:nil afterDelay:5.0]; 
} 
+0

感謝我打算今天結合可達性,所以你可能救了我的未來的自己一些時間:) – 2008-10-08 07:19:19

1

在網絡上有一個很好的可達性示例。它工作得非常好: http://servin.com/iphone/iPhone-Network-Status.html

但是你看,當我嘗試以我自己的方式使用它時,它只是炸彈。

嘗試使用來實現它:

NSString *sCellNetwork;  
NSString *sNetworkReachable; 

if (flags & kSCNetworkFlagsReachable || flags & kSCNetworkReachabilityFlagsIsWWAN) 

{do it} 

else { 
    Network fail alert; 
}