ios 获取app 获取wifi名称 9.0以后获取列表等

9.0以前获取需要引入#import<SystemConfiguration/CaptiveNetwork.h>

+ (NSString *)getWifiName{

NSString *wifiName = nil;

CFArrayRef wifiInterfaces = CNCopySupportedInterfaces();

if (!wifiInterfaces) {

return @"未知";

}

NSArray *interfaces = (__bridge NSArray *)wifiInterfaces;

for (NSString *interfaceName in interfaces) {

CFDictionaryRef dictRef = CNCopyCurrentNetworkInfo((__bridge CFStringRef)(interfaceName));

if (dictRef) {

NSDictionary *networkInfo = (__bridge NSDictionary *)dictRef;

wifiName = [networkInfo objectForKey:(__bridge NSString *)kCNNetworkInfoKeySSID];

CFRelease(dictRef);

}

}

CFRelease(wifiInterfaces);

return wifiName;

}

9.0以后获取需要引入import <NetworkExtension/NetworkExtension.h>

但在应用中需要添加icloud containers

NSArray * networkInterfaces = [NEHotspotHelper supportedNetworkInterfaces];

NSLog(@"Networks %@",networkInterfaces);

//获取wifi列表

for(NEHotspotNetwork *hotspotNetwork in [NEHotspotHelper supportedNetworkInterfaces]) {

NSString *ssid = hotspotNetwork.SSID;

NSString *bssid = hotspotNetwork.BSSID;

BOOL secure = hotspotNetwork.secure;

BOOL autoJoined = hotspotNetwork.autoJoined;

double signalStrength = hotspotNetwork.signalStrength;}


应用程序的Info.plist必须添加一个包含“remote-notification”的UIBackgroundModes数组.

应用程序必须设置“com.apple.developer.networking.HotspotHelper'作为它的权利之一。

该权利的值是一个布尔值true要申请这个权利,请发送E-MAIL到networkextension@apple.com更多信息请参阅苹果的Hotspot Network Subsystem Programming Guide

申请链接 :https://developer.apple.com/contact/network-extension/

详阅官方文档: https://developer.apple.com/reference/networkextension/nehotspothelper

https://developer.apple.com/library/content/documentation/NetworkingInternet/Conceptual/Hotspot_Network_Subsystem_Guide/Contents/Introduction.html#//apple_ref/doc/uid/TP40016639


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。

Manage Hotspot Networks

+ (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方法允许应用程序知道它是否是当前处理的网络。

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:@"WISPr Hotspot"]) {

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);

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • iOS 9 发布之后,苹果对于WiFi这块废弃了CaptiveNetwork了这个类,不再推荐使用,同时推出...
    雪中夜归人阅读 9,876评论 49 15
  • 在做wifi分享的时候遇到了很多的问题,尤其是这个库的时候遇到很多坑爹的事情,写着文章只是为了不让自己忘记怎么使用...
    韩喵阅读 5,949评论 7 1
  • 原文 在这里总结一些iOS开发中的小技巧,能大大方便我们的开发,持续更新。 1.UITableView的Group...
    无沣阅读 794评论 0 2
  • 文 | 彼怀 你愈发的贪婪 使我措不及防 我知道 你要反抗 夺回属于自己的东西 可是 我怎么办 你想要的 我不会给你
    彼怀阅读 347评论 8 18
  • 一 热爱往事的人,心中种满了森林。 没有往事的人是一个空壳。巨大的变迁会一寸一寸吞噬掉他们,一般的肌肤和行尸走肉的...
    洪予希1999阅读 503评论 0 1