검색했지만 비슷한 질문을 볼 수 없습니다.인터넷에 연결되어 있어도 도달 가능성이 실패하는 경우가 있습니다.
도달 가능성 예제에 따라 인터넷 연결을 확인하는 방법이 추가되었습니다. 대부분의 경우 작동하지만, iPhone에 설치하면 인터넷 연결 (3G/EDGE - WiFi가 정상적인 경우에만)을하더라도 상당히 자주 실패합니다.
기본적으로 아래 코드는 NO를 반환합니다.
다른 앱으로 전환하면 Mail 또는 Safari라고 말하고 연결 한 다음 앱으로 다시 전환하면 코드에 인터넷에 연결할 수 있다고 표시됩니다. 그것이 '찌르기'가 필요한 것 같아요.
누구나 전에 본적이 있습니까? 어떤 아이디어? 당신이 애플의 예제 코드에서 몇 가지 기본적인 접근 가능성 코드를 제거 것 같은
많은 감사 제임스
+ (BOOL) doWeHaveInternetConnection{
BOOL success;
// google should always be up right?!
const char *host_name = [@"google.com" cStringUsingEncoding:NSASCIIStringEncoding];
SCNetworkReachabilityRef reachability = SCNetworkReachabilityCreateWithName(NULL,
host_name);
SCNetworkReachabilityFlags flags;
success = SCNetworkReachabilityGetFlags(reachability, &flags);
BOOL isAvailable = success && (flags & kSCNetworkFlagsReachable) && !(flags & kSCNetworkFlagsConnectionRequired);
if (isAvailable) {
NSLog(@"Google is reachable: %d", flags);
}else{
NSLog(@"Google is unreachable");
}
return isAvailable;
}
사과, 나는 약간의 멍청하다. 예제 Reachability 클래스를 프로젝트에 추가했지만 컴파일 할 수 없습니다. \t 도달 범위 * hostReach = [[reachability reachabilityWithHostName : @ "www.apple.com"] 유지]; 작동하지 않습니다. reachabilityWithHostName 메서드를 찾을 수 없습니다. 나는이 작품 ... – stoutyhk
을 미세 조정하겠습니다 : + (BOOL) doWeHaveInternetConnection2 { \t \t을 경우 ([[도달 가능성 sharedReachability] internetConnectionStatus] == NotReachable) { \t \t 반환 NO; \t} \t else \t { \t \t return YES; \t} \t } – stoutyhk
코드는 연결된 상태에서 항상 "NotConnected"를 제공합니다. 일단 "reachabilityChanged"메소드가 실행되면 올바른 상태가됩니다.그래서 첫 번째 위치에서 올바른 상태를 얻는 방법? – Nnp