iOS 13適配--獲取手機WiFi名稱(SSID)問題

問題

升級到iOS13以后,發(fā)現(xiàn)之前獲取WiFi名稱的接口失效了,返回的都是固定值"WLAN"或者"Wi-Fi"。

原因

蘋果對用戶隱私保護問題,因為通過wifi信息可以定位到用戶地理位置。所以iOS13以后如果想要繼續(xù)獲取WiFi名稱,需要在調(diào)用接口前判斷用戶是否同意app使用地理位置信息。

適配代碼

在適當位置調(diào)用代碼做響應判斷即可

//判斷是否開啟了地理位置信息
+ (BOOL)checkOpenLocationOrNot
{
    CLAuthorizationStatus status = [CLLocationManager authorizationStatus];
    if (kCLAuthorizationStatusDenied == status || kCLAuthorizationStatusRestricted == status || kCLAuthorizationStatusNotDetermined == status) {
        return NO;
    }
    return YES;
}
//判斷iOS13根據(jù)地理位置返回能否返回WiFiSSid
+ (BOOL)canGetWifiSSid {
    if (@available(iOS 13.0, *)) {
        return [self checkOpenLocationOrNot];
    }
    return YES;
}

獲取WiFiSSid

#import <SystemConfiguration/CaptiveNetwork.h>
+ (NSString *)currentWifiSSID {
    
    NSString *ssid = nil;
    
    CFArrayRef arrRef = CNCopySupportedInterfaces();
    
    NSArray *ifs = (__bridge id)arrRef;
    
    for (NSString *ifnam in ifs) {
        
        CFDictionaryRef dicRef = CNCopyCurrentNetworkInfo((__bridge CFStringRef)ifnam);
        
        NSDictionary *info = (__bridge id)dicRef;
        
        if (info[@"BSSID"]) {
            ssid = info[@"SSID"];
        }
        
        if (dicRef != nil) {
            CFRelease(dicRef);
        }
    }
    
    if (arrRef != nil) {
        CFRelease(arrRef);
    }
    
    return ssid;
}
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

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

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