没有姓名或地址。 CBCentralManager 不再在 macOS 12 上运行

2024-03-29

自从我将 macOS 更新到 macOS 12 以来,我每次在使用 CoreBluetooth 时都会遇到问题。 在我的一个应用程序中,我将使用以下命令列出所有 BLE 设备CGCentralManager class.

这已经有效多年了。但现在,当我启动应用程序时,Xcode 中会出现以下输出:

[CoreBluetooth] No name or address
[CoreBluetooth] No name or address
[CoreBluetooth] No name or address
[CoreBluetooth] No name or address
[CoreBluetooth] No name or address

macOS控制台应用程序有很多这样的消息(我不知道这是否相关,该过程是bluetoothd而不是我的应用程序):

Destroying pairing agent for session <appname>
Erasing session 0x7f795824af00 from SessionMap for "appname-2890-84"
Received 'stop scan' request from session "com.apple.bluetoothd-central-143-2" updateScanParams:YES shouldUpdateState:YES
Stopping scan as there are no remaining scan agents permitted to scan

如果我的应用程序没有运行,蓝牙进程似乎相当安静。一旦启动,蓝牙进程似乎有某种问题。问题是:哪一个?

禁用沙箱并没有改变任何东西,所以我不认为它与缺少权限有关。

我还在一个新应用程序中构建了一个非常基本的示例。我实例化了一个新的 CBCentralManager 并开始扫描。这些设备被发现了。 我的主应用程序没有触发委托功能。一个都没有。

有人遇到同样的问题吗?


更新:Apple 似乎已经修复了 macOS 12.3 中的错误。


下面的原始答案适用于 12.0、12.1 和 12.2。

Apple 似乎已经更新了 macOS,使其表现得更像 iOS。这scanForPeripheralsWithServices 的文档:选项: https://developer.apple.com/documentation/corebluetooth/cbcentralmanager/1518986-scanforperipheralswithservices?language=objc say:

您的应用程序可以通过指定bluetooth-central后台模式在后台扫描蓝牙设备。为此,您的应用必须通过在 serviceUUIDs 参数中指定来显式扫描一项或多项服务。在后台扫描时,CBCentralManager 扫描选项无效。

