관찰 가능 객체를 반환하는 메소드가 있습니다.관찰 가능 객체 생성하기 관찰 가능 객체를 감싸는 객체
이 방법에서는 내가 관찰 할 수있는 rxbluetooth
을 구독합니다. onComplete
이 호출되지 않는 것을 제외하면 잘 작동합니다.
private func getWifiConfig() -> Observable<String?> {
return Observable.create { [ weak self ] observer in
if let strongSelf = self {
tileConnect.peripheral.connect()
.retry(.delayed(maxCount: 30, time: 1), scheduler: MainScheduler.instance)
.flatMap { $0.discoverServices([ strongSelf.serviceUUID ]) }
.flatMap { Observable.from($0) }
.flatMap { $0.discoverCharacteristics([ strongSelf.wifiCharacteristicUUID ])}
.flatMap { Observable.from($0) }
.flatMap { $0.readValue() }
.retry(.delayed(maxCount: 30, time: 1), scheduler: MainScheduler.instance)
.subscribe(onNext: {
if let data = $0.value {
if let configDelimitedString = String(data: data, encoding: .utf8) {
observer.onNext(configDelimitedString)
}
}
}, onError: { error in
LOG_SENSOR_MANAGER("getWifiConfigFromCharacteristic. onError: \(error.localizedDescription)")
observer.onError(error)
}, onCompleted: {
LOG_SENSOR_MANAGER("getWifiConfigFromCharacteristic. onCompleted")
observer.onCompleted() // <---- NEVER CALLED
}, onDisposed: {
LOG_SENSOR_MANAGER("getWifiConfigFromCharacteristic. onDisposed") // <---- NEVER CALLED
})
.disposed(by: strongSelf.disposeBag)
}
return Disposables.create()
}
}
당신이 생각하는 이유가 있습니까 : 여기
내 코드?
두 아이디어 : 그것은 각 타임 아웃'onCompleted()'2 그것은 오류 전에 배치 및 시도한다 1. –
https://github.com/Polidea/RxBluetoothKit을 보셨습니까? –
'retry'와'subscribe' 사이에'debug()'를 넣고 출력을 게시하십시오. –