fix(device): 扫描前检查系统蓝牙/定位开关,定位关闭时主动提示
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Sonnet 4.6
parent
9a81092c99
commit
6fe36f59fe
@@ -131,18 +131,53 @@ Page({
|
|||||||
connectCleanup = null
|
connectCleanup = null
|
||||||
},
|
},
|
||||||
|
|
||||||
/** 申请位置权限后打开蓝牙适配器(蓝牙权限由 openBluetoothAdapter 自动触发) */
|
/** 检查系统蓝牙开关 */
|
||||||
async _requestPermissionAndScan() {
|
_checkBluetoothEnabled(): boolean {
|
||||||
|
try {
|
||||||
|
if (wx.getSystemSetting().bluetoothEnabled === false) {
|
||||||
|
this._showBluetoothOff()
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
return true
|
||||||
|
} catch {
|
||||||
|
// 基础库不支持 wx.getSystemSetting 时跳过,交由 openBluetoothAdapter 报错兜底
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
/** 检查系统定位开关 */
|
||||||
|
_checkLocationService(): boolean {
|
||||||
|
try {
|
||||||
|
if (wx.getSystemSetting().locationEnabled === false) {
|
||||||
|
this._showLocationOff()
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
return true
|
||||||
|
} catch {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
/** 申请微信“附近设备/位置”授权 */
|
||||||
|
async _ensureLocationAuth(): Promise<boolean> {
|
||||||
try {
|
try {
|
||||||
const { authSetting } = await wx.getSetting()
|
const { authSetting } = await wx.getSetting()
|
||||||
const setting = authSetting as Record<string, boolean | undefined>
|
const setting = authSetting as Record<string, boolean | undefined>
|
||||||
if (!setting['scope.userLocation']) {
|
if (!setting['scope.userLocation']) {
|
||||||
await wx.authorize({ scope: 'scope.userLocation' })
|
await wx.authorize({ scope: 'scope.userLocation' })
|
||||||
}
|
}
|
||||||
|
return true
|
||||||
} catch {
|
} catch {
|
||||||
this._showLocationGuide()
|
this._showLocationGuide()
|
||||||
return
|
return false
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
/** 编排:蓝牙开关 → 定位开关 → 微信授权 → 打开蓝牙并扫描 */
|
||||||
|
async _requestPermissionAndScan() {
|
||||||
|
if (!this._checkBluetoothEnabled()) return
|
||||||
|
if (!this._checkLocationService()) return
|
||||||
|
if (!(await this._ensureLocationAuth())) return
|
||||||
await this._openAdapterAndScan()
|
await this._openAdapterAndScan()
|
||||||
},
|
},
|
||||||
|
|
||||||
@@ -280,6 +315,7 @@ Page({
|
|||||||
content: '安卓手机搜索蓝牙设备需开启定位服务,请前往系统设置开启后重试。',
|
content: '安卓手机搜索蓝牙设备需开启定位服务,请前往系统设置开启后重试。',
|
||||||
showCancel: false,
|
showCancel: false,
|
||||||
confirmText: '知道了',
|
confirmText: '知道了',
|
||||||
|
success: () => this.setData({ status: 'idle' }),
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user