我有一个 iOS 应用程序作为外围设备和一个 OS X 应用程序作为中心,使用 CoreBluetooth 框架。OS X 应用程序连接到 iOS 应用程序,它们通过读取加密特征并输入随机代码来结合。一切正常,直到 iOS 应用程序重新启动。从那时起,每次我连接到 iOS 设备并尝试读取其任何特征时,它都会返回“句柄无效”-错误。解决此问题的唯一方法是从 OS X 的蓝牙首选项中删除设备并重新启动绑定过程。
我怀疑这个问题是由 OS X 对我设备的服务和特性的缓存引起的,看到当我使用两台 iOS 设备在重新启动后相互连接时,这个问题没有出现。
我正在寻找的是一种清除我的服务和特征的 OS X 缓存的方法。我熟悉删除com.apple.Bluetooth.plist并重新启动blued进程/打开/关闭蓝牙的方法。( blued 是否缓存 ATT 值,如何清除缓存?如何在 MacOS 上清除 CoreBluetooth 缓存?)
但是,删除 com.apple.Bluetooth.plist 需要我再次绑定 iOS 设备并输入代码。有没有办法清除缓存,但只能使用与我的应用程序相关的服务/特征?