命令行程序永远不能被视为前台应用程序,因为它们不是 .app,因此适用后台扫描规则。 (这是推测,但我怀疑NSWorkspace.frontmostApplication https://developer.apple.com/documentation/appkit/nsworkspace/1532097-frontmostapplication?language=objc可能用于确定“前台”应用程序)。

如果后台扫描可接受并且正在使用的蓝牙设备在广告数据中包含服务 UUID,则可以向scanForPeripheralsWithServices:options:.

如果没有,那么您必须创建一个签名的 .app 才能使用前台扫描。

一些额外的细节和一个丑陋的解决方法,用于在没有 GUI 的情况下运行命令行工具作为 .app(在 XCode 调试器之外),可以在以下位置找到:https://github.com/hbldh/bleak/issues/720 https://github.com/hbldh/bleak/issues/720。此链接是特定于 Python 的,但应该能够将其推断到其他环境。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

没有姓名或地址。 CBCentralManager 不再在 macOS 12 上运行 的相关文章

  • java.io.IOException:[JSR82]接受:连接未创建(失败或中止)

    我想在 Samsung GALAXY TAB 8 9 中创建 BluetoothServerSocket 安卓4 04 当调用 mmServerSocket accept 时 抛出 java io IOException JSR82 接受
  • 如何让我的应用程序音频在说话时很好地中断 iPhone 音频

    我的 iOS 7 应用程序会在必要时发出文本声音 我想做的是让用户在我的应用程序运行时收听他的音乐或播客 或任何其他使用音频的应用程序 预期的行为是 当我的应用程序说话时 其他音频会混合或闪避 然后其他音频会立即恢复到初始级别 我尝试了很多
  • iOS 蓝牙应用程序仅在后台模式下“由于信号 9 而终止”

    我正在 Objective c 中开发一个 IOS 应用程序 它显示来自蓝牙 BLE 的心率以及相应的图形 如果应用程序在前台运行 则一切都可以正常分叉 没有任何问题 但是 如果应用程序进入后台模式 BLE 测量仍然会继续 我正在使用 使用
  • 使用 CoreBluetooth CBL2CAPChannel 移动数据

    我已经设置了一些数据传输功能 使用CoreBluetooth CBL2CAPChannel in a Swift iOS应用程序 这是发送数据的函数 func sendData outStream OutputStream gt Bool
  • 从 Android 4.2 更新到 Android 4.3 后,使用蓝牙 SPP 配置文件的应用程序无法运行

    我写了一个基于bluetoothChat的简单应用程序 我使用 SPP 配置文件在手机和蓝牙模块之间进行通信 电话始终发起通信 该应用程序在 Android 4 2 Nexus 3 和 Samsung Galaxy 3 上完美运行 更新到A
  • 在c#中通过设备名称获取蓝牙设备的COM端口

    我用 C 编写一些代码来获取映射具有特定名称的蓝牙设备的 COM 端口 我尝试了几种与列出的类似的解决方案here https stackoverflow com questions 25908734 get name of bluetoo
  • 如何通过蓝牙将文件从Android发送到电脑

    任何人都可以给出蓝牙服务器客户端的工作示例 从Android到计算机 我想将数据从 Android 手机传输到 C 应用程序 现在我使用下面的 Android 代码 效果很好 但它仍然无法将数据传输到我的计算机 可能无法写入这些数据 任何人
  • 如何将 iPhone 音频路由到蓝牙耳机

    我正在尝试使用 AVAudioPlayer AVAudioSession 和 AudioSessionSetProperty 将音频输出到蓝牙耳机 不是 A2DP 似乎有选择蓝牙耳机作为输入的函数 kAudioSessionProperty
  • iOS应用程序如何设置Core蓝牙广告率?

    我运行 iPad 的 iOS 应用程序广告过于频繁 随后似乎向我的嵌入式蓝牙 LE 设备发送垃圾邮件 该设备正在从 iPad 读取广告数据 如何减慢 iPad 的广告速度 Core Bluetooth 中的广告速率不可设置 没有公共 API
  • 检查 CBPeripheralManager.authorizationStatus() 现在它已被弃用

    CBPeripheralManager authorizationStatus and CBPeripheralManagerAuthorizationStatus根据苹果文档已弃用 现在检查用户是否已授予在后台使用蓝牙的权限的正确方法是什
  • 蓝牙广播

    我想使用蓝牙将数据从一台设备广播到附近的众多设备 现在 我知道蓝牙广播的存在 但是可以使用 Android 现有的 API 吗 如果没有 是否有其他可用的第三方 API 有能力实现这一点 关于蓝牙广播的另一个问题 您是否可以开始收听正在进行
  • ios CoreBluetooth[警告]未知错误:1309

    运行我正在开发的蓝牙应用程序时 我偶尔会在控制台上收到消息 CoreBluetooth 警告 未知错误 1309 即使该消息指出这是警告 它也会停止应用程序的执行 我已经能够通过关闭蓝牙设置然后重新打开来解决此问题 谁能告诉我导致此问题的原
  • 核心蓝牙发送数据包时速度变慢

    我遇到一个问题 即使用 peripheral writeValue dataPacket forCharacteristic writeChar type CBCharacteristicWithResponse 并且 iOS 设备实际物理
  • 蓝牙文件发送

    我是蓝牙开发的新手 我发现了 32netfeet 现在我可以搜索附近的蓝牙设备并连接到它们 但如何发送文件 例如 SendTest txt 我尝试使用 OBEX 的 buttonclick 事件 但我不明白这是我的示例代码 using In
  • 扫描 iPhone 范围内的蓝牙设备需要多长时间?

    我知道 iPhone 蓝牙功能要到 3 0 才能通过 SDK 访问 但是需要多长时间才能找到该区域的设备 它取决于该区域的设备数量吗 如果范围内有大约 5 个设备 扫描发现所有设备是否需要花费 30 秒的时间 我知道有很多未知因素 但我试图
  • 蓝牙连接:MODE_IN_CALL 与 MODE_IN_COMMUNICATION

    我有一个应用程序需要连接到无线蓝牙耳机来收集原始音频 MODE IN CALL 适用于某些设备 MODE IN COMMUNICATION 适用于其他设备 麦克风可以工作 但我失去了音频 反之亦然 我使用的是 Nexus 5x 和 Sams
  • 没有 GameKit 的 iOS 蓝牙

    我已经知道使用 GameKit 我只能连接到运行相同应用程序的其他 iOS 设备 但我想连接到 Parallaz EasyBluetooth 芯片来发送和接收命令 因此我需要不同的解决方案 我想有一些针对越狱设备的库 但我不知道 你能给我一
  • 如果设备关闭,尝试在 IOS 应用程序中检索之前配对的蓝牙设备将不会响应失败

    很抱歉标题很长 但我们在使用 iOS 版 corebluetooth 时遇到了一个非常有趣的问题 我们正在 CBCentralManager 中发出对retrievePeripherals 的调用 并且能够找到之前配对的设备 不管设备是打开
  • 如何使 Raspberry Pi 3 可被 iOS 和 CoreBluetooth 发现?

    我有一个 Raspberry Pi 3 我正在尝试使其可供 iOS 设备发现 我跑了sudo hciconfig hci0 piscan让它被发现 我可以用我的 iMac 看到它 在 iOS 上 我使用 CoreBluetooth 并扫描附
  • Android:每秒更新蓝牙 RSSI

    我试图每秒显示蓝牙信号强度 RSSI Timer 来自检测到的设备 但我无法调用onRecive 多次因为接收器生命周期 http developer android com reference android content Broadc

随机推荐

  • 如何使用 igraph 或 tnet 在 R 中创建二分网络

    我有一个两种模式网络的边缘列表 类似于 person Event Amy football game Sam picnic Bob art show 我想在 R 中对此进行分析 但似乎我尝试的一切都失败了 将其转换为单模式网络会遇到内存限制
  • JSON.stringify,改变key的大小写

    我正在使用返回 json 的 Web 服务 并将 json 存储在本地变量中 json 表示一个简单的业务对象 例如 var entry FirstName John LastName Doe 大小写是这样的 因为根据我们的命名约定 它与
  • 使用 jQuery Ajax 将对象列表传递到 MVC 控制器方法

    我正在尝试使用以下方法将对象数组传递到 MVC 控制器方法中 jQuery 的 ajax 函数 当我进入 PassThing C 控制器方法时 参数 things 为空 我已经尝试过使用列表类型 的论点 但这也不起作用 我究竟做错了什么
  • Android NDK:无法解析函数 va_start / va_end

    我尝试在我的项目中使用 va start 和 va end 函数 但 eclipse 不想将其解析为函数 gcc 编译整个项目没有错误 我的文件 cpp include
  • PHP Soap Server 响应格式

    我正在 PHP 中制作 SOAP Web 服务 该服务必须满足客户端 XSD 文件的要求 以下是客户提供的 XSD 文件的链接 http pastebin com MX1BZUXc http pastebin com MX1BZUXc 他们
  • 从 Fluent Mongo 过渡到 Mongo C# 1.4 驱动程序

    我们正在使用 FluentMongo 现在 LINQ 支持已添加到 C 驱动程序中 我们将删除对 Fluent 的依赖并单独使用官方 C 驱动程序 有人已经这样做过吗 它简单明了吗 有什么需要我们注意的吗 希望其他人也能向您报告 但作为 1
  • 自定义 ng 服务来代理对 /api 的调用?

    我使用 ng CLI 创建了一个新应用程序 效果非常好 ng new babysteps cd babysteps ng serve ngserve 使用 webpack 来组装应用程序 为了充分测试它 我需要服务 api 来自我的 API
  • tess4j 与 Spring mvc

    我已经尝试将 tess4j 作为独立的 java 程序 并且它可以正常工作并给出文本输出 现在我正在尝试创建一个 spring mvc web 项目 在 pom 中添加 tess4j 的依赖项 并且我已在我的项目中添加了 tess4j 源
  • .NET Core 2 与 MySql.Data 导致权限错误

    我正在使用 Dapper NET Core 2 和 MySql Data 在 Linux 上创建一个小型 REST API 不幸的是 我的连接上不断收到此错误 Exception has occurred CLR System IO Fil
  • 如何显示标准 Windows 数据源 (ODBC) 对话框

    有没有简单的方法可以从 winforms 应用程序显示标准 Windows 数据源对话框 我想向用户展示它并选择一个系统 dsn 或创建一个新的 dsn 并返回一个数据源名称 我没有在 net 中找到任何对现有包装器的引用 所以我想我只能使
  • 何时在 HTML 表格中使用 tbody、colgroup、thead 等? [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 当我学习 HTML 表格时 我没有学到 tbody thead tfoot colgroup 你什么时候应该使用它们 我访问了 W3Schools 网
  • 如何将 WebSocket 集成到经典 ASP Web 应用程序之上?

    在我的一个项目中 我有一个非常活跃的经典 ASP 站点 需要将基于实时事件的提要集成为现有 UI 的一部分 未来计划将站点架构升级为 MVC 或 MVP 但这一新功能必须同时实现 我决定采用 WebSocket 方法来实现此目的 因为这最终
  • jq 从数组中选择值

    我有以下带有示例值的 JSON 文件 files fileName FOO md5 blablabla fileName BAR md5 alaldlafj 现在我想要的是返回 md5 值 例如文件名是 FOO 为此我有以下声明jq cat
  • urllib2 连接超时错误

    我正在尝试使用 urllib2 打开页面 但我不断收到连接超时错误 我正在使用的线路是 f urllib2 urlopen url 确切的错误是 URLError
  • C# + IE9 JS 引擎脉轮?

    我正在开发一个很酷的 C 应用程序 它在我们的模型层中大量使用 JS 我们希望使用 IE9 Chakra Javascript 引擎来提高速度 问题 我可以在 C 中使用 Chakra 并将 JS 对象作为 COM 对象进行交互吗 调用 J
  • 如何从哨兵网址创建redis python客户端?

    我的网址为 BROKER URL sentinel 192 168 10 1 26379 0 sentinel 192 168 10 2 26379 0 sentinel 192 168 10 3 26379 0 在此 redis运行在19
  • 在 Angular 中动态添加 Control 到 FormGroup

    如何在 Angular 中动态地将 FormControl 添加到 FormGroup 中 例如 我想添加一个名为 new 的强制控件 其默认值为 addControl https angular io api forms FormGrou
  • HTML TD 可点击

    我有一个菜单 您可以在右上角看到 www balibar co HTML div class shadow table tr td a Search a td td a Languages a td td a Login a td tr t
  • 当我尝试在字符串上使用 `json.load` 时,为什么会出现“'str' object has no attribute 'read'”? [复制]

    这个问题在这里已经有答案了 在 Python 中我收到一个错误 Exception
  • 没有姓名或地址。 CBCentralManager 不再在 macOS 12 上运行

    自从我将 macOS 更新到 macOS 12 以来 我每次在使用 CoreBluetooth 时都会遇到问题 在我的一个应用程序中 我将使用以下命令列出所有 BLE 设备CGCentralManager class 这已经有效多年了 但现