ios13 获取wifi信息

iOS13获取Wi-Fi信息步骤
  • 首先开启定位权限


    定位.png
  • Xcode开启WIFi权限


    image.png
image.png
  • 手动请求定位权限
   NSString* phoneVersion = [[UIDevice currentDevice] systemVersion];
    CGFloat version = [phoneVersion floatValue];
//     如果是iOS13 未开启地理位置权限 需要提示一下
    if ([CLLocationManager authorizationStatus] == kCLAuthorizationStatusNotDetermined && version >= 13) {
        self.locationManager = [[CLLocationManager alloc] init];
        [self.locationManager requestWhenInUseAuthorization];
    }
  • 最后获取Wi-Fi信息
    首先导入系统框架 #import <SystemConfiguration/CaptiveNetwork.h>
- (void)getWifi {
       id info = nil;
           NSArray *ifs = (__bridge_transfer id)CNCopySupportedInterfaces();
            for (NSString *ifnam in ifs) {
                info = (__bridge_transfer id)CNCopyCurrentNetworkInfo((__bridge CFStringRef)ifnam);
                NSString *str = info[@"SSID"];
                NSString *str2 = info[@"BSSID"];
                NSString *str3 = [[ NSString alloc] initWithData:info[@"SSIDDATA"] encoding:NSUTF8StringEncoding];
                NSLog(@"%@",info);

       }
}

总结:

从 iOS 4.1 开始,Apple 就提供了「CNCopyCurrentNetworkInfo」这项函数,调用时将会得到 SSID 与 BSSID; iOS 12 开始,调用该函数将默认返回 nil,需要在 Xcode 项目中开启「Access WiFi Information」后才会返回正确的值。这个功能需要在开发者页面的 App IDs 中激活才能使用。
而在 iOS 13 中,使用这项函数的条件将变得更为严格。根据 WWDC19 Session 713(https://developer.apple.com/documentation/systemconfiguration/1614126-cncopycurrentnetworkinfo)的说明,在 iOS 13 中除了开启「Access WiFi Information」以外,App 还需要符合下列三项条件中的至少一项才会返回正确的 CNCopyCurrentNetworkInfo 函数值,否则仍然会返回 nil :

- The app uses Core Location, and has the user’s authorization to use location information.
- The app uses the NEHotspotConfiguration API to configure the current Wi-Fi network.
- The app has active VPN configurations installed.

即:
1、使用定位功能,并且获得了定位服务权限的应用;
2、使用NEHotspotConfiguration配置过的Wi-Fi;
3、应用程序已安装有效的VPN配置;

这里的 NEHotspotConfiguration 是在 iOS 11 中新加入的一个 class,它的特性简单来说是App 将已知 Wi-Fi 的 SSID、密码等信息加入到 App 内的配置文件后,这个 App 可以直接在应用内完成连接至该 Wi-Fi 网路的操作,不需要再跳转至系统偏好设置。简单理解就是:如果当前设备所连接的Wi-Fi不是通过我们的app使用NEHotspotConfiguration来配置的,那么也同样没法使用NEHotspotConfiguration来获取当前Wi-Fi的信息;

原文链接:https://blog.csdn.net/xuanweihong_ios/article/details/98947025

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 身在异乡的某个片刻,馋嘴的我会突然怀念一种久违的美食——煨红薯。 这道美食, 除了让我果腹、让我打开味蕾、让我欣赏...
    毅屹阅读 1,433评论 0 7
  • 说是序言,其实更像是随笔,向来对生活得过且过,贪图享乐然而也并未真的乐到什么的我,养成了马大哈的极致状态,对周...
    我是初四阅读 153评论 0 0
  • 产品小白记录学习的过程。 较为系统的学习是从《手把手》开始的。第一天听了五节课,主要讲的是课程介绍和个人的互联网观...
    七喜少爷阅读 279评论 0 0
  • 中信书院阅读 562评论 0 0
  • 孩子无法决定他是谁 杨老师开门见山先从一个案例开始讲起“孩子离开学校,妈妈通过不断地学习,不断的调整亲子关系”近一...
    牟蓉牟昱老妈阅读 179评论 0 0