iOS 獲取系統(tǒng)wifi列表,wifi信號強度,并給wifi設置密碼,標簽(副標題)

轉載自:iOS 獲取系統(tǒng)wifi列表,wifi信號強度,并給wifi設置密碼,標簽(副標題)
版權聲明:本文為博主原創(chuàng)文章,未經(jīng)博主允許不得轉載。 https://blog.csdn.net/ws1352864983/article/details/73481436

最近公司社區(qū)項目中要用到或者社區(qū)周圍WiFi列表以及信號強度,好多網(wǎng)友說實現(xiàn)不了討論區(qū)


相關資源:

APP跳轉 及iOS10跳轉在設置頁面

Wifi 定位原理及 iOS Wifi 列表獲取

iOS 獲取系統(tǒng)wifi列表,wifi信號強度,并給wifi設置密碼,標簽(副標題)

iOS 無法獲取 WiFi 列表?一定是因為你不知道這個框架

Demo地址


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數(shù)組.

應用程序必須設置“com.apple.developer.networking.HotspotHelper’作為它的權利之一。

該權利的值是一個布爾值true要申請這個權利,請發(fā)送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 用于執(zhí)行處理 helper commands.

@return 注冊成功YES, 否則NO.

@discussion 一旦這個API調用成功,應用程序有資格在后臺啟動,并參與各種熱點相關的功能。 當應用程序啟動此方法應該調用一次。再次調用它會不會產(chǎn)生影響,并返回NO。

Manage Hotspot Networks

+ (BOOL)logoff:(NEHotspotNetwork *)network

@param network 對應當前關聯(lián)的WiFi網(wǎng)絡NEHotspotNetwork

@return 注銷命令已成功進入隊列YES, 否則NO.

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

+ (NSArray *)supportedNetworkInterfaces

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

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

這種方法的主要目的是當沒有得到一個命令來處理它時,讓一個熱點助手偶爾提供在UI里其準確的狀態(tài)。 此方法加上NEHotspotNetwork的isChosenHelper方法允許應用程序知道它是否是當前處理的網(wǎng)絡。

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);
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 夜已深。 窗外,一個女人尖利的聲音一直在歇斯底里地吵鬧著,在這個寂靜的夜晚,顯得異常突兀。其間偶爾夾雜著男人的聲音...
    蒲公英521閱讀 307評論 15 8
  • 看小朋友戲水,水是生命!孩子是家庭必備泉水!希望世上沒有出現(xiàn)毒奶粉假疫苗假教育一一一一
    一把土也沒了閱讀 1,428評論 0 0
  • 英國保守黨領袖特蕾莎·梅,將在明天正式上任,成為英國第二個女首相,繼任卡梅倫執(zhí)掌脫歐后的英國政府。 被中國網(wǎng)民稱為...
    加油沖哇閱讀 593評論 0 0
  • 今天這篇分享本來不應該寫在這個時候,因為我一直覺得很多生意人都多少能覺悟到,營銷對于生意的重要性。無奈,今天一位老...
    紫龍哥閱讀 450評論 0 0

友情鏈接更多精彩內容