升級(jí)iOS26后無(wú)法獲取WiFi BSSID

之前項(xiàng)目里一直用下面的方法獲取WiFi BSSID,但是升級(jí)到iOS 26后,返回空

+ (NSString*)wifBSsid{
    NSArray *interfaces = (__bridge_transfer NSArray*)CNCopySupportedInterfaces();
    NSDictionary *info = nil;
    for (NSString *ifname in interfaces) {
        info = (__bridge_transfer NSDictionary*)CNCopyCurrentNetworkInfo((__bridge CFStringRef)ifname);
        if (info && [info count]) {
            break;
        }
        info = nil;
    }
    
    NSString *BSSID = nil;
    
    if ( info ){
        BSSID = [info objectForKey:@"BSSID"];
    }
    info = nil;
    return BSSID? BSSID : @"";
}

查閱官方接口文檔發(fā)現(xiàn),需要用新的接口來(lái)獲取WiFi設(shè)備信息:


image.png

進(jìn)一步查詢發(fā)現(xiàn),該接口在NetworkExtension框架下:

image.png

網(wǎng)上各種用到NetworkExtension框架的文章都說(shuō)要給蘋(píng)果發(fā)郵件申請(qǐng)權(quán)限,而且可能要等半個(gè)月左右。
但是在開(kāi)發(fā)者后臺(tái)發(fā)現(xiàn),就有NetworkExtension的自主申請(qǐng),貌似和別的權(quán)限沒(méi)什么太大差別,于是直接在開(kāi)發(fā)者后臺(tái)開(kāi)啟權(quán)限后:

image.png

在Xcode內(nèi)Capability處開(kāi)啟NetworkExtension,由于項(xiàng)目?jī)?nèi)只是為了獲取WiFi信息,并沒(méi)有深入使用框架,于是隨便勾選了兩個(gè)權(quán)限聲明:

image.png

于是更改項(xiàng)目代碼如下:

+ (void)getWiFiNameAndWiFiMac:(void (^)(NSString *BSSID, NSString *SSID))completionHandler {
    if (@available(iOS 26.0, *)) {
        [NEHotspotNetwork fetchCurrentWithCompletionHandler:^(NEHotspotNetwork * _Nullable currentNetwork) {
            if (completionHandler) {
                if (currentNetwork) {
                    completionHandler(currentNetwork.BSSID, currentNetwork.SSID);
                } else {
                    completionHandler(@"", @"");
                }
            }
        }];
    } else {
        NSString *Bssid = [self wifBSsid];
        NSString *ssid  = [self wifSsid];
        if (completionHandler) {
            completionHandler(Bssid, ssid);
        }
    }
}

最后需要從開(kāi)發(fā)者后臺(tái)重新生成開(kāi)發(fā)和發(fā)布用的profile文件,導(dǎo)入Xcode。
調(diào)試后發(fā)現(xiàn)已經(jīng)可以正常獲取到WiFi BSSID和SSID信息。

打包提交審核,蘋(píng)果員未提出仍和意見(jiàn),一次通過(guò)。可能之前使用NetworkExtension框架需要單獨(dú)給蘋(píng)果發(fā)郵件申請(qǐng)權(quán)限,感覺(jué)現(xiàn)在應(yīng)該是不用了,直接在開(kāi)發(fā)者后臺(tái)開(kāi)啟權(quán)限即可。

?著作權(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)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

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