gpt4 book ai didi

ios - RxBluetoothKit : How to subscribe to Bluetooth state + Peripheral connection state and Write/Notify characteristics at same time?

转载 作者:行者123 更新时间:2023-11-29 11:25:15 43 4
gpt4 key购买 nike

我刚刚开始研究 RxBluetoothKit 作为与 BLE 设备交互的简单解决方案,并且我对 Rx 编程有非常基本的了解。

正如我从示例中看到的,每次我必须编写一些特征时,我都必须扫描 + 建立与外围设备的连接 + 发现服务,然后才写入和订阅以确认该特定特征。

读取特征也是如此。

如果我没理解错的话,这样我可以同时只订阅一个序列/连接。

但我需要的是订阅蓝牙状态和外设连接状态并通知特征,此外我有时会向同一个外设发送写命令。

需要帮助来理解我应该如何使用 RXBluetoothKit 库来处理这种情况?欢迎链接到 GitHub 上的类似方法。谢谢!

最佳答案

RxBluetooth 套件不涵盖这种情况,因此您必须自己处理这种情况。不是最理想的,但你可以选择这样的东西:

// Get an observable to the Peripheral, then share it so
// it can be used for multiple observing chains
let connectedPeripheral: Observable<Peripheral> = peripheral
.establishConnection()
.share(replay: 1, scope: .whileConnected)

// Establish a subscription to read characteristic first
// so no notifications are lost
let readDisposable = connectedPeripheral
.flatMap { $0.observeValueAndSetNotification(for: Characteristic.read) }
.subscribe()

// Write something to the write characteristic and observe
// responses in the chain above
let writeDisposable = connectedPeripheral
.flatMap { $0.writeValue(data, for: Characteristic.write, type: .withResponse) }
.subscribe()

上面的例子只是一个要点,但总体思路应该可行,因为我在自己的项目中做了类似的事情。完成后小心处置可观察对象,无论是通过 .take 还是 disposeBags。

关于ios - RxBluetoothKit : How to subscribe to Bluetooth state + Peripheral connection state and Write/Notify characteristics at same time?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59181529/

43 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com