以前,我对真棒rxAndroidBle-Writing multiple commands to characteristic
有此疑问该解决方案效果很好!
现在是时候将该应用程序移植到iOS版本了,我正在努力寻找合适的方法来实现相同的结果。
基本上,我需要按顺序向外围设备发送一系列命令,这些命令需要按顺序发送,下一个命令应该在前一个命令完成时发送,理想情况下,在所有命令都发送完之后发送最终事件,就像上面链接中的android应用片段一样
下面的代码可以完成工作,但是如您所见,它并不漂亮,而且随着命令数量的增加,也很容易变得难以管理!
Android应用程序使用Single.concat,RxSwift的等效功能是什么?
self.writeCharacteristic?.writeValue(command1, type: .withResponse)
.subscribe {
print("Command 1 complete ", $0 )
self.writeCharacteristic?.writeValue(command2, type: .withResponse)
.subscribe {
print("command2 complete ", $0 )
}
}
任何指针都非常感谢!!! 谢谢
答案 0 :(得分:0)
Single
没有concat
方法,但是您只能使用Observable.concat
并为每个asObservable()
方法调用writeValue
,如下所示:>
Observable.concat(
characteristic.writeValue(command1, type: .withResponse).asObservable(),
characteristic.writeValue(command2, type: .withResponse).asObservable(),
characteristic.writeValue(command3, type: .withResponse).asObservable(),
...
characteristic.writeValue(command4, type: .withResponse).asObservable()
).subscribe { event in
switch event {
case .next(let characteristic):
print("Did write for characteristic \(characteristic)")
case .error(let error):
print("Did fail with error \(error)")
case .completed:
print("Did completed")
}
}