iOS 12中無(wú)法獲取WiFi的SSID了?別慌看這里!
前言
SSID全稱Service Set IDentifier, 即Wifi網(wǎng)絡(luò)的公開名稱.在IOS 4.1以上版本提供了公開的方法來(lái)獲取該信息.
但是最近,Apple于北京時(shí)間9月17日晚在官網(wǎng)發(fā)布了Xcode 10正式版,QiShare團(tuán)隊(duì)成員于9月18日中午統(tǒng)一升級(jí)以對(duì)現(xiàn)有項(xiàng)目做適配。期間,作者發(fā)現(xiàn)某項(xiàng)目使用Xcode 10編譯出的App在iOS 12中無(wú)法獲取WiFi的SSID。
敲黑板:獲取WiFi的SSID是智能硬件App中配網(wǎng)模塊的常用功能,各大廠商要針對(duì)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中,經(jīng)斷點(diǎn)調(diào)試發(fā)現(xiàn)info為nil。猜測(cè)是CNCopyCurrentNetworkInfo方法在iOS 12中有了變化。通過(guò)查看官方文檔,發(fā)現(xiàn)文檔中增加了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中為應(yīng)用授權(quán)獲取WiFi信息的能力。授權(quán)后,Xcode會(huì)自動(dòng)在App ID和應(yīng)用的權(quán)限列表中增加獲取WiFi信息的權(quán)限。
解決方法
看到這里,解決方案就有了:Xcode -> [Project Name] -> Targets -> [Target Name] -> Capabilities -> Access WiFi Information -> ON
解決方案步驟圖示
按照上述方案操作完畢后,會(huì)發(fā)現(xiàn)工程的.entitlements文件中多了一對(duì)Key-Value:
.entitlements文件
至此,就能在iOS 12+中正常獲取到WiFi的SSID了。
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問(wèn)大家可以留言交流,謝謝大家對(duì)腳本之家的支持。
級(jí)別: ★☆☆☆☆
標(biāo)簽:「iOS 12」「SSID」「Access WiFi Information」「CNCopyCurrentNetworkInfo」
作者: Xs·H
審校: QiShare團(tuán)隊(duì)
相關(guān)文章
iOS密碼在進(jìn)入后臺(tái)1小時(shí)后重新設(shè)置
這篇文章主要介紹了iOS密碼在進(jìn)入后臺(tái)1小時(shí)后重新設(shè)置的相關(guān)資料,需要的朋友可以參考下2017-08-08深入解析iOS應(yīng)用開發(fā)中對(duì)設(shè)計(jì)模式中的橋接模式的使用
這篇文章主要介紹了iOS應(yīng)用開發(fā)中對(duì)設(shè)計(jì)模式中的橋接模式的使用,bridge橋接模式中主張把抽象部分與實(shí)現(xiàn)部分分離,需要的朋友可以參考下2016-03-03個(gè)人對(duì)于異步和多線程的關(guān)系的理解分享
異步和多線程并不是一個(gè)同等關(guān)系,異步是最終目的,多線程只是我們實(shí)現(xiàn)異步的一種手段。異步是當(dāng)一個(gè)調(diào)用請(qǐng)求發(fā)送給被調(diào)用者,而調(diào)用者不用等待其結(jié)果的返回而可以做其它的事情。2014-08-08LRecyclerView側(cè)滑iOS阻塞效果不完整的解決辦法
這篇文章主要介紹了LRecyclerView側(cè)滑iOS阻塞效果不完整的解決辦法,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友參考下2016-12-12淺談iOS應(yīng)用中的相關(guān)正則及驗(yàn)證
下面小編就為大家?guī)?lái)一篇淺談iOS應(yīng)用中的相關(guān)正則及驗(yàn)證。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-04-04