IOS NEHotspotConfigurationManage

作者: 小暖风 | 来源:发表于2017-11-08 13:32 被阅读2314次

NEHotspotConfigurationManager 是IOS 11刚刚推出的用户获取WiFi信息的框架。

初次使用时,如果没有做响应的设置,会提示NEHotspotConfigurationHelper failed to communicate to helper server.一个原因是工程配置有问题。

要保证 Newwork Extensions和Hotspot Configuration是开启状态。如果你的工程中找不到这两项,可能和你的证书的权限有关,需要去开发者中心重新设置一下你的证书支持的功能。

基本使用:

1.实例化一个配置:NEHotspotConfiguration* configuration = [[NEHotspotConfigurationalloc]initWithSSID:wifi名 passphrase:密码 isWEP:NO];

2.加入配置的WIFI[[NEHotspotConfigurationManager sharedManager] applyConfiguration:configurationc ompletionHandler:^(NSError*_Nullableerror) {

if([[selfgetCurrentWifi]isEqualToString:self.wifiName]) {

if(error) {

NSLog(@"错误原因:%@",error);

}

else{

NSLog(@"加入网络成功");

}

}

}];

这个方法存在一个问题,如果你加入一个不存在的WiFi,会弹出无法加入WiFi的弹框,但是本方法的回调error没有值。在这里,我是通过判断当前wifi是否是我要加入的wifi来解决这个问题的。

3.获取配置过的WIFI列表:[[NEHotspotConfigurationManager sharedManager] getConfiguredSSIDsWithCompletionHandler:^(NSArray * array) {

for(NSString* strinarray) {

NSLog(@"结果:%@",str);

}

}];

如果需要获取当前手机连接的wifi,添加#import<SystemConfiguration/CaptiveNetwork.h>,用下面的方法:

-(NSString*)getCurrentWifi{

NSString* wifiName =@"";

CFArrayRefwifiInterfaces =CNCopySupportedInterfaces();

if(!wifiInterfaces) {

wifiName =@"";

}

NSArray*interfaces = (__bridgeNSArray*)wifiInterfaces;

for(NSString*interfaceNameininterfaces) {

CFDictionaryRefdictRef =CNCopyCurrentNetworkInfo((__bridgeCFStringRef)(interfaceName));

if(dictRef) {

NSDictionary*networkInfo = (__bridgeNSDictionary*)dictRef;

wifiName = [networkInfoobjectForKey:(__bridgeNSString*)kCNNetworkInfoKeySSID];

CFRelease(dictRef);

}

}

CFRelease(wifiInterfaces);

returnwifiName;

}

相关文章

网友评论

  • 中移OneMO模组:版主,非常专业,受教了。有物联网通信模组问题的朋友,可以相互探讨交流!中移模组,你的模组问题贴身解决专家。
  • 未之:您好,我想问一下这个会自动弹出加入WiFi的alert吗?如何不弹出这个alert自动链接呢?
    小暖风:@未之 你自己写一个alert就可以了呀。Demo只是核心代码,你自己的业务需求自己加代码。
    未之:@小暖风 我用你的Demo测试了一下,会弹出询问你是否加入网络的alert呢?在ios11上
    小暖风:不会弹出alert,如果你知道要加入的wifi的名称和密码的话,基本使用1,2步就可以实现自动连接。
  • 暮雨霜白:请问,你做过扫码自动连接Wi-Fi吗?
    小暖风:@暮雨霜白 https://github.com/SmallHeater/NEHotspotConfigurationManagerDemo.git
    暮雨霜白:@小暖风 大神,有demo吗?
    小暖风:扫码如果能拿到wifi名和密码,用文中基本用法的1,2可以实现自动连接wifi.
  • Mr_Zeng:你好,这个功能需要申请那个开发权限吗?
    中移OneMO模组:有需要物联网通信模组技术问题、产品问题、解决方案支持的朋友,可以相互探讨交流的哈!关注中移模组微信公众号,你的模组问题、产品提供、解决方案贴身支持专家。
    小暖风:@Mr_Zeng 不需要。
  • wscd:你好 我发现在iOS11 如果WiFi是无密码的WiFi 比如手机热点 配置连接之后 虽然显示连接了但是却连不上网是什么情况
    小柴2011:- (instancetype)initWithSSID:(NSString *)SSID API_AVAILABLE(ios(11.0));
    小暖风:NEHotspotConfiguration* configuration = [[NEHotspotConfigurationalloc]initWithSSID:wifi名 passphrase:密码 isWEP:YES];。如果是无密码wifi,isWEP这里要改为YES。你试试。
  • 追影子的人_36cc:请问。Your development team, "啊 啊 ", does not support the Hotspot Configuration and Network Extensions capabilities. 我真机运行会这样 ,该怎么解决呢
    f68071296c2a:@追影子的人_36cc 和ID类型没有关系。如果是要真机调试的话,要在 https://developer.apple.com/account/ios/certificate 管理面板中创建一个 AppID, service中要开启 Hotspot Configuration 服务。然后创建对应的Develop Provisioning Profile 文件。
    追影子的人_36cc:@小暖风 要保证 Newwork Extensions和Hotspot Configuration是开启状态。 这个开启了。还有其他需要配置的么? 我测试是用的自己的IppleID, 公司开发者账号还在申请中
    小暖风:@追影子的人_36cc 我文章里说的工程需要配置的地方你配置了吗?
  • 如风过境l:这个不需要申请权限就可以获取wifi列表吗?
    小暖风:可以获取到在APP内添加过的Wi-Fi的列表。获取不到附近的Wi-Fi列表。
  • zaq1125:请问使用这个要导入什么库文件吗?
    小暖风:我这边是导入了这两个。
    #import <NetworkExtension/NetworkExtension.h>
    #import <SystemConfiguration/CaptiveNetwork.h>

本文标题:IOS NEHotspotConfigurationManage

本文链接:https://www.haomeiwen.com/subject/dggemxtx.html