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

首次授权直接调用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以上)

posted on 2018-12-27 15:12  EchoHEYANZHEN  阅读(1920)  评论(0编辑  收藏  举报

导航