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

  • 相关阅读:
    c#+oracle存储过程实现分页
    C#中调用Matlab程序
    Oracle 自定义TYPE 的几种用法(转)
    oracle嵌套表示例
    矩阵的秩及矩阵的广义逆
    矩阵的定义及其运算规则
    矩阵微分
    matlab中取模(mod)与取余(rem)的区别
    hog源码分析
    矩阵的转置、求逆及分块
  • 原文地址:https://www.cnblogs.com/Skate0rDie/p/11452674.html
Copyright © 2011-2022 走看看