HarmonyOS 鸿蒙Next 蓝牙连续订阅服务问题:应用首次启动订阅成功,再次启动长时间等待无应答
HarmonyOS 鸿蒙Next 蓝牙连续订阅服务问题:应用首次启动订阅成功,再次启动长时间等待无应答
如果设备支持ftms、fec、power等服务,需要在连接上设备的时候,全部开启订阅;应用第一次启动。连接设备后开启这些服务订阅都成功了,但是如果再次启动应用连接设备,就是一直等待。
问题场景描述:
if (characteristicUuid == BleDeviceConstant.FTMS_INDOOR_BIKE_CHARACTERISTIC ||
characteristicUuid == BleDeviceConstant.FTMS_CONTROL_POINT_CHARACTERISTIC ||
characteristicUuid == BleDeviceConstant.FTMS_ROWER_CHARACTERISTIC ||
characteristicUuid == BleDeviceConstant.C2_ROWER_CHARACTER31 ||
characteristicUuid == BleDeviceConstant.C2_ROWER_CHARACTER32 ||
characteristicUuid == BleDeviceConstant.C2_ROWER_CHARACTER36 ||
characteristicUuid == BleDeviceConstant.FEC_READ_CHARACTERISTIC ||
characteristicUuid == BleDeviceConstant.POWER_MEASUREMENT_CHARACTERISTIC ||
characteristicUuid == BleDeviceConstant.SPEED_AND_CADENCE_NOTIFY_CHARACTERISTIC ||
characteristicUuid == BleDeviceConstant.HEART_RATE_NOTIFY_CHARACTERISTIC ||
characteristicUuid == BleDeviceConstant.MPAS_CHARACTERISTIC ||
characteristicUuid == BleDeviceConstant.UART_SERVICE_READ_CHARACTERISTIC ||
characteristicUuid == BleDeviceConstant.BIKE_COMPUTER_SERVICE_READ_CHARACTERISTIC ||
characteristicUuid == BleDeviceConstant.BIKE_COMPUTER_SERVICE_WRITE_CHARACTERISTIC ||
characteristicUuid == BleDeviceConstant.BIKE_SARP_SERVICE_WRITE_CHARACTERISTIC ||
characteristicUuid == BleDeviceConstant.IRAKE_HEART_CHARACTERISTIC ||
characteristicUuid == BleDeviceConstant.IRAKE_DATA_CHARACTERISTIC) {
console.error('setNotifyOn characteristicUuid is ' + characteristicUuid);
await this.setNotifyOn(clientDevice, gattServices[i].characteristics[j]);
this.setSupportedService(deviceId, characteristicUuid);
}
// 开启通知
private async setNotifyOn(clientDevice: ble.GattClientDevice, bleCharacteristic: ble.BLECharacteristic) {
try {
console.error('setNotifyOn setCharacteristicChangeNotification , ' + bleCharacteristic.characteristicUuid);
await clientDevice.setCharacteristicChangeNotification(bleCharacteristic, true);
console.error('setNotifyOn setCharacteristicChangeNotification success, ' + bleCharacteristic.characteristicUuid);
} catch (err) {
console.error('errCode: ' + (err as BusinessError).code + ', errMessage: ' + (err as BusinessError).message);
}
}
问题提出人:备注一下,如果不用异步,就会上来就报错。
更多关于HarmonyOS 鸿蒙Next 蓝牙连续订阅服务问题:应用首次启动订阅成功,再次启动长时间等待无应答的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
您好,请检查一下。订阅不能连续订阅,需要等第一个成功后才能进行第二个。
- 以上是初步分析结论,如有疑问可以展开回复,看到后会继续协助定位阻碍点。
- 开源网站上收录了UI、系统接口、Web、创新特性等场景化鸿蒙示例DEMO,开发中可以参考:[https://gitee.com/scenario-samples/demo-index](https://gitee.com/scenario-samples/demo-index)
更多关于HarmonyOS 鸿蒙Next 蓝牙连续订阅服务问题:应用首次启动订阅成功,再次启动长时间等待无应答的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
针对HarmonyOS 鸿蒙Next 蓝牙连续订阅服务问题,即应用首次启动订阅成功,但再次启动时长时间等待无应答的情况,可能的原因及解决方案如下:
-
订阅状态未正确保存:应用首次启动后,若未正确保存订阅状态或订阅ID,再次启动时可能无法正确恢复订阅,导致长时间等待。检查应用是否在退出或后台运行时保存了必要的订阅信息。
-
蓝牙服务未正确释放:应用首次使用蓝牙服务后,若未正确释放服务或资源,可能导致再次启动时资源被占用,无法及时响应新的订阅请求。确保在不再需要蓝牙服务时,正确关闭并释放相关资源。
-
系统或框架问题:HarmonyOS系统或蓝牙框架本身可能存在bug,导致订阅服务在特定情况下无法正常工作。关注华为官方发布的更新和修复信息,确保系统或框架为最新版本。
-
应用权限问题:检查应用是否拥有必要的蓝牙权限,以及是否在使用蓝牙功能时请求了用户授权。权限不足或未授权可能导致订阅服务无法正常工作。
如果问题依旧没法解决请联系官网客服,官网地址是 https://www.itying.com/category-93-b0.html