NEHotspotHelper的使用和申请

来源:互联网 发布:linux系统管理技术手册 编辑:程序博客网 时间:2024/05/17 22:08

最近需要在APP中加入WiFi相关的功能,之前没有做过,比较迷茫!这个框架是iOS9 以后才出来的,国内有APP用的,但是开发的资料很少!自己在网上找了很多零散的资料,然后写了一个demo,下面把自己的写的过程分享给大家,希望可以对你有所帮助,也请大神支出不足之处:

这个框架的使用大致分为这几个步骤 
向苹果申请使用权限 
配置证书文件 
配置工程 
代码实现


向苹果申请框架的使用权限

  • 上这个网站去填写一个申请表。
  • 申请的周期比较长最少是两周,甚至更长时间。我在第一次申请的时候就用了两个月的时间。
  • 在填写申请表的时候尽量使用英文去填写,那样申请陈宫的概率会比较大的
  • 这个是申请的网址NetworkExtension框架使用权限申请
  • 如果申请成功了会收到一个内容这样的邮件
  • 申请成功的邮件回复

证书文件配置

等待收到申请成功后。就可以着手下面的工作了,开始配置证书和配置文件,我建议在获得这个框架的使用权限以后从新申请一个证书来调试,我的就是把原来旧的证书删除以后才调试成功的!

  • 下面就是配置证书的步骤 
    增加新的证书
  • 证书添加完成后配置identifiers文件 
    配置identifiers
  • 在配置identifiers文件的时候注意要勾选上我图片上箭头标注的两个选项 
  • 接下来配置iCloud文件 
    这里写图片描述 
    这里写图片描述
  • Identifiers的时候要和你的工程的bundle ID 是一样的 
    这里写图片描述
  • 这里配置完成后,再点开刚才生成的APP IDs,这个时候,iCloud那一行的两个点会显示黄色的 ,然后找到到edit,点击进去 
    这里写图片描述
  • 然后配置你刚才生成的iCloud文件 
    这里写图片描述 
    这里写图片描述
  • 这样ID文件就配置完成了

  • 接下来就是配置profile文件了 
    这里写图片描述 
    这里写图片描述

  • 这里选择你刚才配置好的APP IDs 
    这里写图片描述
  • 选择刚才刚刚生成的证书 
    这里写图片描述
  • 选择调试设备 
    这里写图片描述
  • 如果你申请框架使用权限成功了,那么最后一步就会有这个选项,选择下面那个! 
    这里写图片描述 
    OK!到这个地方,证书配置完成了!接下来就是配置自己的工程了

工程配置

  • 首先打开工程,啥东西都不要动!按照下面的图片里面的内容进行工程配置 
    这里写图片描述

这里写图片描述 
- 这个地方很重要,不能整错了 
这里写图片描述

  • 配置info.plist文件 
    这里写图片描述
    OK!这就是工程里面需要配置的地方

代码实现

  • 直接把下面的代码复制到工程里面不出问题就可以看到控制台输出WiFi列表信息了,(工程运行后要打开系统的WiFi设置界面才有WiFi信息输出):
  • ////  ViewController.m//  Wifi////  Created by Jone Yin on 16/9/22.//  Copyright © 2016年 Jone Yin. All rights reserved.//#import "ViewController.h"#import <NetworkExtension/NetworkExtension.h>@interface ViewController ()@end@implementation ViewController- (void)viewDidLoad {    [super viewDidLoad];    NSMutableDictionary* options = [[NSMutableDictionary alloc] init];    [options setObject:@"" forKey:kNEHotspotHelperOptionDisplayName];        dispatch_queue_t queue = dispatch_queue_create("com.myapp.ex", NULL);    BOOL returnType = [NEHotspotHelper registerWithOptions:options queue:queue handler: ^(NEHotspotHelperCommand * cmd) {        NEHotspotNetwork* network;                NSLog(@"COMMAND TYPE:   %ld", (long)cmd.commandType);        [cmd createResponse:kNEHotspotHelperResultAuthenticationRequired];        if (cmd.commandType == kNEHotspotHelperCommandTypeEvaluate || cmd.commandType ==kNEHotspotHelperCommandTypeFilterScanList) {            NSLog(@"WIFILIST:   %@", cmd.networkList);                        for (network  in cmd.networkList) {                                NSLog(@"COMMAND TYPE After:   %ld", (long)cmd.commandType);                                if ([network.SSID isEqualToString:@"ssid"]|| [network.SSID isEqualToString:@"roam2free_dev_5G"]) {                                        double signalStrength = network.signalStrength;                    NSLog(@"Signal Strength: %f", signalStrength);                    [network setConfidence:kNEHotspotHelperConfidenceHigh];                    [network setPassword:@"roam2free_deVelop"];                                        NEHotspotHelperResponse *response = [cmd createResponse:kNEHotspotHelperResultSuccess];                    NSLog(@"Response CMD %@", response);                                        [response setNetworkList:@[network]];                    [response setNetwork:network];                    [response deliver];                }            }        }            }];        NSLog(@"result :%d", returnType);        NSArray *array = [NEHotspotHelper supportedNetworkInterfaces];        NSLog(@"wifiArray:%@", array);        NEHotspotNetwork *connectedNetwork = [array lastObject];        NSLog(@"supported Network Interface: %@", connectedNetwork);}- (void)didReceiveMemoryWarning {    [super didReceiveMemoryWarning];    // Dispose of any resources that can be recreated.}@end


联系方式

  • 有什么指正可以加入这个群 585640621,大家一起讨论!
2 0
原创粉丝点击