2014-04-29 3 views
0

잠시 동안 기기를 켜 놓지 않으면 무전기가 전력을 절약하기 위해 잠자기 상태가됩니다. 이 상태에서 연결 가능성을 확인하면 확인중인 호스트가 도달 할 수 없음을 알게됩니다. 어떻게 라디오를 깨울 수 있습니까? 명시 적으로 네트워크 통화를해야합니까? 네트워크에 도달 할 수없는 이유는 라디오가 잠 들어 있음을 감지 할 수 있습니까? iOS의 무선 네트워크 깨우기

기본 검사

나는 (애플의 도달 가능성에서 가져온)이 같은 일을하고 있어요 :

// The setup 
- (id)init 
{ 
    self = [super init]; 
    if (self) 
    { 
     _reachabilityRef = SCNetworkReachabilityCreateWithName(NULL, [@"myserver.example.com" UTF8String]); 
    } 
    return self; 
} 

// The check 
- (BOOL)isReachable 
{ 
    return [self currentReachabilityStatus] != NotReachable; 
} 

// For reference 
- (NetworkStatus)currentReachabilityStatus 
{ 
    NSAssert(_reachabilityRef != NULL, @"currentNetworkStatus called with NULL SCNetworkReachabilityRef"); 
    NetworkStatus returnValue = NotReachable; 
    SCNetworkReachabilityFlags flags; 

    if (SCNetworkReachabilityGetFlags(_reachabilityRef, &flags)) 
    { 
     returnValue = [self networkStatusForFlags:flags]; 
    } 

    return returnValue; 
} 
+0

URL 요청을 시도하면 인터넷 연결이 부족하여 실패합니다. 내 앱을 종료하고 Safari를 열면 인터넷 연결이 복원됩니다. SIM이없고 WiFi 네트워크에 연결된 장치로 테스트하고 있습니다. –

답변

0

당신은 장치의 라디오를 관리하지 않습니다. iOS가 그 일을합니다.

도달 가능성은 인터넷에 연결할 수 있는지 여부에 관계없이 켜고 끌 수있는 라디오가 아닙니다. Wi-Fi가 켜져 있어도 휴대 전화로 연결할 수 있습니다 (또는 휴대 전화를 사용할 수 있어도 Wi-Fi로 쉽게 연결할 수 있음).

대부분의 경우 무선 전력 사용량은 화면의 전력 사용량보다 작습니다. NSURLSessionConfigurationdiscretionary 속성을 가지고 있습니다.이 속성은 운영 체제에 대한 힌트가 될 수 있습니다. 즉,이 요청을 즉시 시작하지 않아도되지만 백그라운드 세션 작업에서는이 속성이 이미 무시되어 전원 절약에 도움이됩니다.

+0

물론 7.0.3의 버그일지도 모르지만 WiFi가 잠자기 상태 일 때 앱에서 요청을하면 기기가 인터넷에 연결되어 있지 않다는 메시지가 나타나지 않습니다. 홈 버튼을 누르고 Safari에 들어가면 WiFi에 다시 연결됩니다. 아마도 Safari가 내부 API를 사용하고 있습니까? –

관련 문제