部分安卓机型下 wx.getAppAuthorizeSetting 返回值错误
一. 机型 手机型号: HUAWEI nova 11 Pro手机系统: HarmonyOS 4.2.0二. 复现方式 (1)开启以下4个权限 手机系统对应用的设置 允许微信使用蓝牙(有的手机此项叫附近设备)手机系统对应用的设置 允许微信使用定位开关微信对小程序的设置 授权蓝牙微信对小程序的设置 授权精确地理位置(2)调用 wx.getAppAuthorizeSetting 和 wx.getSettingminiprogramAuthSetting API 并打印返回值 [图片] 在返回值中可以看到4个权限对应返回值: wx.getAppAuthorizeSetting bluetoothAuthorized (允许微信使用蓝牙的开关 未开启)wx.getAppAuthorizeSetting locationAuthorized (允许微信使用定位的开关 已开启)wx.getSettingminiprogramAuthSetting.scope.bluetooth (当前宿主小程序的用户授权结果,是否授权蓝牙 已授权)wx.getSettingminiprogramAuthSetting.scope.userLocation (当前宿主小程序的用户授权结果,是否授权精确地理位置 已授权)可以看出,手机操作系统已给微信开启蓝牙权限,但小程序 wx.getAppAuthorizeSetting 返回的 bluetoothAuthorized 是 denied, 是不对的。 (3)在当前状态执行业务逻辑 系统设置页的状态和微信小程序API调用出现了矛盾,依旧存在一种可能性:wx.getAppAuthorizeSetting 对的,系统设置页展示错误,那么继续进行蓝牙逻辑,即可知道微信使用蓝牙的权限是否真正开启了。 在当前状态下,执行了公司的蓝牙相关业务逻辑,结果是正常运行(此处不放代码和截图了,可以自行验证)。所以确定是 wx.getAppAuthorizeSetting 返回的值异常。 考虑到该错误只在特定机型下出现,猜测可能是微信小程序API对安卓底层的兼容方向出的问题。后续就无法继续排查了,要交给小程序官方了。 (4)退出小程序;关闭手机系统对微信蓝牙权限的授权开关,再重新打开; 执行这一步操作后,wx.getAppAuthorizeSetting 返回值又正常了。 此步骤4可以给广大微信小程序开发者,作为一种临时的解决手段。但用户体验较差。即便我们给了引导提示,我们的客户也没有意愿去重启手机权限,而是跟倾向于向公司投诉我们研发团队…… 三. 文档问题 wx.getAppAuthorizeSetting 其实是有两份文档的,官方回复开发者的留言里经常把文档搞混,其实正确的只有一个。 (1) 文档A 该文档属于多端能力目录下,未特指小程序,但官方引用了这部分使用范围:【仅 iOS 有效,所以返回 'undefined', Android 端可忽略】原始链接:https://developers.weixin.qq.com/miniprogram/dev/platform-capabilities/miniapp/api/diffapi/getAppAuthorizeSetting.html(2)文档B 小程序文档目录下使用范围:iOS和安卓均有效,对安卓基础库版本有限制原始链接:https://developers.weixin.qq.com/miniprogram/dev/api/base/system/wx.getAppAuthorizeSetting.html(3)结论 结合我司测试团队对多种机型多次的测试,可以确定:该API在安卓和iOS下均有效,且所有的BUG都出现在安卓机型。所以文档B是对的。 四. BUG 修复进度问题 微信官方也承认了该问题,并于2024年8月9日发布公告,称该问题在修复中。 但截止今天(2024-12-18)微信小程序官方还没有发布修复完毕的版本公告。 公告地址:https://developers.weixin.qq.com/community/develop/doc/00084ac3458228a822f17fa6d66c01?highLine=bluetoothAuthorized [图片] 五. 可复现机型 我司测试团队使用了几十种机型进行测试,在以下机型也复现了问题,此处提供给微信小程序团队,希望能帮助到官方团队更高效定位问题 华为 nova 12 Ultra (HarmonyOS版本 4.2.0.156)华为 nova 9/nova 7/nova11 seoppo reno8,reno 9oppo A2荣耀100华为 mate 60 pro一加 Ace Pro全部问题出现在安卓,并且可以锁定华为(包括荣耀)和OPPO(包括一加)两大品牌。 六. 附录 (1)附社区反馈地址,供测试复现问题和查找机型的参考: https://developers.weixin.qq.com/community/develop/doc/000a08eb204588ae03f1b21b26b400?highLine=bluetoothAuthorized https://developers.weixin.qq.com/community/develop/doc/000062204348c06eea225031e69c00?highLine=wx.getAppAuthorizeSetting https://developers.weixin.qq.com/community/develop/doc/00020c823746809591e1b18166bc00?highLine=bluetoothAuthorized (2)附官方文档接口API地址: https://developers.weixin.qq.com/miniprogram/dev/platform-capabilities/miniapp/api/diffapi/getAppAuthorizeSetting.html https://developers.weixin.qq.com/miniprogram/dev/api/base/system/wx.getAppAuthorizeSetting.html