前言: iOS 9 发布之后,推出NetworkExtension, 它可给系统WiFi列表列表里边的WiFi设置密码 、标签(副标题)。 还可获取整个WiFi列表。首先你得向苹果申请一个权限,人家允许你使用了,你再在工程里面配置一下,这样你才可以使用.苹果会给你发个问卷调查,根据你自己的情况填写.这儿谢谢我初中学霸,专业的英语翻译果然6.1-1.框架申请链接:https://developer.apple.com/contact/network-extension

根据自己的实际情况填写.里面有个产品介绍,最好找个英文好的...

1-2 调查表填写完成后,大概过了2 ,3小时,苹果会回复给你一封邮件,并且返回给你一个fllowup.(注意,这并不是代表你已经申请           成功了,邮件里面只是确认你填写的问卷信息!)

 
1-3 接下来,就只能等了.逛苹果论坛,据说要等三星期,可是,我TM等了5星期是什么鬼.所以当超过三星期的时候我也没闲着,打电话 :4006701855 , 虽然得到的回复还是等...而且,值得一提的是:有人遇见过这种情况,一直没有收到苹果拒绝或者同意的邮件.但是可以使用这个类.所以当超过3星期以后,我是每天都登录到开发者账号 配置描述文件,如果发现这儿多了一个选项.如下图,这也说明你申请成功了
1-5 所以呢,打了两次电话,重发了5 ,6 次邮件之后,大概苹果也觉得不好意思了吧,终于通过了.此时你会收到这也一封邮件:

恭喜您,通过了.但是不得不说,这只成功了一小半.后面你可能遇见更痛苦的事情.

2下面就来来说更痛苦的事情. 2-1 配置工程 a .新建一个App ID.

b. 添加iCloud 和Wireless Accessory

c.新建iCloud Containers

d.打开刚刚创建的App ID 发现这个是黄色的,下面就要编辑这个App ID

e

f
g 配置App ID完成
2-2 配置描述文件 .
   

配置好这个之后,可以到苹果提供的检测环境检测一下配置文件的正确性附上网址 :https://forums.developer.apple.com/message/75928#75928

这一步很重要:就是检测你的工程配置的描述文件和这个账号使用权限是否对等.后面有小伙伴遇到一个bug就是ruternType一直返回NO,获取不到wifi列表,然后通过上面验证发现,证书的权限和申请使用的权限不相同.所以这儿有个建议,如果发现获取列表时返回值是NO,把测试证书删掉,重新创建.然后再走一遍上面的流程.(我遇到的BUG奇怪的很,对着英文文档走了好几遍,确定文件没什么问题,就是返回值一直都是NO,后来,在创建iCoud的时候,把那个id改成和App ID不一样,就是按照他下面的要求创建,就奇怪的好了.)

注意 :创建完描述文件别忘了安装到Xcode,直接下载,完了双击就ok了.

3.配置Xcode工程了;3-1 配置plist文件 (允许后台运行)通过xml添加<key>UIBackgroundModes</key><array><string>network-authentication</string>

</array>

3-2 targets->Capabilities->iCloud 和Wireless-Accessory-Configuration
配置完上面两个你就会发现工程左边会多了一个.entitlements结尾的文件.然后还要向这个文件里面添加一个BOOL值为YES的字段 com.apple.developer.networking.HotspotHelper
3-3 Tagarts-->Build Settings -> code Signing
3-4 上代码 (也是蛮辛苦的)
    
     
//最后奉上我的实现代码,获取wifi列表,并给指定ssid做标记;
+(void)getWifiList{NSMutableDictionary* options = [[NSMutableDictionary alloc] init];[options setObject:@"??新网程-点我上网??" forKey:kNEHotspotHelperOptionDisplayName];dispatch_queue_t queue = dispatch_queue_create("com.pronetwayXY", 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:@"proict_test"]) {double signalStrength = network.signalStrength;NSLog(@"Signal Strength: %f", signalStrength);[network setConfidence:kNEHotspotHelperConfidenceHigh];[network setPassword:@"password"];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);}
注意 :运行一遍,然后需要打开系统设置连wifi界面,才能在控制台查看打印信息的.下面附上两张效果图:

demo已上传到gitHub上 :https://github.com/chengkunlun/FirstRePository

+ (BOOL)logoff:(NEHotspotNetwork *)network@param network 对应当前关联的WiFi网络NEHotspotNetwork@return 注销命令已成功进入队列YES, 否则NO. @discussion 调用此方法使kNEHotspotHelperCommandTypeLogoff型的NEHotspotHelperCommand向应用程序发出的“handler”模块 网络参数必须符合当前关联的WiFi网络,即它必须来自对NEHotspotHelperCommand网络属性或方法supportedInterfaces+ (NSArray *)supportedNetworkInterfaces@return 如果没有网络接口被管理,返回nil。否则,返回NEHotspotNetwork对象数组。 @discussion 每个网络接口由NEHotspotNetwork对象表示。当前返回的数组包含一个NEHotspotNetwork对象代表Wi-Fi接口。这种方法的主要目的是当没有得到一个命令来处理它时,让一个热点助手偶尔提供在UI里其准确的状态。 此方法加上NEHotspotNetwork的isChosenHelper方法允许应用程序知道它是否是当前处理的网络。
Register a Hotspot Helper+ (BOOL)registerWithOptions:(NSDictionary*)options queue:(dispatch_queue_t)queue handler:(NEHotspotHelperHandler)handler@param options kNEHotspotHelperOptionDisplayName :WIFI的注释tag字符串// 此处设置的内容会在WiFi列表中每个WiFi下边展示出来 @param queue dispatch_queue_t 用来调用handle的block @param handler NEHotspotHelperHandler block 用于执行处理 helper commands.@return 注册成功YES, 否则NO. @discussion 一旦这个API调用成功,应用程序有资格在后台启动,并参与各种热点相关的功能。 当应用程序启动此方法应该调用一次。再次调用它不会产生影响,并返回NO。这个方法是主要的.

