在iOS12之前我們獲取WiFi名稱和WiFi地址是OK的殷费,但是升級(jí)到iOS12之后發(fā)現(xiàn)獲取不到了,筆者是在做埋點(diǎn)需求的時(shí)候,遇到的此問題包颁。開始我使用的測試機(jī)系統(tǒng)是11.3.1的,完全沒問題压真,但是換了一部iPhone X之后就拿不到WiFi名稱和地址了娩嚼,于是開始做調(diào)試,之后考慮是不是因?yàn)橄到y(tǒng)版本的原因滴肿,后來經(jīng)過驗(yàn)證確定是系統(tǒng)版本原因岳悟。于是就開始做iOS12 的適配,最終找的及解決方法是:看下圖
解決方法
Xcode -> [Project Name] -> Targets -> [Target Name] -> Capabilities -> Access WiFi Information -> ON ??這樣就解決了此問題泼差。
原因是:CNCopyCurrentNetworkInfo方法在iOS 12中有了變化贵少。通過查看官方文檔,發(fā)現(xiàn)文檔中增加了Important字樣的描述:
意思就是:在iOS 12+中使用此方法需要在Xcode中為應(yīng)用授權(quán)獲取WiFi信息的能力堆缘。授權(quán)后滔灶,Xcode會(huì)自動(dòng)在App ID和應(yīng)用的權(quán)限列表中增加獲取WiFi信息的權(quán)限。
按照上面的解決方法處理后吼肥,后發(fā)現(xiàn)工程中的證書文件.entitlements會(huì)有變化录平,多了一個(gè)鍵值對:
對應(yīng)的plist是:
現(xiàn)在就能在iOS 12+中正常獲取到WiFi名稱和WiFi地址了。