2014-10-05 3 views
3

iOS에서 프로그래밍 방식으로 WiFi 상태 (사용/사용 안함)를 쿼리 할 수 ​​있습니까? WiFi가 활성화되어 있고 장치가 네트워크에 연결되어 있지 않으면 쿼리는 true를 반환해야합니다.iOS : WiFi 상태를 쿼리하는 방법

편집 : 나는 Reachability 클래스에서 제공하는 기능을 알고 있으며 사용 가능한 상태이지만 WIFI의 연결 상태를 인식하지 못한다는 것을 알고 있습니다. 나는. 다음 코드는 NetworkStatusNotReachable을 반환합니다. 이는 내가 필요로하지 않습니다.

Reachability* r = [Reachability reachabilityForLocalWiFi]; 
NetworkStatus ns = [r currentReachabilityStatus]; 
+2

도달 가능성을 사용합니다. Apple 샘플 코드는 다양한 유형의 네트워크 연결을 모니터링하기위한 기본적인 사용 사례를 설명합니다. https://developer.apple.com/library/IOs/samplecode/Reachability/Listings/Reachability_Reachability_h.html –

+1

수정 사항을 올바르게 이해하고있는 경우 Wi-Fi가 명시 적으로 사용 설정되었는지 또는 사용 중지되었는지 여부를 쿼리 할 수있는 방법이 없습니다. 사용자. 도달 가능성은 특정 방법 (예 : Wifi)을 통해 네트워크에 "도달 할 수 있는지"여부를 판단하지만 실제로 사용자가 실제로 WiFi 안테나를 껐는지 여부를 묻는 방법은 없습니다. –

+0

@ChrisDroukas : 네, 그렇습니다. – Asahi

답변

4

부인 성명 : 다음 솔루션입니다

Reachability *networkReachability = [Reachability reachabilityWithHostName:@"http://google.com]; 
NetworkStatus networkStatus = [networkReachability currentReachabilityStatus]; 
if (networkStatus == ReachableViaWiFi) { 
    //wifi 
} 
+0

awdl0 인터페이스가 Wi-Fi Direct 인터페이스라고 생각하면 Wi-Fi Direct가 사용 가능한지 확인합니다. 예를 들어, iPhone 4에서는 작동하지 않아야합니다. 아무도 확인할 수 있니? –

+0

수정하십시오. iPhone 4/4에서는 위 내용이 작동하지 않습니다. – Asahi

2

Reachability을 사용하면이를 확인할 수 있습니다. 파일 가져 오기, 당신은이 작업을 수행 할 수 있습니다

[Reachability reachabilityForLocalWiFi];

2

당신은 애플이 확인 후 here를 제공하고 그 도달 가능성 클래스를 사용할 수 있습니다 은 강력하지 않으며 AppStore을 전달할 것이라는 보장은 없습니다. 완전한 작업 코드 샘플과 함께 Enigmatic Ape에 대한 자세한 설명은 here입니다.

내가 지금까지 찾을 수 있었던 유일한 실행 가능 솔루션은 getifaddrs 기능을 사용하여 사용 가능한 인터페이스 목록을 요청하고 평가하는 것입니다. WiFi 사용 중지/사용/연결의 경우 목록이 다르게 나타납니다.

NSCountedSet * cset = [NSCountedSet new]; 
struct ifaddrs *interfaces; 

if(! getifaddrs(&interfaces)) { 
    for(struct ifaddrs *interface = interfaces; interface; interface = interface->ifa_next) { 
     if ((interface->ifa_flags & IFF_UP) == IFF_UP) { 
      [cset addObject:[NSString stringWithUTF8String:interface->ifa_name]]; 
     } 
    } 
} 

freeifaddrs(interfaces); 

return [cset countForObject:@"awdl0"] > 1 ? WIFI_ON : WIFI_OFF; 
관련 문제