關於小程序授權地理位置(wx.getLocation + 用戶體驗)


 

 

wx.getLocation 如果用戶曾點擊過一次 “確認授權” , 

那么再次調用該接口時將不會出現彈出框(可以直接拿到經緯度)

 

 

關於用戶體驗:

 

  在 onLoad 中判斷:

    如果用戶之前“沒有觸發過“授權地理位置事件,則發起請求授權-----> 如果同意授權,直接拿到經緯度處理邏輯;

                                  如果不同意,則彈出自定義模態框進行提示,如果用戶同意就打開setting頁面;如果還不同意,就行默認事件(用戶不授權的邏輯)

 

wx.getSetting({
        success: function(res){
          if (typeof (res.authSetting['scope.userLocation']) == "undefined") { // 從未觸發過授權的情況
            wx.getLocation({ // 用戶同意授權地理位置
              success: function (res) {
                that.setData({
                  latitude: res.latitude,
                  longitude: res.longitude
                });
                that.getShopInfo_nearby(res.latitude, res.longitude);
              },
              fail: function (err) { // 用戶拒絕授權地理位置
                wx.showModal({//彈出模態框,詢問
                  title: '是否授權當前位置',
                  content: '如需正常使用本程序,請按確定並在授權管理中選中“地理位置”,然后點按返回即可正常使用。',
                  cancelColor: '#f00',
                  success: function (res) {
                    if (res.confirm) {//同意授權
                      wx.openSetting({})
                    } else if (res.cancel) {//不同意授權,進行普通查詢
                      mac = '08:D8:33:7C:5E:5';
                      that.getShopInfo(mac);
                    }
                  }
                })
              }
            })
          }
        }
      })

 

 

在 onShow 中:先檢查用戶授權狀態,如果“曾經觸發過“地理位置授權事件,但沒有確認授權,就彈出自定義模態框進行詢問(同意->setting頁面; 不同意-> 走不同意的邏輯);

                 如果授權過了,則直接使用wx.getLocation 獲取經緯度拿到經緯度處理邏輯(此時不會再觸發彈框)

 

 

wx.getSetting({//檢測用戶權限
          success: (res) => {
            if (res.authSetting['scope.userLocation'] == false) { // 地理位置授權 觸發過但沒有授權
              wx.showModal({//彈出模態框,詢問
                title: '是否授權當前位置',
                content: '如需正常使用紫燕到家設備,請按確定並在授權管理中選中“地理位置”,然后點按返回即可正常使用。',
                cancelColor: '#f00',
                success: function (res) {
                  if (res.confirm) {//同意授權
                    wx.openSetting({})
                  } else if (res.cancel) {//不同意授權,進行普通查詢
                    mac = '08:D8:33:7C:5E:5';
                    that.getShopInfo(mac);
                  }
                }
              })
            } else if (res.authSetting['scope.userLocation'] == true){ // 地理位置授權過了
              wx.getLocation({
                success: function(res) {
                  that.getShopInfo_nearby(res.latitude, res.longitude);
                },
              })
            }
          }
        })

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM