iOS Bluetooth LE 无法以编程方式获取通知,但可以在其他应用程序中获取
iOS Bluetooth LE cant get notification programatically but can in other apps
我正在尝试让我的 iOS 程序与自定义蓝牙 LE 设备进行通信。我可以连接到它,读取所有服务,并读取每个服务的所有 CBCharacteristic
对象。
我正在尝试在某个 CBCharacteristic
更新时收到通知。 CBCharacteristic.properties
设置为 0x10(通知),但 CBCharacteristic.isNotifying
为假。
调用以下代码行后:
myDevice.peripheral.setNotifyValue(true, forCharacteristic: myChar)
我希望通过 CBPeripheralDelegate
函数接收通知:
func peripheral(peripheral: CBPeripheral, didUpdateValueForCharacteristic characteristic: CBCharacteristic, error: NSError?) {}
但它永远不会被调用。
此外,使用 LightBlue Explorer app from PunchThrough.com 我可以收到通知,所以我知道这是可能的。 LightBlue 应用程序在做什么而我不是?
有人见过类似的东西吗?
供参考,设备使用WLT2564M蓝牙模块。我也可以使用
读取值
myDevice.peripheral.readValueForCharacteristic(myChar)
没有任何问题。
需要检查的几件事:
peripheral
属性需要在使用期间持续存在
- 您一定已经连接到它(同时没有断开连接)
- 检查
delegate
是否设置正确
- 检查日志
- 确保您实施
peripheral:didUpdateNotificationStateForCharacteristic:error:
并在此处记录任何错误
我正在尝试让我的 iOS 程序与自定义蓝牙 LE 设备进行通信。我可以连接到它,读取所有服务,并读取每个服务的所有 CBCharacteristic
对象。
我正在尝试在某个 CBCharacteristic
更新时收到通知。 CBCharacteristic.properties
设置为 0x10(通知),但 CBCharacteristic.isNotifying
为假。
调用以下代码行后:
myDevice.peripheral.setNotifyValue(true, forCharacteristic: myChar)
我希望通过 CBPeripheralDelegate
函数接收通知:
func peripheral(peripheral: CBPeripheral, didUpdateValueForCharacteristic characteristic: CBCharacteristic, error: NSError?) {}
但它永远不会被调用。
此外,使用 LightBlue Explorer app from PunchThrough.com 我可以收到通知,所以我知道这是可能的。 LightBlue 应用程序在做什么而我不是?
有人见过类似的东西吗?
供参考,设备使用WLT2564M蓝牙模块。我也可以使用
读取值myDevice.peripheral.readValueForCharacteristic(myChar)
没有任何问题。
需要检查的几件事:
peripheral
属性需要在使用期间持续存在- 您一定已经连接到它(同时没有断开连接)
- 检查
delegate
是否设置正确 - 检查日志
- 确保您实施
peripheral:didUpdateNotificationStateForCharacteristic:error:
并在此处记录任何错误