IOS 定位之判断是否打开wifi

最近在做一个打开车类软件,当然打车软件离不开地图了,地图定位基本上都是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 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,246评论 4 61
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,422评论 25 708
  • 往年的感恩节都是白过,因为找不出想感恩的人,哪怕自己。直到今年,开始有了想感恩的感觉。 我很清楚,缘起是儿子,因为...
    美丽无敌lion教主阅读 359评论 0 1
  • 日期2017年6月23 星期 五 紧张心情 欣赏自己:很高兴迈出了第一步来到此次的开心大团队的首期特训营,我要通...
    金瑞乐阅读 219评论 0 0
  • 人生之所以不同主要来自两个方面,一个是成长的环境不同,一个就是习惯的不同。成长的环境是我们不能选择的,就像说的我们...
    瀞知阅读 237评论 0 0