Apple에서 제공 한 샘플 코드를 사용하여 도달 가능성을 모니터링하고 있지만 여전히 두통을 유발합니다. iOS 5, btw에서 실행 중입니다. iOS 도달 가능성 - 느리고 누락 된 알림 문제
//Called by Reachability whenever status changes.
- (void) reachabilityChanged: (NSNotification *) note
{
NSLog (@"reachabilityChanged");
[self updateConnectionStatus];
}
잊고하지
// Initialise
hostReach = [[Reachability reachabilityForInternetConnection] retain];
[hostReach startNotifier];
하고, 또한
-(void) updateConnectionStatus
{
// Check Internet connectivity
NetworkStatus netStatus = [hostReach currentReachabilityStatus];
if(netStatus == NotReachable)
{
NSLog (@"updateConnectionStatus: network not reachable!");
[self setNetworkAvailable:NO];
}
else
{
NSLog (@"updateConnectionStatus: network reachable!");
[self setNetworkAvailable:YES];
}
}
하고,
- (void)applicationWillEnterForeground:(UIApplication *)application
{
NSLog (@"applicationWillEnterForeground");
[self updateConnectionStatus];
}
나는이 잠시 사용하고 있지만, 처리 걸려 앱 내에서 단순한 방식으로 도달 가능성 예를 들어 네트워크를 사용할 수없는 경우 캐시 된 데이터를 사용합니다.
첫 번째 문제는 앱이 포 그라운드로 들어간 후 약 10 초가 지나면 상태 변경 알림이 도착하지 않으며 위의 그림과 같이 앱이 포 그라운드로 다시 들어가면 수동 확인까지됩니다) 잘못된 결과를 반환합니다. 콘솔에서
나는 모두 시도2012-02-01 13:31:02.566 myapp[9807:707] applicationWillEnterForeground
2012-02-01 13:31:02.632 myapp[9807:707] Reachability Flag Status: -- ------- networkStatusForFlags
2012-02-01 13:31:02.634 myapp[9807:707] updateConnectionStatus: network not reachable!
2012-02-01 13:31:02.660 myapp[9807:707] reachabilityChanged
2012-02-01 13:31:02.662 myapp[9807:707] Reachability Flag Status: WR t----l- networkStatusForFlags
2012-02-01 13:31:02.663 myapp[9807:707] updateConnectionStatus: network reachable!
,
hostReach = [[Reachability reachabilityWithHostName:@"www.apple.com"] retain];
하고,
hostReach = [[Reachability reachabilityForInternetConnection] retain];
이 의미를이 예제 로그를 참조하는 네트워크에 연결할 수 있다면 때 응용 프로그램 마지막 실행, 네트워크 연결로 앱이 다시 실행되면 복구가 덜 효율적입니다.
이 지연은 불가피한가요?
내 다른 문제는 내 앱이 때때로 이러한 알림을받지 못하는 것입니다. 이것은 내 애플 리케이션이 잠시 동안 배경에 있었을 때 일어날 것 같다 - 나는 이것을 의지대로 재현 할 수는 없지만. 나는 응용 프로그램에 돌아올 때
그러나 때때로, 그것은 마지막으로 수신 한 통지는 네트워크에 연결할 수 있었고, 그것은 분명히
다른 사람이 그런 건 본 :-(네트워크에 연결할 알림을보고 결코했다?
감사합니다.