내 앱이 시작되면 즉각적인 인터넷 연결이 필요하기 때문에 연결 가능성을 확인합니다. 내 문제는 비록 Reachability가 설정된 직후에 즉, NetworkStatus
에 대한 즉각적인 확인이없는 것으로 보입니다. 즉, 연결 여부를 확인하고 실제로 연결되었는지 여부에 관계없이 연결이 있는지 여부를 반환합니다. WiFi/3G 또는 라디오를 껐습니다. 내가 잘못 뭐하는 거지도달 가능성 (2.0.3ddg)에 대한 도움이 필요합니다.
..
? 바로 인터넷 연결을 확인하지 않는 이유는 무엇입니까?
- (void)applicationDidFinishLaunching:(UIApplication *)application {
NetworkStatus netStatus = [hostReach currentReachabilityStatus];
if (netStatus == NotReachable) {
ErrorViewController *errorViewController = [[ErrorViewController alloc] initWithNibName:@"ErrorView" bundle:[NSBundle mainBundle]];
[tabBarController.view removeFromSuperview];
[window addSubview:[errorViewController view]];
return;
}
}
-(void)setupReachability {
[[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(reachabilityChanged:) name:kReachabilityChangedNotification object: nil];
hostReach = [[Reachability reachabilityWithHostName:@"www.google.com"] retain];
[hostReach startNotifier];
}
-(void)reachabilityChanged:(NSNotification *)notification {
Reachability* curReach = [notification object];
NSParameterAssert([curReach isKindOfClass: [Reachability class]]);
NetworkStatus netStatus = [curReach currentReachabilityStatus];
BOOL connectionRequired = [curReach connectionRequired];
switch (netStatus)
{
case NotReachable:
{
[[NSUserDefaults standardUserDefaults] setInteger:kNOTREACHABLE forKey:kREACHABILITYSTATUS];
NSLog(@"NotReachable");
connectionRequired = NO;
break;
}
case ReachableViaWWAN:
{
[[NSUserDefaults standardUserDefaults] setInteger:kREACHABLEVIAWWAN forKey:kREACHABILITYSTATUS];
NSLog(@"ReachableViaWWAN");
break;
}
case ReachableViaWiFi:
{
[[NSUserDefaults standardUserDefaults] setInteger:kNOTREACHABLE forKey:kREACHABILITYSTATUS];
NSLog(@"ReachableViaWiFi");
break;
}
}
}
나는 애플이 도달 가능성을 비행 전 점검이라고 말한 확인을 추가 할 수있다. 가능한 한 빨리 작동하도록하려면 연결 상태에 대한 알림을 실행 가능으로 설정해야하는 앱 실행 즉시 일부 확인 URL을 열어보십시오. –
"isConnectionRequired"와 같은 것을 설정할 수 없으므로 네트워크 검사가 필요합니까? – runmad