IOS NetworkExtension 框架使用笔记

版权声明:本文为博主[李小冰]原创文章,未经博主允许不得转载。 https://blog.csdn.net/i374711088/article/details/51655526
从iOS 8开始,苹果开放了新的框架 NetworkExtension ,该框架提供了配置和控制VPN支持的接口,和wifi热点相关的接口。

使用的步骤如下:

1.向苹果发送邮件申请使用NetworkExtension框架

框架申请链接:https://developer.apple.com/contact/network-extension
开发者账号登录,填写申请表说明app是要用来干嘛的,然后就等苹果回复邮件看是否通过申请。

2.创建项目app id时配置 App Services

  • 配置信息
    这里写图片描述

3.在开发者中心配置证书

  • 进入开发者中心选择Certificates,IDS&Profiles

3-1

  • 选择最底下的Provisioning Profiles 面板选择ALL,选择右上角的添加

3-2

  • 根据自己的需要选择 provisioning profile 的类型

3-3

  • 选择APP id

3-4

  • 勾选以下配置项目的两个

3-5

  • 选择 entitlements 选择选择 Network Extension

3-6

  • 为provisioning file 取个名字

这里写图片描述

4.在项目中使用配置好的文件

  • 在xcode 中 xcode -> Preferences… ->Accounts

4-1

  • 选择你配置好的配置文件,download

4-2

5.在项目中配置plist文件

<key>UIBackgroundModels</key>
<array>
    <string>network-authentication</string>
</array>

6.在项目中配置Entitlements文件(涉及wifi热点的要配置这个)

  • 在项目的entitlements后缀的文件中添加 com.apple.developer.networking.HotspotHelper 权利

6-1

7.代码

  • 我这里是获取wifi列表信息,如wifi信号强度,名称,等
+(void)scanWifiInfos{
    NSLog(@"in wifi scan");
    NSMutableDictionary* options = [[NSMutableDictionary alloc] init];
    //NSMutableDictionary* infos = [[NSMutableDictionary alloc] init];

    [options setObject:@"meme" forKey:kNEHotspotHelperOptionDisplayName];

    dispatch_queue_t queue = dispatch_queue_create("LiyiZhan.WifiDemo", 0);

    BOOL returnType = [NEHotspotHelper registerWithOptions:options queue:queue handler:^(NEHotspotHelperCommand * cmd){
         NSLog(@"in block");
        [cmd createResponse:kNEHotspotHelperResultAuthenticationRequired];
        if(cmd.commandType == kNEHotspotHelperCommandTypeEvaluate || cmd.commandType == kNEHotspotHelperCommandTypeFilterScanList){

            NSLog(@"bbbb = %lu",cmd.networkList.count);
            for(NEHotspotNetwork* network in cmd.networkList){
                NSString* ssid = network.SSID;
                NSString* bssid = network.BSSID;
                BOOL secure = network.secure;
                BOOL autoJoined = network.autoJoined;
                double signalStrength = network.signalStrength;

                NSLog(@"SSID:%@ # BSSID:%@ # SIGNAL:%f ",ssid,bssid,signalStrength);
            }
        }   
    }];
}

至此,搞掂~~
ps 1: 如果你运行完,没看到打印。心想被坑了,那就拿起你的手机进入到 设置,打开【无线局域网】设置页面。这时候你再看看控制台。
ps 2:苹果这么搞也是不好玩,还要进入到他自己的设置页面才能获取wifil列表,坑~~~
demo下载:http://pan.baidu.com/s/1pKFrqoN

没有更多推荐了,返回首页