IOS 포지셔닝 와이파이 사용 여부 판단

1729 단어
최근에 자동차 소프트웨어를 하나 만들었는데 택시 소프트웨어는 지도와 떨어질 수 없다. 지도 포지셔닝은 기본적으로 와이파이+기지국이기 때문에 와이파이를 켜면 포지셔닝을 더욱 준비할 수 있고 와이파이 스위치가 켜졌는지 아닌지를 판단해야 한다.코드:
WLDeviceStateInfo.h
#import 

@interface WLDeviceStateInfo : NSObject
/**
 *  WiFi      
 *
 *  @return   
 */
+ (BOOL)isWiFiEnabled;
@end

WLDeviceStateInfo.m
#import 
#import 
#import 
@implementation WLDeviceStateInfo
+ (BOOL)isWiFiEnabled {
    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]];
            }
        }
    }
    return [cset countForObject:@"awdl0"] > 1 ? YES : NO;
}
@end

이에 따라 적절한 UI 프롬프트가 표시됩니다.
    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(3 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
  BOOL isWIFI = [self isWiFiEnabled];
  if (!isWIFI) {//  WiFi    ,      
     static dispatch_once_t onceToken;
     dispatch_once(&onceToken, ^{
     //       AlertView
     [self showWIFTRemendWithTittle:@"  wifi       ,         。" Tittle1:@"      ?" okTittle:@"  " isHide:NO];

            });
        }
    });

AFN을 사용하는 AFNetworkReachabilityManager는 네트워크 상태를 모니터링할 뿐이다. 다시 말하면 검측에 사용되는 네트워크가 모바일 네트워크, 와이파이 또는 미지의 윙 네트워크이고 와이파이 하드웨어 스위치의 열기를 판단할 수 없다.위의 방법을 사용하여 WiFi 하드웨어 스위치가 켜져 있는지 확인합니다.

좋은 웹페이지 즐겨찾기