从iOS 8开始,苹果开放了新的框架 NetworkExtension ,该框架提供了配置和控制VPN支持的接口,和wifi热点相关的接口。
使用的步骤如下:
1.向苹果发送邮件申请使用NetworkExtension框架
框架申请链接:https://developer.apple.com/contact/network-extension
开发者账号登录,填写申请表说明app是要用来干嘛的,然后就等苹果回复邮件看是否通过申请。
2.创建项目app id时配置 App Services
- 配置信息
3.在开发者中心配置证书
- 进入开发者中心选择Certificates,IDS&Profiles
- 选择最底下的Provisioning Profiles 面板选择ALL,选择右上角的添加
- 根据自己的需要选择 provisioning profile 的类型
- 选择APP id
- 勾选以下配置项目的两个
- 选择 entitlements 选择选择 Network Extension
- 为provisioning file 取个名字
4.在项目中使用配置好的文件
- 在xcode 中 xcode -> Preferences… ->Accounts
- 选择你配置好的配置文件,download
5.在项目中配置plist文件
<key>UIBackgroundModels</key>
<array>
<string>network-authentication</string>
</array>
6.在项目中配置Entitlements文件(涉及wifi热点的要配置这个)
- 在项目的entitlements后缀的文件中添加 com.apple.developer.networking.HotspotHelper 权利
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
本文详细介绍如何在iOS应用中使用NetworkExtension框架实现VPN配置控制及WiFi热点功能。包括申请框架权限、配置证书、集成代码等多个步骤。
1万+





