gpt4 book ai didi

macos - 清除 CoreBluetooth GATT 缓存而不删除绑定(bind)

转载 作者:行者123 更新时间:2023-12-01 09:26:04 24 4
gpt4 key购买 nike

我有一个 iOS 应用程序作为外围设备和一个 OS X 应用程序作为中心,使用 CoreBluetooth 框架。 OS X 应用程序连接到 iOS 应用程序,它们通过读取加密特征并输入随机代码来结合。一切正常,直到 iOS 应用程序重新启动。从那时起,每次我连接到 iOS 设备并尝试读取其任何特征时,它都会返回“句柄无效”-错误。解决此问题的唯一方法是从 OS X 的蓝牙首选项中删除设备并重新启动绑定(bind)过程。

我怀疑这个问题是由 OS X 对我设备的服务和特性的缓存引起的,因为当我使用两台 iOS 设备在重新启动后相互连接时没有出现该问题。

我正在寻找一种方法来清除我的服务和特征的 OS X 缓存。我熟悉删除com.apple.Bluetooth.plist并重新启动blued进程/打开/关闭蓝牙的方法。 (Does blued cache ATT values, and how to clear the cache?How can I clear the CoreBluetooth cache on MacOS?)

但是,删除 com.apple.Bluetooth.plist 需要我再次绑定(bind) iOS 设备并输入代码。有什么方法可以清除缓存,但只能使用与我的应用相关的服务/特征?

最佳答案

事实证明这比我想象的要容易。在 com.apple.Bluetooth.plist 中有一个 CoreBluetoothCache 键,其中包含一个包含一些缓存服务和内容的字典。棘手的部分是编辑缓存而不用蓝写。无论如何,这是要走的路(在终端):

sudo defaults write /Library/Preferences/com.apple.Bluetooth CoreBluetoothCache -dict
sudo launchctl unload /System/Library/LaunchDaemons/com.apple.blued.plist
sudo launchctl load /System/Library/LaunchDaemons/com.apple.blued.plist

在此之后,CoreBluetooth 实际上会重新发现服务并以正确的方式读取特征。

关于macos - 清除 CoreBluetooth GATT 缓存而不删除绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23549859/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com