您好,欢迎来到测品娱乐。
搜索
您的当前位置:首页微信小程序位置授权处理方法

微信小程序位置授权处理方法

来源:测品娱乐


这两天在做小程序调取地图的时候遇到一个问题,如果用户第一次拒绝了位置权限请求。那么就不会再次唤起授权弹出。需要我们引导用户去开启。

具体做法如下。 在 aap.json中加入授权配置

"permission": {
 "scope.userLocation": {
 "desc": "你的位置信息将用于小程序位置接口的效果展示"
 }
 }

在 page页面中使用,需要有几个注意的地方,初次使用的时候,去申请权限。这里我是放在onShow 方法里面。

 onShow: function () {
 //初始获取定位权限
 wx.authorize({
 scope: 'scope.userLocation',
 success: (res) => {

 },
 })
 },

然后在调用地图地位。或者获取用户权限的函数去判断是否有定位权限,如果没有那么引导用户开启权限。 如下:我有一个Input去触发选择地图事件。

<input bindfocus="openMap" value='{{address}}' placeholder="点击选择详细地址"></input>

事件处理

 openMap:function(e){
 var that = this
 wx.getSetting({
 success(res){
 //这里判断是否有地位权限
 if (!res.authSetting['scope.userLocation']) {
 wx.showModal({
 title: '提示',
 content: '请求获取位置权限',
 success:function(res){
 if(res.confirm==false){
 return false;
 }
 wx.openSetting({
 success(res) {
 //如果再次拒绝则返回页面并提示
 if (!res.authSetting['scope.userLocation']) {
 wx.showToast({
 title: '此功能需获取位置信息,请重新设置',
 duration: 3000,
 icon: 'none'
 })
 } else {
 //允许授权,调用地图
 that.chooseMap()
 }
 }
 })
 }
 }) 
 } else {
 //如果有定位权限,调用地图
 that.chooseMap()
 }

 }

 })
 },

 chooseMap(){
 var that = this
 wx.chooseLocation({
 success: function (res) {
 that.setData({
 address: res.address,
 latitude: res.latitude,
 longitude: res.longitude
 })
 },
 fail: function (res) {
 console.log(res)
 }
 })
 },

总结

Copyright © 2019- cepb.cn 版权所有 湘ICP备2022005869号-7

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务