麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 課堂 > 小程序 > 正文

微信小程序用戶位置權限的獲取方法(拒絕后提醒)

2020-03-21 16:06:57
字體:
來源:轉載
供稿:網友

微信小程序獲取用戶當前位置有三個方式:

1. wx.getLocation(多與wx.openLocation一起用)

  獲取當前的精度、緯度、速度。不需要授權。當type設置為gcj02 返回可用于wx.openLocation的坐標

2. wx.chooseLocation

  需要授權,打開地圖選擇位置

  第一次調用方法時先出現

  微信小程序,用戶位置,權限

  允許權限之后之后再出現

  微信小程序,用戶位置,權限

  如果第一次就不允許,則一直調用wx.chooseLocation的fail方法

3. wx.openLocation

  需要授權,使用微信內置地圖查看位置。多半用于查看起點到終點的路線怎么走

  微信小程序,用戶位置,權限

授權方法有三種:

1. wx.getSetting

  獲取用戶的當前設置,返回值中只會出現小程序已經向用戶請求過的權限,類似下面的樣子

  微信小程序,用戶位置,權限

2. wx.openSetting

  調起權限設置選擇界面,設置界面只會出現小程序已經向用戶請求過的權限,類似下面的樣子

  微信小程序,用戶位置,權限

3. wx.authorize

  提前向用戶發起授權請求。調用后會立刻彈窗詢問用戶是否同意授權小程序使用某項功能或獲取用戶的某些數據,但不會實際調用對應接口。如果用戶之前已經同意授權,則不會出現彈窗,直接返回成功。,類似下面的樣子

微信小程序,用戶位置,權限  

這就是wx.authorize出現的內容

問題來了:假如我第一次使用wx.chooseLocation()獲取權限被拒絕,然后使用wx.getSetting()來重新獲取權限該怎么做呢?

思路:wx.chooseLocation()有fail方法,如果第一次拒絕之后,以后調用選擇地圖都是觸發的這個,那么我可以在fail方法里面,使用wx.getSetting(),這樣就每次都能判斷是否已經給與了權限了。

第一步:由于有可能會多次使用定位的方法,所以我把定位的方法寫到App.js中,方便調用

App({ //獲取用戶地理位置權限 getPermission:function(obj){  wx.chooseLocation({  success: function (res) {    obj.setData({    addr: res.address  //調用成功直接設置地址   })      },  fail:function(){   wx.getSetting({    success: function (res) {     var statu = res.authSetting;     if (!statu['scope.userLocation']) {      wx.showModal({       title: '是否授權當前位置',       content: '需要獲取您的地理位置,請確認授權,否則地圖功能將無法使用',       success: function (tip) {        if (tip.confirm) {         wx.openSetting({          success: function (data) {           if (data.authSetting["scope.userLocation"] === true) {            wx.showToast({             title: '授權成功',             icon: 'success',             duration: 1000            })            //授權成功之后,再調用chooseLocation選擇地方            wx.chooseLocation({             success: function(res) {              obj.setData({               addr: res.address              })             },            })           } else {            wx.showToast({             title: '授權失敗',             icon: 'success',             duration: 1000            })           }          }         })        }       }      })     }    },    fail: function (res) {     wx.showToast({      title: '調用授權窗口失敗',      icon: 'success',      duration: 1000     })    }   })  } })   },}) 

第二步:在需要獲取地址的頁面中:

var app = getApp();Page({ data:{  addr:'請選擇位置'    }, //選擇獲取地理位置 getAddress:function(){   var that=this;  app.getPermission(that); //傳入that值可以在app.js頁面直接設置內容  }, })

最終效果圖:

微信小程序,用戶位置,權限

最終在手機上獲取到的位置偏差不太大。

--------------------------------------------------------------------------------

更新 wx.openSetting 的注意事項。

2.3.0 版本開始,用戶發生點擊行為后,才可以跳轉打開設置頁,管理授權信息

即2.3.0版本之后,我通過上面的wx.showModal的回調函數來調用wx.openSetting 會發生下面的錯誤:

openSetting:fail can only be invoked by user TAP gesture.

但是我測試 2.2.4 開始 到2.3.1 都會出現上面這種錯誤。

2.3.2及以上又不會出現這種問題。。。。。。。。

 

而且當我測試2.0.8 到 2.2.3 會出現下面的錯誤。。。。。。

 

微信小程序,用戶位置,權限

其它的就沒有這問題了。搞不懂。。。

總結

以上所述是小編給大家介紹的微信小程序用戶位置權限的獲取方法(拒絕后提醒),希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對VEVB武林網網站的支持!


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 免费色片 | 91av在线免费观看 | 国产精品一区在线观看 | 欧美日韩高清在线观看 | 国产亚洲精品久久久久5区 综合激情网 | 精品国产一区二区三区免费 | 欧美 日韩 国产 成人 | 国产成人高清在线 | 毛片a片免费看 | 午夜精品在线视频 | 九九热精彩视频 | 中国fx性欧美xxxx | 欧美黄色视屏 | av电影网站在线 | 56av国产精品久久久久久久 | 国产精品久久久久久久av三级 | 免费在线观看国产精品 | 一级免费黄色免费片 | 91精品久久久久久久久 | 亚洲日本韩国在线观看 | 中文字幕涩涩久久乱小说 | h视频在线观看免费 | 中文字幕涩涩久久乱小说 | 日本中文字幕高清 | 亚洲va久久久噜噜噜久牛牛影视 | 久久久久av69精品 | 国产亚洲精品久久久久5区 综合激情网 | jizzjizz中国少妇中文 | 久久日本 | 韩国一级免费视频 | 黄色影院在线看 | 国产精品爱久久久久久久 | 日韩在线欧美在线 | 婷婷中文字幕一区二区三区 | 国产chinesehd精品91 | 日韩视| 九色激情网 | 国产精品久久久免费 | 国产精品一区网站 | 国产羞羞视频免费在线观看 | 蜜桃91麻豆 |