CNCopyCurrentNetworkInfo 不适用于 iOS 14

2024-01-06

我有一个使用 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(使用前将#替换为@)

CNCopyCurrentNetworkInfo 不适用于 iOS 14 的相关文章

随机推荐

  • 如何从 int 转换为 char*?

    我知道的唯一方法是 include
  • 将 JSON 文件导入 Windows 10 上的 Postgresql 11

    我有一个 JSON 文件 C sensors 201802091904 json 该数据文件与 PostgreSQL 安装位于同一本地驱动器上 以下是 JSON 的示例 Data collection of property value p
  • 在 Blackberry Playbook 模拟器中打开 .bar 文件

    您好 我有一个早期版本的 Playbook 应用程序 是我们的一位开发人员在 Flash Builder 中为我们制作的 它是一个 bar 文件 我已经安装了所有必需的 Abode 和 RIM SDK 密钥和模拟器 并且可以在 Flash
  • 如何创建从其他几个组件继承的Delphi组件?

    我发现有关如何创建 delphi 组件的教程很好 但它们只使用现有组件之一作为继承操作的对象 像这样的东西 unit CountBtn interface uses Windows Messages SysUtils Classes Gra
  • 重命名属性名称并更改多个对象的值

    在下面的对象中 我想更改属性名称 thumb to thumbnail 我还想更改的值title包括 span tags 这是我的对象 var data thumb images 01 png title My title thumb im
  • 带键的数组的 Twig for 循环

    我使用 Twig 并且有一个带有如下键的数组 array 1 alpha array 2 bravo array 3 charlie array 8 delta array 9 echo 我想拿到钥匙 1 2 3 8 9 和内容 alpha
  • 无效操作异常

    我创建了一个 WCF 服务 在 IIS 上托管时运行良好 现在 我采用了相同的服务 并在 WPF 中创建了一个主机应用程序 当尝试从该应用程序启动该服务时 出现以下异常 The HttpGetEnabled property of Serv
  • 与 KeyValuePair 键上的列表相交?

    如何根据键插入两个键值对列表 我努力了 List
  • jQuery UI Accordion - 如何完全删除样式?

    我喜欢 jQuery 手风琴 http jqueryui com demos accordion 的功能 但是我不想要这种风格 我想摆脱所有的样式 img 边框 颜色等 我没有看到这个选项 这是他们应该添加的内容 还是我误会了 您可以制作自
  • linux下c语言蓝牙编程

    我正在尝试在 linux ubuntu 中运行基本的 c 代码来搜索蓝牙设备 但我遇到了一些问题 通过使用命令sudo apt get install bluez 要安装所需的blueZ库 说明bluez已经是最新版本了 但出现错误 无法找
  • PHP 正则表达式查找自定义添加的 HTML 标签之间的文本

    我有以下场景 Got an HTML模板将用于的文件mailing 这是一个简化的示例 table tr td Heading 1 td td heading 2 td tr table
  • http.sys 实现

    我们都知道有一个名为 http sys 的二进制文件内核模式驱动程序在我们的 Windows 中 它为我们进行 HTTP 处理 这基本上就是我们所知道的一切 但今天我想 嘿 我们所有的网络东西 比如 TCP IP 之类的东西都在这里 在用户
  • 有充分的理由不使用 ORM 吗? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 查找并迭代android中的所有短信/彩信

    首先 也是最重要的 我发现了这个answer https stackoverflow com a 6446831 2415237特别有帮助 然而 这让我想知道如何找到这些信息 我似乎不知道如何迭代收件箱中的所有消息 我当前的解决方案使用Ur
  • Clearerr 是用来做什么的?

    我试图了解 stdio 功能何时clearerr 应该使用 例如 如果我fread or fwrite 在有效的FILE 并得到一个简短的计数ferror是真的 我能做什么 从我到目前为止所读到的来看 fread and fwrite 很健
  • 打字稿:找不到名称“代理”

    我需要声明一个 Proxy 类型的新变量 来自 ES6 规范 myProxy Proxy 但我收到下一个错误 找不到名称 代理 我该如何修复它 假设您将目标设置为es2015或包括库es2015使用lib选项 您可以创建一个Proxy 诀窍
  • 更新包并防止其恢复为原始状态

    我想升级包 ggplot2 library ggplot2 packageDescription ggplot2 Version gt 0 8 3 但当前版本是0 8 7 我尝试了 update packages 它似乎工作正常 但它仍然返
  • 如何获取临时文件名?

    我看过一些与我的问题相关的帖子 但没有一个能完全解决这个问题 我需要在标准临时目录中创建一个文件 完成写入后 将其移动到其他位置 这个想法是 该文件在下载时被视为临时文件 在下载完成后被视为永久文件 我正在尝试通过致电mkstemp htt
  • 将数据从一个纬度经度网格插入到另一个纬度经度网格上?

    我有两个位于经纬度网格上的数据数组 第一个 A 的形状为 89 180 第二个 B 的形状为 94 192 A 的纬度按降序排列 从 88 到 88 经度按升序从 0 到 358 B 的纬度按降序从 88 54199982 到 88 541
  • CNCopyCurrentNetworkInfo 不适用于 iOS 14

    我有一个使用 WIFI 连接到外部设备的应用程序 我曾经通过检查 WIFI SSID 来验证 iPhone 是否已连接到该设备 当 iOS 13 发布时 这个问题被阻止了 我通过请求位置权限来获取 SSID 来修复它 我现在尝试使用启用了位