我有一个使用 WIFI 连接到外部设备的应用程序,我曾经通过检查 WIFI SSID 来验证 iPhone 是否已连接到该设备。当 iOS 13 发布时,这个问题被阻止了,我通过请求位置权限来获取 SSID 来修复它。
我现在尝试使用启用了位置服务的 iOS 14 beta,但无法获取 WIFI SSID,但是相同的代码适用于 iOS 13。
这是我打电话时收到的日志CNCopyCurrentNetworkInfo
nehelper sent invalid result code [1] for Wi-Fi information request
nehelper sent invalid response: <dictionary: 0x1e815f3e0> { count = 1, transaction: 0, voucher = 0x0, contents =
"XPCErrorDescription" => <string: 0x1e815f548> { length = 18, contents = "Connection invalid" }
}
nehelper sent invalid response for Wi-Fi information request: <dictionary: 0x1e815f3e0> { count = 1, transaction: 0, voucher = 0x0, contents =
"XPCErrorDescription" => <string: 0x1e815f548> { length = 18, contents = "Connection invalid" }
知道如何解决这个问题吗?
谢谢
更新:仅当请求位置访问时精确位置打开时才有效
我使用以下方法在 iOS 14 及更早版本中实现此目的。
导入网络扩展
func getNetworkInfo(compleationHandler: @escaping ([String: Any])->Void){
var currentWirelessInfo: [String: Any] = [:]
if #available(iOS 14.0, *) {
NEHotspotNetwork.fetchCurrent { network in
guard let network = network else {
compleationHandler([:])
return
}
let bssid = network.bssid
let ssid = network.ssid
currentWirelessInfo = ["BSSID ": bssid, "SSID": ssid, "SSIDDATA": "<54656e64 615f3443 38354430>"]
compleationHandler(currentWirelessInfo)
}
}
else {
#if !TARGET_IPHONE_SIMULATOR
guard let interfaceNames = CNCopySupportedInterfaces() as? [String] else {
compleationHandler([:])
return
}
guard let name = interfaceNames.first, let info = CNCopyCurrentNetworkInfo(name as CFString) as? [String: Any] else {
compleationHandler([:])
return
}
currentWirelessInfo = info
#else
currentWirelessInfo = ["BSSID ": "c8:3a:35:4c:85:d0", "SSID": "Tenda_4C85D0", "SSIDDATA": "<54656e64 615f3443 38354430>"]
#endif
compleationHandler(currentWirelessInfo)
}
}
获取当前网络信息:
var currentNetworkInfo: [String: Any] = [:]
getNetworkInfo { (wifiInfo) in
currentNetworkInfo = wifiInfo
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)