收藏
回答

userLocationBackground拉起授权被拒后无法再次拉起授权

框架类型 问题类型 API/组件名称 终端类型 微信版本 基础库版本
小程序 Bug startLocationUpdateBackground 微信iOS客户端 8.0.54 3.7.0(2024.12.06 17:06:25)

先上代码:

//监听地理位置变化

onLocationChange(res){

  console.log('onLocationChange:', res)

},

//开始行程

transStart(){

  wx.authorize({

    scope: 'scope.userLocationBackground',

    success: () => {

      wx.onLocationChange(this.onLocationChange)

      wx.startLocationUpdateBackground({

        type: 'gcj02',

        success: () => {

        },

        fail: e => { console.log('startLocationUpdateBackground fail:', e)}

      })

    },

    fail: e => {

      console.log('userLocationBackground denyed:', e)

    }

  })

},

//停止行程

transStop(){

  wx.stopLocationUpdate()

  wx.offLocationChange()

}

小程序appid:wx8da5a101b12742c0

已申请了实时定位和后台定位权限,隐私协议里也申明了位置使用权限。在首次调用时,会拉起用户授权弹窗,但若用户不小心点了拒绝后,有两种情况:

1.如果用户将选项勾选的是 【使用小程序时】,点拒绝后,可以再次申请拉起授权。

2.如果用户将选项勾选的是【使用小程序时和离开后】,点拒绝后,将无法再次拉起授权,后台是直接反馈的 authorize:fail auth deny, 也试过用openSetting引导用户去设置时根本没有这个后台运行定位的选项, 只能删除小程序后重新安装小程序,重新授权。

以上是在开发者工具中的。实际在iOS真机上,【使用小程序时】和 【使用小程序时和离开后】这两个选项误拒绝后都无法第二次拉起。

另,还有一个现象,在上面的iOS真机上授权后,可以正常获取到定位数据,但是微信切换到后台或熄屏后,定位数据就没有了,这与startLocationUpdateBackground的使用场景好像不符,是不是我调用方法有问题或是哪里还有设置未完成


回答关注问题邀请回答
收藏

1 个回答

  • sun
    sun
    12-07

    用户拒绝授权后,本来就是无法再拉起授权的。建议仔细看文档,并不是bug。

    12-07
    有用
    回复 5
    • 三岁老头子
      三岁老头子
      12-08
      谢谢回复。文档我是看了,但是不明白为什么选【使用小程序时】这个选项被拒绝后却能再次通过wx.authorize重新拉起授权,两者有本质的区别吗?目前我只能引导用户去删除小程序了重新添加小程序。哈哈。这个还可接受。
      但是后台定位的startLocationUpdateBackground,我使用起来当熄屏后就不能定位了,没有回调onLocationChange这个接口,这个跟文档上描述的功能不太一样啊
      12-08
      回复
    • sun
      sun
      12-08回复三岁老头子
      开发者工具模拟器能重新拉起,不代表真机也能拉起。这应该是模拟器的bug,正常表现应该是无论选择哪个,拒绝了都无法拉起
      12-08
      回复
    • 三岁老头子
      三岁老头子
      12-08
      而且授权openSetting里只有【使用小程序时】这个选项,并不会出现【使用小程序时和离开后】选项,要想使用【使用小程序时和离开后】只能首次在wx.authorize中拿到授权,一旦拒绝,只能删了重新添加小程序
      12-08
      回复
    • sun
      sun
      12-08回复三岁老头子
      startLocationUpdateBackground仅对特定类目开放,可参考https://developers.weixin.qq.com/miniprogram/dev/api/location/wx.startLocationUpdateBackground.html,建议检查类目是否在范围内
      12-08
      回复
    • 三岁老头子
      三岁老头子
      12-09
      类目是货物运输,在指定的类目中,后台申请过API调用权限并且已经通过,才来调用API的
      12-09
      回复
登录 后发表内容