美文网首页good
IOS 定位之判断是否打开wifi

IOS 定位之判断是否打开wifi

作者: leonardni | 来源:发表于2017-08-23 14:31 被阅读195次

    最近在做一个打开车类软件,当然打车软件离不开地图了,地图定位基本上都是WiFI+基站,所以把WiFi打开定位会更准备,需要判断wifi开关是否打开。其代码:

    WLDeviceStateInfo.h
    #import <Foundation/Foundation.h>
    
    @interface WLDeviceStateInfo : NSObject
    /**
     *  WiFi开关是否打开
     *
     *  @return 状态
     */
    + (BOOL)isWiFiEnabled;
    @end
    
    WLDeviceStateInfo.m
    #import <ifaddrs.h>
    #import <net/if.h>
    #import <SystemConfiguration/CaptiveNetwork.h>
    @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或者是未知�网络,而并不能判断WiFi硬件开关的打开。使用上面的方法判断WiFi硬件开关是否打开。

    相关文章

      网友评论

        本文标题:IOS 定位之判断是否打开wifi

        本文链接:https://www.haomeiwen.com/subject/xobddxtx.html