【问题标题】:How can I clear the CoreBluetooth cache on MacOS?如何清除 MacOS 上的 CoreBluetooth 缓存?
【发布时间】:2013-12-31 11:33:09
【问题描述】:

我正在开发蓝牙 LE 设备,但由于 MacOS 对服务的缓存而遇到了麻烦。如果我尝试在正在开发的设备上删除服务或更改其 UUID,则更改不会显示在 Mac 上,而是继续从设备中看到旧的服务和 UUID 列表。我尝试转到另一台未与我的设备配对的 Mac,它看到了具有正确 UUID 的新服务列表,因此这似乎是我的开发 Mac 的缓存问题。

我在 /Library/Preferences 中找到了 com.apple.Bluetooth.plist 文件并将其删除,但系统将其以相同的数据放回原处,我认为系统已将缓存加载到内存中并且只是将其写回需要时出去。

有人知道如何擦除 MacOS CoreBluetooth 设备/服务缓存吗?

【问题讨论】:

    标签: macos core-bluetooth


    【解决方案1】:

    您也可以在终端中通过以下命令清除缓存:

    sudo rm /Library/Preferences/com.apple.Bluetooth.plist && sudo shutdown -r now

    这和约翰之前解释的一样;确保您没有正在进行的/未保存的进程(因为此命令将重新启动您的机器)。

    【讨论】:

      【解决方案2】:

      我终于找到了问题的根源——在名为 ByHost 的文件夹中的用户首选项文件夹中有一个缓存。以下是清除蓝牙缓存的步骤:

      • 关闭蓝牙
      • 从以下位置删除 com.apple.Bluetooth.plist /图书馆/首选项
      • 删除文件名为 com.apple.Bluetooth.somehexuuidstuff.plist 来自 ~/Library/Preferences/ByHost(注意这是用户偏好 文件夹,而不是系统文件夹)
      • 开启蓝牙

      这样做之后,我的外围设备的服务被正确识别。从我在网上找到的内容来看,/Library/Preferences 中可能还有一些其他的 com.apple.Bluetooth 文件,这些文件与 HID 或耳机或其他东西有关——我不知道删除这些文件是否重要,因为我没有将它们放在我的系统上。

      【讨论】:

      • 我在我的设备上经常遇到这个问题。对于 iOS(不是 OSX),我发现在 iOS 上,大约 80-90% 的时间只需关闭和打开 BT 即可消除缓存问题。剩下的 10-20%,我重新启动设备,它就可以工作了。
      • El Capitan 10.11.x 的每次更新都要求我删除“ByHost”plist 文件以使蓝牙再次工作,但我必须先重新启动。
      • 用 Sierra 试过这个,当我重新打开蓝牙时,CoreBluetoothCache 中的 19950 项仍在新创建的 com.apple.Bluetooth.plist 中
      • 这解决了我运行 Big Sur 的 16" MacBook Pro 不断重新连接到蓝牙扬声器设备的问题。这是我发现可以永久移除设备的唯一方法。
      • 更新:它实际上并没有解决问题。最终解决它的方法是从 Mac 开发人员的门户下载旧版蓝牙资源管理器,并禁用“简单配对”。在那之后,设备似乎在每次配对之前都会询问。然后我可以选中“忽略此设备”。在此之后,设备的连续自动配对似乎已停止。真是一团糟,Apple 的软件质量最近真的走下坡路了。
      猜你喜欢
      • 1970-01-01
      • 2014-06-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-12
      • 2011-05-10
      • 2011-09-08
      • 1970-01-01
      相关资源
      最近更新 更多