iOS 開發,判斷手機WiFi是否開啟及獲取WiFi名稱
阿新 • • 發佈:2020-12-08
判斷手機WiFi是否開啟
- (BOOL)isWiFiEnabled { NSCountedSet * cset = [NSCountedSet new]; struct ifaddrs *interfaces; if(!getifaddrs(&interfaces)){ for( struct ifaddrs *interface = interfaces; interface; interface = interface->ifa_next) { if ( (interface->ifa_flags & IFF_UP) == IFF_UP ) { [cset addObject:[NSString stringWithUTF8String:interface->ifa_name]]; } } } return [cset countForObject:@"awdl0"] > 1 ? YES : NO; }
獲取WiFi名稱
- (NSString *)getWiFiName { if (@available(iOS 13.0, *)) { //使用者明確拒絕,可以彈窗提示使用者到設定中手動開啟許可權 if ([CLLocationManager authorizationStatus] == kCLAuthorizationStatusDenied) { NSLog(@"User has explicitly denied authorization for this application, or location services are disabled in Settings."); //使用下面介面可以開啟當前應用的設定頁面 //[[UIApplication sharedApplication] openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString]]; return nil; } CLLocationManager* cllocation = [[CLLocationManager alloc] init]; if(![CLLocationManager locationServicesEnabled] || [CLLocationManager authorizationStatus] == kCLAuthorizationStatusNotDetermined){ //彈框提示使用者是否開啟位置許可權 [cllocation requestWhenInUseAuthorization]; usleep(50); //遞迴等待使用者選選擇 //return [self getWifiSsidWithCallback:callback]; } } NSString *wifiName = nil; CFArrayRef wifiInterfaces = CNCopySupportedInterfaces(); if (!wifiInterfaces) { return nil; } NSArray *interfaces = (__bridge NSArray *)wifiInterfaces; for (NSString *interfaceName in interfaces) { CFDictionaryRef dictRef = CNCopyCurrentNetworkInfo((__bridge CFStringRef)(interfaceName)); if (dictRef) { NSDictionary *networkInfo = (__bridge NSDictionary *)dictRef; NSLog(@"network info -> %@", networkInfo); wifiName = [networkInfo objectForKey:(__bridge NSString *)kCNNetworkInfoKeySSID]; CFRelease(dictRef); } } CFRelease(wifiInterfaces); return wifiName; }
注意
需要引入的標頭檔案
#import <ifaddrs.h>
#import <net/if.h>
#import <SystemConfiguration/CaptiveNetwork.h>
info.plist 檔案需要配置獲取的許可權
Privacy - Location Always Usage Description
Privacy - Location When In Use Usage Description
作為一個開發者,有一個學習的氛圍跟一個交流圈子特別重要,這是一個我的iOS交流群:196800191,不管你是小白還是大牛歡迎入駐 ,分享BAT,阿里面試題、面試經驗,討論技術, 大家一起交流學習成長!
iOS 13 以後
獲取WiFi名稱,必須要先允許獲取定位資訊
原文作者:深海謝先生
原文地址:https://blog.csdn.net/m0_50752541/article/details/110481171?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522160741070019215668868668%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=160741070019215668868668&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2allfirst_rank_v2~rank_v29-6-110481171.pc_search_result_cache&utm_term=iOS%E5%BC%80%E5%8F%91