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>

但在應(yīng)用中需要添加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;}


應(yīng)用程序的Info.plist必須添加一個(gè)包含“remote-notification”的UIBackgroundModes數(shù)組.

應(yīng)用程序必須設(shè)置“com.apple.developer.networking.HotspotHelper'作為它的權(quán)利之一。

該權(quán)利的值是一個(gè)布爾值true要申請(qǐng)這個(gè)權(quán)利,請(qǐng)發(fā)送E-MAIL到networkextension@apple.com更多信息請(qǐng)參閱蘋果的Hotspot Network Subsystem Programming Guide

申請(qǐng)鏈接 :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字符串// 此處設(shè)置的內(nèi)容會(huì)在WiFi列表中每個(gè)WiFi下邊展示出來(lái)

@param queue dispatch_queue_t 用來(lái)調(diào)用handle的block

@param handler NEHotspotHelperHandler block 用于執(zhí)行處理 helper commands.

@return 注冊(cè)成功YES, 否則NO.

@discussion 一旦這個(gè)API調(diào)用成功,應(yīng)用程序有資格在后臺(tái)啟動(dòng),并參與各種熱點(diǎn)相關(guān)的功能。 當(dāng)應(yīng)用程序啟動(dòng)此方法應(yīng)該調(diào)用一次。再次調(diào)用它會(huì)不會(huì)產(chǎn)生影響,并返回NO。

Manage Hotspot Networks

+ (BOOL)logoff:(NEHotspotNetwork *)network

@param network 對(duì)應(yīng)當(dāng)前關(guān)聯(lián)的WiFi網(wǎng)絡(luò)NEHotspotNetwork

@return 注銷命令已成功進(jìn)入隊(duì)列YES, 否則NO.

@discussion 調(diào)用此方法使kNEHotspotHelperCommandTypeLogoff型的NEHotspotHelperCommand向應(yīng)用程序發(fā)出的“handler”模塊 網(wǎng)絡(luò)參數(shù)必須符合當(dāng)前關(guān)聯(lián)的WiFi網(wǎng)絡(luò),即它必須來(lái)自對(duì)NEHotspotHelperCommand網(wǎng)絡(luò)屬性或方法supportedInterfaces

+ (NSArray *)supportedNetworkInterfaces

@return 如果沒(méi)有網(wǎng)絡(luò)接口被管理,返回nil。否則,返回NEHotspotNetwork對(duì)象數(shù)組。

@discussion 每個(gè)網(wǎng)絡(luò)接口由NEHotspotNetwork對(duì)象表示。當(dāng)前返回的數(shù)組包含一個(gè)NEHotspotNetwork對(duì)象代表Wi-Fi接口。

這種方法的主要目的是當(dāng)沒(méi)有得到一個(gè)命令來(lái)處理它時(shí),讓一個(gè)熱點(diǎn)助手偶爾提供在UI里其準(zhǔn)確的狀態(tài)。 此方法加上NEHotspotNetwork的isChosenHelper方法允許應(yīng)用程序知道它是否是當(dāng)前處理的網(wǎng)絡(luò)。

NSMutableDictionary* options = [[NSMutableDictionary alloc] init];

[options setObject:@"我是副標(biāo)題"?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);

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • iOS 9 發(fā)布之后,蘋果對(duì)于WiFi這塊廢棄了CaptiveNetwork了這個(gè)類,不再推薦使用,同時(shí)推出...
    雪中夜歸人閱讀 10,014評(píng)論 49 15
  • 在做wifi分享的時(shí)候遇到了很多的問(wèn)題,尤其是這個(gè)庫(kù)的時(shí)候遇到很多坑爹的事情,寫著文章只是為了不讓自己忘記怎么使用...
    韓喵閱讀 6,131評(píng)論 7 1
  • 原文 在這里總結(jié)一些iOS開發(fā)中的小技巧,能大大方便我們的開發(fā),持續(xù)更新。 1.UITableView的Group...
    無(wú)灃閱讀 852評(píng)論 0 2
  • 文 | 彼懷 你愈發(fā)的貪婪 使我措不及防 我知道 你要反抗 奪回屬于自己的東西 可是 我怎么辦 你想要的 我不會(huì)給你
    彼懷閱讀 368評(píng)論 8 18
  • 一 熱愛(ài)往事的人,心中種滿了森林。 沒(méi)有往事的人是一個(gè)空殼。巨大的變遷會(huì)一寸一寸吞噬掉他們,一般的肌膚和行尸走肉的...
    洪予希1999閱讀 556評(píng)論 0 1

友情鏈接更多精彩內(nèi)容