如何解决iOS CoreBluetooth中的特征通知之间是否有最短时间限制?
我有一个连接到蓝牙外围设备的iOS应用程序。扫描,连接,服务/特征发现,读取,写入,通知均应正常工作。
假设我已如下实现了外围委托函数didUpdateValueFor characteristic
:
import Foundation
import CoreBluetooth
class myPeripheral : NSObject,CBPeripheralDelegate {
func getTimeStamp() -> String {
let date = Date()
let calendar = Calendar.current
let dateFormatter = DateFormatter()
dateFormatter.calendar = calendar
dateFormatter.dateFormat = "HH:mm:ss:SSS"
return dateFormatter.string(from: date)
}
public func peripheral(_ peripheral: CBPeripheral,didUpdateValueFor characteristic: CBCharacteristic,error: Error?) {
let value = characteristic.value.hexEncodedString()
let timeStamp = getTimeStamp()
if error == nil {
print("\(timeStamp) - New value: \(value)")
}
else {
print("Failure")
}
}
}
订阅特征后,这通常可以按预期工作。但是,有时外围设备会快速连续(〜1-3 ms)发送不同的新值。由于某种原因,在上面的实现中,只有最后一个值被打印两次。
外围更新的特征如下:
01
05
我的应用程序的输出:
13:10:56:201 - New value: 05
13:10:56:203 - New value: 05
我知道外围设备正确更新了特性,因为我们有一个运行中的android应用程序。我需要在应用程序中正确获取两个更新值,有人有想法吗?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。