我已经实现了从IOS设备到外围设备设备的连接。 然后,我还实现了这些服务的获取可用的服务和特征。 也可以打电话
peripheral.setNotifyValue(true, for: characteristic) or
peripheral.readValue(for: characteristic)
调用peripheral.readValue(for: characteristic)
触发器
func peripheral(_ peripheral: CBPeripheral, didUpdateValueFor characteristic: CBCharacteristic, error: Error?) { }
并从缓存获取价值。似乎无法在IOS中以编程方式刷新/清除 缓存。因此,每次调用它时,它都会恢复相同的值,直到重新启动应用程序/ BLE不会手动清除缓存。
调用peripheral.setNotifyValue(true, for: characteristic)
后,它会成功更新外围设备的状态,并调用相同的委托方法
func peripheral(_ peripheral: CBPeripheral, didUpdateValueFor characteristic: CBCharacteristic, error: Error?) { } just once.
一直在尝试使用IOS 11和12,iphone X,6 +,6s Plus完成任务。该设备可与Android正常运行,它可以获取价值更新通知。该设备也已通过RxBluetoothKit示例应用程序进行了检查,结果与我的相同(无法获得通知)。
似乎很多人都遇到了同样的麻烦。它可能是Core Bluetooth或IOS版本中的错误,因此它限制了用于通知的Hz范围。
您能否请您分享其他任何想法或解决方案,以解决此问题,以便有可能从外围设备获得通知。以编程方式清除缓存的选项也会有所帮助(有人提到了一些棘手的技巧)。
更新:该设备可用于OSX和MacBook Pro 2014以及BlueSee应用程序,但不能与用于iOS和iPhone 6s Plus的同一BlueSee应用程序一起使用。