인터넷 연결이 가능한지 확인해야하는 iOS 앱을 개발 중이며 여러 ViewController 클래스가 있습니다. 네트워크 연결을 확인하려면 (Reachability library by Tony Million)을 사용하고 있습니다.AppDelegate의 Reachibility 블록을 사용하여 앱 전체의 연결을 확인하십시오.
내가 지금하고있는 일이 여기에 있습니다. 연결 검사를 필요로하는의 ViewController 클래스에서 나는 ....있는 viewDidLoad에서
Reachability* reach = [Reachability reachabilityWithHostname:@"www.google.com"];
reach.reachableBlock = ^(Reachability*reach)
{
NSLog(@"REACHABLE!"); // Load offline data from core data
};
reach.unreachableBlock = ^(Reachability*reach)
{
NSLog(@"UNREACHABLE!"); // Fetch data from Rest Api
};
[reach startNotifier];
을이 코드 블록을 사용하고 그러나 네트워크 상태 변화와 내 애플 리케이션이의 ViewController에있을 때 가끔 가져 오는처럼, 예상치 못한 행동을 데 API의 데이터가 반복적으로 반복됩니다. 나는 내가 코드에 잘못을했는지 확신 할 수 없으므로 전문가의 의견을 기다리고 있습니다.
어쨌든이 문제를 해결하고 코드를보다 깨끗하고 안정하게 만들 수있는 대체 솔루션을 찾고 있습니다. 나는 그것이 좋은 접근인지 전문가들로부터 알고 싶다. isNetworkConnected라는 AppDelegate에 BOOL Variable을 유지하고 싶습니다. 그런 다음 - (BOOL) 응용 프로그램 : (UIApplication *) 응용 프로그램 didFinishLaunchingWithOptions : (NSDictionary *) launchOptions, 위의 코드를 실행하고 그 안에 isNetworkConnected YES/NO 변수를 설정하고 싶습니다. 그래서 코드는
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{
Reachability* reach = [Reachability reachabilityWithHostname:@"www.google.com"];
reach.reachableBlock = ^(Reachability*reach)
{
NSLog(@"REACHABLE!");
isNetworkConnected = YES ;
};
reach.unreachableBlock = ^(Reachability*reach)
{
NSLog(@"UNREACHABLE!");
isNetworkConnected = NO ;
};
[reach startNotifier];
// rest codes....
}
그런 내의 ViewController에, 나는 ...이처럼의
if(appdelegate.isNetworkConnected == YES){
// Fetch data from api
} else{
// Load offline data from Core data
}
을 다하겠습니다 ... 이렇게 될 것입니다. 나는 나의 생각이 좋은지 나쁜지를 알고 싶다. 어떤 실수를하고 있거나 더 좋은 제안이 있다면 매우 감사 할 것이다. 미리 감사드립니다.
이 답변을 확인하십시오. 모든 viewController에서 연결 가능성을 확인할 수 있습니다. http://stackoverflow.com/questions/1083701/how-to-check-for-an-active-internet-connection-on-iphone-sdk – nsgulliver
감사합니다. 이전에 이미 살펴 보았습니다. 그리고 나는 거기에서 가장 득표 한 대답에서 위의 해결책을 사용하고 있습니다. 나는 단지 모든 가변적 인 블록을 모든 ViewController에서 사용할 필요가 없도록 연결 변수 Gloabal을 앱에서 만들려고 노력하고 있습니다. – ayon