2014-11-09 71 views
2

我在AFNetorking的可達性上有點迷茫,並沒有找到很多好的信息。AFNetworking可達性iOS

我有一個應用程序登錄到Web API。每個VC以某種方式連接到API,因此每個VC都需要具有網絡訪問權限。我使用AFHTTPSessionManager的子類來發出網絡請求。

我對將代碼放在哪裏感到困惑 - 它只是appDelegate還是它在每個VC?

這段代碼有什麼用?

[[AFNetworkReachabilityManager sharedManager] setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) { 
    NSLog(@"Reachability: %@", AFStringFromNetworkReachabilityStatus(status)); 
}]; 

你在哪裏使用這些方法,它們與上面的代碼有什麼關係?

-startMonitoring 
-stopMonitoring 

回答

12

AFNetworking的-startMonitoring方法來使你的AFNetworkReachabilityManager開始監控網絡連接。如果你不打電話-startMonitoring,你的setReachabilityStatusChangeBlock永遠不會被調用(不管你放在哪裏),因爲AFNetworking不監控你的連接。

正如您大概假設的那樣,-stopMonitoring-startMonitoring完全相反 - 它會阻止管理器檢查網絡連接。我通常不會在我的應用程序中使用此方法,但如果您的應用程序不需要某個部分的網絡連接,請隨時撥打它(只需確保您在需要時再次監視網絡) 。

只要網絡狀態發生變化,就會調用setReachabilityStatusChangeBlock。當網絡發生變化時,您可以將其放在任何地方進行更改。例如,當網絡狀態發生變化時,將其放入應用程序委託併發出NSNotification,以便任何觀察控制器觀察通知都能夠做出適當的反應。

您也可以手動檢查,看看是否網絡在線(只要-startMonitoring被稱爲和AFNetworking被監控網絡)使用這樣的事情:

if ([[AFNetworkReachabilityManager sharedManager] isReachable]) { 
    NSLog(@"Online"); 
} 

你可以閱讀更多的AFNetworking的official documentation on GitHub