IOS Bluejay Framework, listen 方法不会继续监听,开始监听后退出
IOS Bluejay Framework, the listen methods will not keep listening, quits after starting to listen
我正在使用 Bluejay 框架编写一个将连接到我的 BLE 设备的应用程序。
我有一项服务可以在固件完成启动时传输数据。
我正在调用这个方法:
func listenLiveSignals()
{
let requestedChar = CharacteristicIdentifier(uuid: NotioModel.signalLiveData, service: ServiceIdentifier(uuid: NotioModel.SignalsService))
bluejay.listen(to: requestedChar, multipleListenOption: .replaceable) {[weak self] (result: ReadResult<NotioSignals>) in
print("Signals update")
switch result {
case .success(let signals):
self?.liveSignals = signals
case .failure(let err):
print("Error: \(err)")
}
}
}
在日志中我得到了这个
Queue will start Bluejay.ListenCharacteristic...
Will start listening to Characteristic: 9AFABEDB-50F5-4766-8EE1-709073D6EB08, Service: 9AFAABCD-50F5-4766-8EE1-709073D6EB08 on NOTIOFE46EEBB.
Listening to Characteristic: 9AFABEDB-50F5-4766-8EE1-709073D6EB08, Service: 9AFAABCD-50F5-4766-8EE1-709073D6EB08 on NOTIOFE46EEBB.
Queue has removed Bluejay.ListenCharacteristic because it has finished.
Queue is empty, nothing to update.
这是我用来连接外设的代码。
func connect(_ peripheral: PeripheralIdentifier) {
self.bluejay.connect(peripheral, timeout: .seconds(15)) { connectionResult in
switch connectionResult {
case .success:
print("Connection attempt to: \(peripheral.description) is successful")
case .failure(let error):
print("Error: \(error)")
}
}
}
我的项目也连接到加载了 BlinkyLed 服务的 Nordic 开发板,并且使用相同的代码连接到上面的按钮服务,效果很好,这让我有点莫名其妙。
如果有人知道为什么 Bluejay 这样做让我知道,或者如果您需要更多核心也请告诉我。
问题出在固件方面,BLE 设备需要我告诉它激活数据流。 XD 记录 API 非常重要,即使它是固件。
我正在使用 Bluejay 框架编写一个将连接到我的 BLE 设备的应用程序。 我有一项服务可以在固件完成启动时传输数据。
我正在调用这个方法:
func listenLiveSignals()
{
let requestedChar = CharacteristicIdentifier(uuid: NotioModel.signalLiveData, service: ServiceIdentifier(uuid: NotioModel.SignalsService))
bluejay.listen(to: requestedChar, multipleListenOption: .replaceable) {[weak self] (result: ReadResult<NotioSignals>) in
print("Signals update")
switch result {
case .success(let signals):
self?.liveSignals = signals
case .failure(let err):
print("Error: \(err)")
}
}
}
在日志中我得到了这个
Queue will start Bluejay.ListenCharacteristic...
Will start listening to Characteristic: 9AFABEDB-50F5-4766-8EE1-709073D6EB08, Service: 9AFAABCD-50F5-4766-8EE1-709073D6EB08 on NOTIOFE46EEBB.
Listening to Characteristic: 9AFABEDB-50F5-4766-8EE1-709073D6EB08, Service: 9AFAABCD-50F5-4766-8EE1-709073D6EB08 on NOTIOFE46EEBB.
Queue has removed Bluejay.ListenCharacteristic because it has finished.
Queue is empty, nothing to update.
这是我用来连接外设的代码。
func connect(_ peripheral: PeripheralIdentifier) {
self.bluejay.connect(peripheral, timeout: .seconds(15)) { connectionResult in
switch connectionResult {
case .success:
print("Connection attempt to: \(peripheral.description) is successful")
case .failure(let error):
print("Error: \(error)")
}
}
}
我的项目也连接到加载了 BlinkyLed 服务的 Nordic 开发板,并且使用相同的代码连接到上面的按钮服务,效果很好,这让我有点莫名其妙。
如果有人知道为什么 Bluejay 这样做让我知道,或者如果您需要更多核心也请告诉我。
问题出在固件方面,BLE 设备需要我告诉它激活数据流。 XD 记录 API 非常重要,即使它是固件。