zoukankan      html  css  js  c++  java
  • 关于小程序授权地理位置(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

  • 相关阅读:
    5.19 省选模拟赛 T1 小B的棋盘 双指针 性质
    5.15 省选模拟赛 容斥 生成函数 dp
    5.15 省选模拟赛 T1 点分治 FFT
    5.15 牛客挑战赛40 B 小V的序列 关于随机均摊分析 二进制
    luogu P4929 【模板】舞蹈链 DLX
    CF 878E Numbers on the blackboard 并查集 离线 贪心
    5.10 省选模拟赛 拍卖 博弈 dp
    5.12 省选模拟赛 T2 贪心 dp 搜索 差分
    5.10 省选模拟赛 tree 树形dp 逆元
    luogu P6088 [JSOI2015]字符串树 可持久化trie 线段树合并 树链剖分 trie树
  • 原文地址:https://www.cnblogs.com/Skate0rDie/p/11452674.html
Copyright © 2011-2022 走看看