您好,登錄后才能下訂單哦!
前言
SSID全稱Service Set IDentifier, 即Wifi網絡的公開名稱.在IOS 4.1以上版本提供了公開的方法來獲取該信息.
但是最近,Apple于北京時間9月17日晚在官網發布了Xcode 10正式版,QiShare團隊成員于9月18日中午統一升級以對現有項目做適配。期間,作者發現某項目使用Xcode 10編譯出的App在iOS 12中無法獲取WiFi的SSID。
敲黑板:獲取WiFi的SSID是智能硬件App中配網模塊的常用功能,各大廠商要針對iOS 12適配一波了(@huawei.com; @mi.com; @360.com; @jd.com; @baidu.com; @orvibo.com; @scinan.com; ...)。
獲取WiFi的SSID的方法如下:
+ (NSString *)wifiSSID { NSString *ssid = nil; NSArray *ifs = (__bridge_transfer id)CNCopySupportedInterfaces(); for (NSString *ifnam in ifs) { NSDictionary *info = (__bridge_transfer id)CNCopyCurrentNetworkInfo((__bridge CFStringRef)ifnam); if (info[@"SSID"]) { ssid = info[@"SSID"]; } } return ssid; }
在iOS 12中,經斷點調試發現info為nil。猜測是CNCopyCurrentNetworkInfo方法在iOS 12中有了變化。通過查看官方文檔,發現文檔中增加了Important字樣的描述:
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+中使用此方法需要在Xcode中為應用授權獲取WiFi信息的能力。授權后,Xcode會自動在App ID和應用的權限列表中增加獲取WiFi信息的權限。
解決方法
看到這里,解決方案就有了:Xcode -> [Project Name] -> Targets -> [Target Name] -> Capabilities -> Access WiFi Information -> ON
解決方案步驟圖示
按照上述方案操作完畢后,會發現工程的.entitlements文件中多了一對Key-Value:
.entitlements文件
至此,就能在iOS 12+中正常獲取到WiFi的SSID了。
總結
以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對億速云的支持。
級別: ★☆☆☆☆
標簽:「iOS 12」「SSID」「Access WiFi Information」「CNCopyCurrentNetworkInfo」
作者: Xs·H
審校: QiShare團隊
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。