微信小程序地理位置受權

文檔

代碼

wx.getSetting({
      success(res) {
        console.log('wx.getSetting:', res)
        /** 
         * res.authSetting['scope.userLocation'] === true         贊成過受權
         * res.authSetting['scope.userLocation'] === false        拒絕過受權
         * res.authSetting['scope.userLocation'] === undefined    從未贊成或者拒絕過受權
        */
        if (res.authSetting['scope.userLocation'] === undefined) {
          wx.authorize({
            scope: 'scope.userLocation',
            success (res) {
              console.log('authorize success:', res)
            },
          })
        }else if (res.authSetting['scope.userLocation'] === false) {
          wx.showModal({
            title: '',
            content: '去小程序設置頁面設置balabala',
            showCancel: true,
            cancelText: '取消',
            cancelColor: '#000000',
            confirmText: '肯定',
            confirmColor: '#3CC51F',
            success: (result) => {
              if(result.confirm){
                wx.openSetting({
                  success (res) {
                    console.log('wx.openSetting success:', res.authSetting)
                  },
                  fail: (err)=>{
                    console.log('wx.openSetting fail:', err)
                  },
                  complete: (info)=>{
                    console.log('wx.openSetting complete:', info)
                  },
                })
              }
            },
          })
        } else {
          wx.getLocation({
            type: 'wgs84',
            success (res) {
              console.log('wx.location success:', res)
            },
            fail (err) {
              console.log('wx.location fail:', err)
            },
            complete(aa) {
              console.log('wx.location complete:', aa)
            },
          })
        }
      },
    })

效果圖

受權彈窗
image.png
去設置彈窗
image.png
image.pnghtml

注意事項

一、wx.openSettingjson

- 3.0 版本開始,用戶發生點擊行爲後,才能夠跳轉打開設置頁,管理受權信息
- 真機調試才能打開設置頁面
- 只會顯示小程序已經向用戶申請過的權限

二、wx.getSetting小程序

返回值中只會出現小程序已經向用戶申請過的權限

三、app.json文件中配置位置信息的用途說明微信小程序

"permission": {
  "scope.userLocation": {
    "desc": "您的位置信息將用於定位"
  }
}

四、彈窗出現機制api

- 一旦用戶選擇了拒絕或者容許該權限,那麼受權關係就會被記錄在後臺,直到用戶主動刪除小程序,以後再次調用該API時都不會再彈出權限申請框。
- 解決方式:對於用戶拒絕受權的狀況調用wx.openSetting跳轉小程序設置頁面,引導用戶手動開啓該權限
相關文章
相關標籤/搜索