美文网首页
获取iOS设备WiFi名字和mac地址+iOS12系统获取失败解

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

作者: _VisitorsZsl | 来源:发表于2019-03-14 14:19 被阅读0次

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

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

          写封邮件给 networkextension@apple.com ,向苹果要开发 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 的描述文件;

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

    3.配置Info.plist;

    打开项目,在Xcode的Info.plist中Required background modes 添加一个network-authentication(item)

    4.配置entitlements;

     在Xcode的Info.plist中Entitlements File下添加一个键值对: com.apple.developer.networking.HotspotHelper -> YES

    5. 导入头文件:

         #import <NetworkExtension/NetworkExtension.h>  

    代码实现:

     _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系统获取失败解

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