在iOS12之前我们获取WiFi名称和WiFi地址是OK的,但是升级到iOS12之后发现获取不到了,笔者是在做埋点需求的时候,遇到的此问题。开始我使用的测试机系统是11.3.1的,完全没问题,但是换了一部iPhone X之后就拿不到WiFi名称和地址了,于是开始做调试,之后考虑是不是因为系统版本的原因,后来经过验证确定是系统版本原因。于是就开始做iOS12 的适配,最终找的及解决方法是:看下图
解决方法
Xcode -> [Project Name] -> Targets -> [Target Name] -> Capabilities -> Access WiFi Information -> ON 这样就解决了此问题。
原因是:CNCopyCurrentNetworkInfo方法在iOS 12中有了变化。通过查看官方文档,发现文档中增加了Important字样的描述:
意思就是:在iOS 12+中使用此方法需要在Xcode中为应用授权获取WiFi信息的能力。授权后,Xcode会自动在App ID和应用的权限列表中增加获取WiFi信息的权限。
按照上面的解决方法处理后,后发现工程中的证书文件.entitlements会有变化,多了一个键值对:
对应的plist是:
现在就能在iOS 12+中正常获取到WiFi名称和WiFi地址了。