小程序地理位置授权逻辑(包括二次授权)

首次授权直接调用wx.getLocation();方法,如果用户点击允许  则在success回调里返回地理位置信息,并且在不清除授权数据的情况下,以后再次调用wx.getLocation();方法  不会出弹窗  直接走success  
 
如果用户在首次弹窗是选择 拒绝 则在fail回调中返回  {errMsg:"getLocation:fail auth deny"},并且在不清除授权数据的情况下,以后再次调用wx.getLocation();方法 不会出弹窗  直接走fail
 
 
所以正确授权逻辑 应该是:

1、进入页面先通过wx.getSetting();判断用户是否授权以及授权成功与否
    a>如果没有地理位置的相关字段表示没有授权  -- 调起首次授权
    b>如果返回scope.userLocation: true,表示授权成功  则直接在success拿地理位置信息
    c>如果返回scope.userLocation: false,表示拒绝授权  
         则需要用户点击按钮   手动去设置允许获取地位置   返回主页面时  
         aa>允许 则返回 scope.userLocation: true,再次调用  wx.getLocation();方法  走success   返回地理位置信息
         bb>拒绝 则返回scope.userLocation: false,  
 
 
2、
产品流程:
      首次进入页面        调起wx.getLocation();弹窗授权     
      允许?   直接拿地理位置信息
      拒绝?   出一个按钮二次授权  方便用户手动设置
3、打开地图和选择地理位置
 
 
 

二、打开小程序设置(wx.openSetting())的调用方式(2018-09-12日调整)
1、使用button组件触发
代码:<button open-type="openSetting" bindopensetting="callback">打开设置</button>
2、有用户的点击行为触发wx.openSetting();接口调用;
代码:<button bindtap="openSetting">打开设置</button> openSetting(){wx.openSetting()}
其中:方法2已在最新开发者工具中支持(基础库切到2.2.4以上)

小程序地理位置授权逻辑(包括二次授权)

上一篇:微信中点击链接或者扫描二维码直接跳转外部浏览器打开指定网页下载


下一篇:小程序之带参数跳转到tab页