2014-11-09 6 views
2

나는 AFNetorking의 Reachability에 대해 약간 분실되어 있으며 많은 좋은 정보를 찾지 못했습니다.AFNetworking Reachability iOS

웹 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 네트워크를 모니터링) 당신은 또한 수동으로 확인할 수 있습니다 : 당신은 AFNetworking의 official documentation on GitHub에 대한 자세한 내용을보실 수 있습니다

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

.