收藏
回答

部分安卓机型下 wx.getAppAuthorizeSetting 返回值错误

框架类型 问题类型 API/组件名称 终端类型 微信版本 基础库版本
小程序 Bug wx.getAppAuthorizeSetting 微信安卓客户端 8.0.53 3.6.6

一. 机型

  • 手机型号: 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

(2)文档B

(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 se
  • oppo reno8,reno 9
  • oppo 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


最后一次编辑于  2024-12-19
回答关注问题邀请回答
收藏

5 个回答

  • dd
    dd
    01-22

    2025年2月22日,该问题还没有修复,严重影响用户体验,运营效果

    01-22
    有用 2
    回复
  • 智能灯控系统LightTechMaster
    智能灯控系统LightTechMaster
    01-22

    截止到2025.1.22号 该BUG依然没有得到解决修复,非常影响用户体验,甚至一度怀疑自己的代码出了什么问题

    01-22
    有用 1
    回复
  • FlyAboveGrass
    FlyAboveGrass
    03-31

    2025.03.21日,该问题依然没有得到解决

    03-31
    有用
    回复
  • 星辰
    星辰
    03-13

    iQOO11返回蓝牙状态异常

    03-13
    有用
    回复 1
    • 星辰
      星辰
      03-13
      截至2025-03-13 :iqoo11返回错误蓝牙状态
      03-13
      回复
  • youker
    youker
    01-15

    非常影响我们现在小程序的用户体验,希望可以早日修复。

    01-15
    有用
    回复
登录 后发表内容