iOS 获取系统wifi列表,wifi信号强度,并给wifi设置密码,标签(副标题)相关推荐

  1. android 12.0 设置wifi列表黑名单(ssid不显示wifi列表)

    1.前言 在12.0的rom定制化开发中,在系统的产品开发中,对于wifi产品功能需求,可以要求设置某些wifi不出现在wifi列表中,然后实现不让连接此wifi的功能,就是设置 wifi黑名单的功能 ...

  2. 快速获取系统字体列表

    Windows中的字体都安装在Windows\Fonts目录中,为了保证显示效果经常需要使用特殊字体,在代码中如何确认系统已经安装某种字体呢?其实利用Excel中工具条可以很容易的获取系统字体列表. ...

  3. android 11.0 设置wifi列表黑名单(ssid不显示wifi列表)

    1.概述 在11.0的定制化开发中,可以要求设置某些wifi不出现在wifi列表中,然后实现不让连接此wifi的功能,就是设置wifi黑名单的功能,屏蔽这个wifi的连接功能,实现这个功能就需要了解w ...

  4. android 9.0 10.0 设置wifi列表黑名单(ssid不显示wifi列表)

    1.概述 在10.0的产品定制化开发中,可以要求设置某些wifi不出现在wifi列表中,然后实现不让连接此wifi的功能,就是设置wifi黑名单,wifiManager管理所有wifi操作,接口就加在 ...

  5. IOS获取系统通讯录联系人信息

    2019独角兽企业重金招聘Python工程师标准>>> IOS获取系统通讯录联系人信息 一.权限注册 随着apple对用户隐私的越来越重视,IOS系统的权限设置也更加严格,在获取系统 ...

  6. iOS 获取系统相册

    在iOS开发中经常会用到相册的图片,但是原生的UIImagePikerViewDelegate只能选取一张照片进行处理,这样管理起来比较麻烦,所以本次带来获取系统所有相册. 首先建一个继承NSObje ...

  7. qt获取系统打印机列表

    实现效果: 实现步骤: 在windows下使用qt获取系统的打印机列表名,方法如下: pro文件,或者对应的模块pri文件中,添加printsupport模块支持. QT += printsuppor ...

  8. iOS 获取系统时间(服务器时间)问题

    iOS 开发中我们经常用到获取系统时间,正常来说,我们只需要调用系统API即可 let currentDate = Date() let formatter = DateFormatter() // ...

  9. iOS获取本地视频列表数据

    iOS本地的视频存在于三个地方: iTunes中影片中导入的视频文件 iTunes中通过共享文件导入的视频文件,即应用沙盒 摄像头拍摄的视频文件,可以相册找到 这三处获取视频列表方式不同. iTune ...

最新文章

  1. AI领域3种典型的深度学习算法
  2. 【双十二】电商们的文案大战,猫狗快被玩坏了!
  3. python迭代是什么意思_python中什么是迭代?
  4. Error Domain=NSURLErrorDomain Code=-999 The opera
  5. WordPress的cookie处理
  6. Insider Dev Tour 2019 | 以技术之力,展现传承魅力
  7. Codeforces Global Round 14 F. Phoenix and Earthquake 思维 + 并查集
  8. 使用加速度计进行崩溃检测
  9. Unity 中 Png转Texture2D再转Sprite
  10. Android JNI 本地开发接口
  11. Sprintf函数用法
  12. Python爬取上交所年报下载并转TXT
  13. 【洛谷八连测R5】whzzt-Warmth
  14. 如何使用ArcMap连接PostGresql(包含PostGresql和PostGis以及所需要的安装文件的下载链接)
  15. 普吉岛泡酒店浮潜攻略——我住过的普吉岛的8个酒店
  16. JNI和NKD入门系列一,纯java工程下JNI的开发流程(mac系统)
  17. Android 深入探讨sigleTask和singletop的区别
  18. 利用WIN10自带ACG播放器完成.flv视频文件转码为mp4文件
  19. android 下载病毒,消灭病毒下载_消灭病毒安卓版下载v1.3_3DM手游
  20. 用python 通过12306api抓取列车信息

热门文章

  1. D1net阅闻:亚马逊引入Biba的员工和专利,据称计划推出新的视频聊天服务
  2. Android存储空间总结
  3. 解决浏览器访问GitHub响应时间长,速度慢的问题
  4. 2022北林计科学生保研历程
  5. storj主网挖矿指南
  6. 纯CSS 实现格子背景(国际象棋棋盘)
  7. 笔记:《高效能人士的七个习惯》第九章 习惯六 统合综效——创造性合作的原则
  8. C++(常函数、常对象)
  9. 2023牛客寒假算法基础集训营4_20230130「向上取整」「夹逼dp」「lowbit科学+树状数组性质」「搜索」「倍增跳表」「莫队」
  10. 星淘惠告诉你跨境平台那么多,凭什么要选亚马逊?