獲取Wifi SSID(名稱)的方法以及可能出現(xiàn)的問題

描述

本篇重點是描述獲取wifi SSID過程中遇到的坑,以幫助遇到同樣問題的人。


開發(fā)

首先先列一下獲取SSID的代碼:(swift代碼)

/** 獲取Wifi Ssid */
 public func getSsid() -> String? {
        if let interface : CFArray = CNCopySupportedInterfaces() {
            NSLog("\(interface)");
            for i in 0..<CFArrayGetCount(interface) {
                let interfaceName: UnsafeRawPointer = CFArrayGetValueAtIndex(interface, i);
                NSLog("\(interfaceName)");
                let rec = unsafeBitCast(interfaceName, to: AnyObject.self)
                if let unsafeInterfaceData = CNCopyCurrentNetworkInfo("\(rec)" as CFString), let interfaceData = unsafeInterfaceData as? [String : AnyObject] {
                    if let ssid =  interfaceData["SSID"] as? String {
                        return ssid
                    }
                }
            }
        }
        return nil;
    }

代碼挺簡單的,這樣就直接可以獲取到當前手機鏈接的wifi名稱。

但是在iOS 12.0 + 之后,蘋果官方增加了獲取wifi的權限,具體說明可以查看 CNCopyCurrentNetworkInfo 的官方文檔說明:

Important
To use this function in iOS 12 and later, enable the Access WiFi Information capability for your app in Xcode. When you enable this capability, Xcode automatically adds the Access WiFi Information entitlement to your entitlements file and App ID.

在iOS 12.0+之后,需要打開Access WiFi Information capability這個開關才能正確獲取到 WiFi 信息。
打開開關的方式有兩種:

( 1 )Xcode

這種方式最簡單,Xcode -> Targets -> Capabilities,如下圖所示,直接點擊打開


Xcode操作方式

打開之后Xcode也會同步到AppID的設置

( 2 )Apple Developer(蘋果開發(fā)者中心

操作步驟如下圖:(用第一種方法(Xcode)操作的話,Xcode也會自動同步狀態(tài)到開發(fā)者中心對應AppID的開關的)


Apple Developer操作方式

可能出現(xiàn)的問題

1、CNCopyCurrentNetworkInfo返回為NULL

解決方法:
(1)首先檢查 AppID 的 Access WiFi Information 開關。
(2)如果是出現(xiàn)在用戶使用App時出現(xiàn)的情況,而這種情況只出現(xiàn)在部分手機上(大部分手機能成功獲?。敲从锌赡苁沁@些手機iOS系統(tǒng)的 wifid 模塊 crash 了(因為某種原因),這樣會導致CNCopyCurrentNetworkInfo返回NULL。解決方法: Settings -> General(通用)-> reset(還原)-> Reset Network Settings(還原網(wǎng)絡設置),還原之后手機系統(tǒng)就可以重啟 wifid 模塊,CNCopyCurrentNetworkInfo就能成功獲取了,不過這樣會導致用戶手機需要重新輸入密碼連接WIFI。(解決方法原文

?著作權歸作者所有,轉(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)容