fix: wear-check reconnect scans and connects directly

- Retry button disconnects then re-scans for device (no page navigation)
- Prevents duplicate scan with checking guard
- Disconnect before scan with 500ms delay for adapter recovery
- Clears reconnect timer on success/error/unload
- Error text updated to guide user to retry button
这个提交包含在:
Guoguo
2026-05-12 06:37:51 -07:00
父节点 4149c35a0a
当前提交 7e036576e3
+28 -4
查看文件
@@ -39,7 +39,7 @@ Page({
self.setData({ checking: true, result: null, error: '' }) self.setData({ checking: true, result: null, error: '' })
if (!ble.isConnected()) { if (!ble.isConnected()) {
self.setData({ checking: false, result: 'fail', error: '设备未连接,请返回重新连接' }) self.setData({ checking: false, result: 'fail', error: '设备未连接,请点击重新连接' })
return return
} }
@@ -70,6 +70,8 @@ Page({
onUnload: function () { onUnload: function () {
if (this._onStatus) ble.off('status', this._onStatus) if (this._onStatus) ble.off('status', this._onStatus)
clearTimeout(this._reconnectTimer)
ble.stopScan()
}, },
onNext: function () { onNext: function () {
@@ -77,11 +79,33 @@ Page({
}, },
onRetry: function () { onRetry: function () {
if (!ble.isConnected()) { var self = this
wx.navigateBack() if (self.data.checking) return
if (ble.isConnected()) {
self.checkWearing()
return return
} }
this.checkWearing() self.setData({ checking: true, result: null, error: '', connected: false })
clearTimeout(self._reconnectTimer)
ble.disconnect()
setTimeout(function () {
ble.startScan({
onFound: function () {},
onConnected: function () {
clearTimeout(self._reconnectTimer)
self.setData({ checking: false, connected: true })
self.checkWearing()
},
onError: function (err) {
clearTimeout(self._reconnectTimer)
self.setData({ checking: false, result: 'fail', error: err.msg || '连接失败' })
}
})
self._reconnectTimer = setTimeout(function () {
ble.stopScan()
self.setData({ checking: false, result: 'fail', error: '搜索超时,请确认设备已开机' })
}, 15000)
}, 500)
}, },
onMockWearOk: function () { onMockWearOk: function () {