没有姓名或地址。 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 上运行 的相关文章

  • CoreBluetooth 应用程序在后台到底可以做什么?

    主题已经说明了一切 真的 就其存在而言 文档表明针对 iOS 设备上运行的 CoreBluetooth 框架编写的应用程序可以将 bluetooth central 添加到其后台权限列表中 从而在不活动时处理某种蓝牙事件 但exact事件是
  • BLE MTU 更高但速度相同

    我正在 iOS 7 中使用 CoreBluetooth 并成功地让两个设备在彼此之间发送大量数据 一个是中央设备 一个是外围设备 在 iPhone 5 和 4S 之间 我的 MTU 为 20 字节 在 iPhone 5s 和 iPhone
  • 在 iOS13 中注册蓝牙 BR/EDR(经典)连接

    从 iOS 13 开始 应该可以注册 BR EDR 蓝牙 经典 设备的连接事件 我已按照中提供的说明进行操作全球开发者大会主题演讲 https developer apple com videos play wwdc2019 901 特别是
  • Android 和 iOS 如何扫描蓝牙信标而不出现电池问题?

    如果我想在 Android 或 IOS 中开发自己的 iBeacon 服务 它必须实用 这意味着客户可以使用我的服务而不会出现电池短缺的情况 我认为即使 iBeacon 技术基于蓝牙低功耗 它仍然可能缺乏电池 这是因为应用程序必须始终运行才
  • OS X 蓝牙编程

    我想创建 OS X 应用程序以通过蓝牙与 Lego Mindstorms NXT 2 0 配合使用 我尝试用 Objective C 和 Python 来实现 但是两者都存在一些问题 关于目标 C 我只发现this https develo
  • UWP SerialDevice.FromIdAsync 在 Windows 10 上抛出“未找到元素”(HRESULT 异常:0x80070490)

    我想在 Xamarin Forms 应用程序中打开连接的蓝牙设备上的串行端口 这是代码 我简化了它以说明问题 string l gdsSelector SerialDevice GetDeviceSelector var l ardiDev
  • 32feet.net 如何在 C# 中异步发现附近的蓝牙设备

    我正在尝试使用32英尺 NET http 32feet codeplex comC 应用程序中的蓝牙库用于检测附近的设备 我的小应用程序的目的是通过人们手机的蓝牙功能让电脑知道谁在房间里 执行此类操作的最佳方法是让我想要 跟踪 的设备连接一
  • 连接关闭且应用程序终止后,BLE 堆栈反复重新连接到外设

    我有一个应用程序 它打开与 BLE 设备的短暂连接 执行一些特征读取和写入 然后断开并关闭连接 应用程序使用 autoReconnect false 并且设备未配对或绑定 我看到 Android 的一些非常奇怪的行为 它似乎反复且意外地重新
  • 调用 sdp_record_register() 时出现分段错误

    我正在尝试使用 BlueZ 在 SDP 中注册我的蓝牙服务 我跟随this http people csail mit edu albert bluez intro x604 html教程 代码编译成功 但当我运行它时 出现分段错误 即使是
  • iOS Swift - 使用蓝牙外部扬声器时音质较差

    我正在使用从 url 广播应用程序 流式传输的 iOS 应用程序 一旦我尝试通过外部扬声器或汽车音响系统等蓝牙设备从应用程序进行流传输 音频质量就会非常差且刺耳 当从 iOS 设备本身播放时 一切听起来都很好 扬声器和耳机 override
  • 没有 GameKit 的 iOS 蓝牙

    我已经知道使用 GameKit 我只能连接到运行相同应用程序的其他 iOS 设备 但我想连接到 Parallaz EasyBluetooth 芯片来发送和接收命令 因此我需要不同的解决方案 我想有一些针对越狱设备的库 但我不知道 你能给我一
  • 安卓蓝牙无法连接

    我遇到这个问题已经有一段时间了 但一直无法解决 我有一个 Android 应用程序 它将所有配对的设备放在列表视图中 当您单击列表项之一时 它将发起连接到该蓝牙设备的请求 我可以毫无问题地获取设备列表及其地址 问题是 一旦我尝试连接 我就会
  • 0x0A 和 0x0D 之间的区别

    我正在研究蓝牙 我试图编写代码以在连接时继续监听输入流 我遇到了以下代码片段 int data mmInStream read if data 0x0A else if data 0x0D buffer new byte arr byte
  • 如何从设备名(UITableViewCell)的tableview中显示蓝牙支持的服务?

    我正在开发蓝牙应用程序 我在表视图中有一个可用蓝牙设备的名称 如果按下一个设备意味着我想知道另一个带有表视图的视图控制器中支持的所有服务 UUID 名称 给我一个想法 1 外设管理器 NSObject 2 FirstViewControll
  • 如何在 Mac OS X 10.9.5 上以编程方式读取低功耗蓝牙传输的数据?

    我正在尝试阅读蓝牙低功耗 http www bluetooth com Pages low energy tech info aspx使用 Ruby 以编程方式传输数据 低功耗蓝牙技术不支持标准规范 v4 0 中的串行端口配置文件 SPP
  • 在 Android 中通过蓝牙接收音频

    我想创建一个能够接收音频流的 Android 应用程序 我想过使用 A2DP 配置文件 但似乎 Android 不支持 A2DP 接收器 看起来有很多人正在寻找这个问题的解决方案 但是接收普通的比特流 然后在应用程序中将数据转换为音频呢 我
  • 如何使用基于HM-10蓝牙模块的BLE Shield?

    我是 arduino 项目的新手 我想请你帮忙 我从 http imall iteadstudio com development platform arduino shields im130704001 html http imall i
  • 将 android 蓝牙客户端套接字连接到 ubuntu 服务器套接字时出现问题

    我正在编写一个 Android 应用程序 它应该通过蓝牙与服务器交换数据 服务器端位于运行 Ubuntu 的 PC 上 使用 bluez 库 用 C 或 C 编写 当我尝试连接到 PC 上的服务器套接字时 我的 Android 应用程序失败
  • 从 WP8 连接至 Polar H7 心率监测器

    有没有办法从 Windows Phone 8 连接到低功耗蓝牙设备 例如心率监测器 例如 Polar H7 我尝试过的一些背景 我看过这个 Windows 8 的示例 http code msdn microsoft com windows
  • bluetoothctl 到 hcitool 等效命令

    在 Linux 中 我曾经使用 hidd connect mmac 来连接 BT 设备 但自 Bluez5 以来 这种情况已经消失了 我可以使用 bluetoothctl 手动建立连接 但我需要从我的应用程序使用这些命令 并且使用 blue

随机推荐

  • 如何使用 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 这已经有效多年了 但现