2011-02-03 9 views
4

사과 도달 가능성 코드를 사용하는 앱이 있습니다. 앱에서 탭 아웃하여 비행기 모드를 켜고 앱으로 돌아 가면 연결이 가능하지 않다는 메시지가 올바르게 표시됩니다. 비행기 모드로 돌아가서 앱으로 돌아 가면 아무런 연결도 사용할 수 없다는 메시지가 표시됩니다.SCNetworkReachabilityGetFlags는 무선을 사용할 수있는 경우에도 0을 반환합니다.

NetworkStatus status = kNotReachable; 
if (SCNetworkReachabilityGetFlags(reachabilityRef, &flags)) 
{ 
    status = [self networkStatusForFlags: flags]; 
    return status; 
} 

나는 내부의 문 및 플래그는 0 (kSCNetworkReachabilityFlagsTransientConnection를)되고 끝나는 경우를 얻을 : 특정 문제의 코드는 다음입니다. 그게 정확히 무슨 뜻입니까? 누구든지이 경험을 했습니까? 해결 방법이나 해결 방법을 알고있는 사람이 있습니까? 몇 시간 동안 놀았습니까?

+0

kSCNetworkReachabilityFlagsTransientConnection의 값은 1 << 0 (1)입니다. 플래그가 설정되지 않았 으면 0이됩니다. – jhabbott

+0

@PsychoDad 어떻게 문제가 해결 되었습니까? – Sandeep

+0

@Sandeep 문제는 정말 나쁜 기업 WiFi 때문인 것 같습니다. 나는 1 년 넘게 문제를 보지 못했다. – jjxtra

답변

10

호스트 이름에 프로토콜 지정자 (예 : hostname 대신 http://hostname)를 입력하면이 문제가 발생한다는 것을 발견했습니다. 이 문제가 해결되는지 보려면 호스트 이름 만 지정하십시오.

+1

이 문제가 해결되었습니다. UIWebView에서로드 할 웹 사이트의 Reachability를 확인했습니다. Reachability 목적으로 웹 사이트 도메인을 사용하지만, UIWebView 로딩 목적을 위해 프로토콜 앞에 붙어있는 동일한 도메인을 사용하면 모두 정상적으로 작동합니다. 그것이 이전에 효과가 있었던 이유는 확실하지 않습니다. iOS5.1.1 업데이트 이후 나에게 더 까다로운 것으로 보입니다. 좋은 조언 @jhabbott! – idStar

+0

호스트 이름 만 사용하고 있으며 항상 사용하고 있습니다. 진짜 문제는 정말로 나쁜 WiFi라고 생각합니다. – jjxtra

+1

이것이 일부 사람들의 문제를 해결 한 이래로 나는이 대답을 받아 들일 것입니다. – jjxtra

0

플래그가 수신되어 표시되는 경우 0으로 끝나면 비행기 모드가 켜져 있음을 나타냅니다. 그러나이 검사 결과는 최소한 잠시 동안 캐시 된 것처럼 보입니다. 시도해보십시오. 앱을 종료하고 비행기 모드를 해제하고 모바일 사파리에서 사이트를 방문한 다음 앱으로 돌아갑니다. 이로 인해 캐시가 무효화 될 수 있습니다.

1

SCNetworkReachabilityGetFlags를 호출 한 후에도 네트워크 상태 캐싱을 피하기 위해 CFRelease를 호출하는 것이 중요합니다. 아래의 구현을 참조하십시오.

SCNetworkReachabilityRef reachability = SCNetworkReachabilityCreateWithName (NULL, host_name);

SCNetworkReachabilityFlags flags; 
success = SCNetworkReachabilityGetFlags(reachability, &flags); 
bool isAvailable = success && (flags & kSCNetworkFlagsReachable) && 
!(flags & kSCNetworkFlagsConnectionRequired); 
CFRelease(reachability); 
if (isAvailable) { 
    NSLog(@"Host is reachable: %d", flags); 
    return true; 
}else{ 
    NSLog(@"Host is unreachable"); 
    return false; 
} 
+1

이 대답은 내 문제를 해결했습니다. 애플은 실제로 이것들을 그들의 문서에서 언급해야한다. – Chris

0

동일한 문제가 있었지만 시뮬레이터에서 테스트했을 때만 발생했습니다. 나는 2 일 동안 미친 듯이 보냈다. 그런 다음 기기를 테스트 해 보니 매력적이었다. 이유가 없습니다.

관련 문제