IOS NetworkExtension 框架使用笔记

来源:互联网 发布:查看php源码 编辑:程序博客网 时间:2024/06/05 07:57
本来转载自:http://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>
  • 1
  • 2
  • 3
  • 4
  • 1
  • 2
  • 3
  • 4

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);            }        }       }];}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28

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

0 0