小程序用户取消授权地理位置后...

618 阅读1分钟

wx.chooseLocation

需要授权,如果第一次就不允许,则一直调用wx.chooseLocation的fail方法。

**wx.getSetting**

获取用户的当前设置,返回值中只会出现小程序已经向用户请求过的权限。

**思路:**

在wx.chooseLocation的fail方法里调用wx.getSetting。

**代码:**
            locationBtn:function(){
                const that = this
                wx.chooseLocation({
                  success: function(res) {
                  
                  },
                  fail:function(res){
                    // console.log(res)
                    wx.getSetting({
                      success:function(res){
                        // console.log(res)
                        if (!res.authSetting['scope.userLocation']){
                          wx.showModal({
                            title: '是否授权当前位置',
                            content: '请确认授权,否则此功能无法使用',
                            success:function(msg){
                              if(msg.confirm){
                                wx.openSetting({
                                  success:function(e){
                                    // console.log(e)
                                    if (e.authSetting['scope.userLocation'] === true) {
                                      wx.showToast({
                                        title: '授权成功',
                                        icon: 'success',
                                        duration: 1000
                                      })
                                      wx.chooseLocation({
                                        success: function(data) {
                                         
                                        },
                                      })
                                    }
                                  }
                                })
                              }else if(msg.cancel){
                                wx.showToast({
                                  title: '调用授权窗口失败',
                                  icon: 'none',
                                  duration: 1000
                                })
                              }
                            }
                          })
                        }
                      }
                    })
                  },
                })
              }