获取iOS设备WiFi名字和mac地址+iOS12系统获取失败解决

好久没写一些分享了、刚好今天有做到以前的一个项目突然发现iOS12更新后 当初iOS9系统获取wifi的方法不能用了、或者说获取ssid为空。着急用就忙着看了一下官网文档发现好像复杂了好多! iOS9之后回去wifi名称的几个步骤:

1.向 Apple 申请开发 Network Extension 权限;

      写封邮件给 [email protected] ,向苹果要开发 Network Extension 的权限。申请邮件内容如下所示,仅供参考:

Hi, I am a personal developer on ios9, I am using xcode8.0 to develop app, AppleID:XXXXXXXXXX, I want to get SSID and BSSID and RSSI by scanning near WiFi, I hope to get the NetworkExtension permission, please approve!

苹果收到邮件后会自动回复邮件,然后根据苹果回复的邮件提供的链接,打开连接根据选项逐一填写,然后提交之后14天左右就可以收到苹果的确认回复邮件。

2.申请包含Network Extension 的描述文件;

获取iOS设备WiFi名字和mac地址+iOS12系统获取失败解决_第1张图片

申请获取WiFi权限通过之后,需要进入开发者账号里面配置创建Network Extension的描述文件,配置成功之后点击下载,下载完成双击打开描述文件。

3.配置Info.plist;

获取iOS设备WiFi名字和mac地址+iOS12系统获取失败解决_第2张图片
打开项目,在Xcode的Info.plist中Required background modes 添加一个network-authentication(item)

4.配置entitlements;

获取iOS设备WiFi名字和mac地址+iOS12系统获取失败解决_第3张图片
 在Xcode的Info.plist中Entitlements File下添加一个键值对: com.apple.developer.networking.HotspotHelper -> YES

5. 导入头文件:

     #import  

代码实现:

 _wifiName = @"Not Found";

    NSArray *ifs = CFBridgingRelease(CNCopySupportedInterfaces());

    idinfo =nil;

    for(NSString*ifnameinifs) {

        info = (__bridge_transferid)CNCopyCurrentNetworkInfo((CFStringRef) ifname);

        if(info && [infocount]) {

            break;

        }

    }

    NSDictionary *dic = (NSDictionary *)info;

    _wifiName = [[dic objectForKey:@"SSID"] lowercaseString];

你可能感兴趣的:(获取iOS设备WiFi名字和mac地址+iOS12系统获取失败解决)