我目前正在使用Corebluetooth,我的手机充当中心,还有一个独立的外围设备。
我使用didUpdateValueFor委托方法成功从外围设备读取数据。我遇到的问题是我在同一时间发送多个信息包。
例如,我发送" abc"首先和" def"后来。当中心更新来自外围设备的指示读数时,我应该能够得到" abcdef"在末尾。如果我以每秒10个数据包的速度发送指示,这可以正常工作。
然而,一旦我的速度达到默认指示速度,它就太快了,中央无法跟上。我只得到第一个指示" abc",但我从未收到" def"的指示。
有没有办法可以强制didUpdateValueFor方法同时运行,因此无论速度如何都会捕获所有传入的通知?
答案 0 :(得分:2)
best-practices chapter of the Core Bluetooth Programming Guide建议通过setNotifyValue:forCharacteristic:使用订阅,而不是普通读取,以获取经常更改的特征。
您的问题不清楚您是通过readValueForCharacteristic使用订阅还是投票:
答案 1 :(得分:1)
我认为您的意思是didUpdateValueForCharacteristic
而不是didWriteValueForCharacteristic
。否则,问题似乎不正确,因为didWriteValueForCharacteristic
不能用于从远程设备读取数据(除非您使用错误代码进行通信 - 您不应该这样做)。)
有两种方法可以将数据从外设推送到中心:指示和通知。
我看到了当前实现可能不正确的多种方式:
如果指定的特征配置为允许通知和指示,则调用此方法仅启用通知。