问题描述
目前我正在连接到一个外围设备,该外围设备在从移动应用程序通过 BLE 接收到特定信息后立即断开连接并开始广告。 我观察到的是,在与移动设备连续 2 次连接后,该应用没有收到来自其周围任何设备的任何广告信标。
步骤:
这在 Android 的前两次尝试中非常有效,对于 iOS,它连续运行 5-6 次。 但此后应用无法再次获取信标或扫描设备。
这是扫描的代码片段:
function* scan(manager: BleManager): Generator<any,any,any> {
yield put(log('Scanning started...'));
console.debug('Scanning started...');
const scanningChannel = yield eventChannel((emit) => {
manager.startDeviceScan(
null,{ allowDuplicates: false },(error,scannedDevice) => {
if (error) {
emit([error,scannedDevice]);
return;
}
console.debug('device found',scannedDevice?.localName);
if (
scannedDevice != null &&
scannedDevice.localName != null &&
(scannedDevice.localName.toLowerCase().startsWith('my_ble_device')
)
) {
emit([error,scannedDevice]);
}
}
);
return () => {
manager.stopDeviceScan();
};
},buffers.expanding(1));
try {
for (; ;) {
const [error,scannedDevice]: [BleError,Device] = yield take(
scanningChannel
);
if (error != null) {
}
if (scannedDevice != null) {
yield put(deviceFound(scannedDevice));
}
}
} catch (error) {
} finally {
yield put(log('Scanning stopped...'));
if (yield cancelled()) {
scanningChannel.close();
}
}
}
我可以看到日志扫描开始...但没有进一步的处理。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)