Я подключился к bluetooth
, используя RxBluetoothKit
, используя этот код:
instance.bleScan()
.flatMap{ Observable.from($0)}
.do(onNext: {
if let name = $0.peripheral.name {
print("?name:", name)
print("?id:", $0.peripheral.identifier)
print("?isconnected:", $0.peripheral.isConnected)
}
})
.flatMap{ self.instance.bleEstablishConnection(scannedPeripheral: $0)}
.subscribe(onNext: {
print("subscribe", $0)
}
).disposed(by: disposeBag)
Он распечатывает имя и идентификатор ближайших bluetooth
устройств, поэтому, похоже, он работает. Но есть несколько вещей, которые мне не подходят:
1) Как я узнаю, что соединение установлено? Существует property
под названием isConnected
. Могу ли я использовать это где-нибудь, чтобы проверить соединение. Кроме того, что именно означает быть подключенным к peripheral
? Означает ли это, что я могу регулировать громкость наушников Bluetooth, если я подключен к нему, или это просто означает, что я установил связь между ними?
2) Следующий шаг - поиск services
и characteristics
из peripheral
.
Я хотел бы добавить .flatMap { $0.discoverServices(nil) }.asObservable()
после self.instance.bleEstablishConnection(scannedPeripheral: $0)
следующим образом:
.flatMap{
self.instance.bleEstablishConnection(scannedPeripheral: $0)
.flatMap { $0.discoverServices(nil) }.asObservable()
}...
Но он говорит мне, что
Невозможно преобразовать значение типа ' [BleHandler.BlePeripheral] 'для ожидаемого типа аргумента' BleHandler.BlePeripheral '
Для меня это означает, что мне нужно использовать:
.flatMap{ self.instance.bleEstablishConnection(scannedPeripheral: $0).flatMap { Observable.from($0)}
Но я получаю ту же ошибку. Как мне получить от array
до element´? and then find the
service`?