wx.getLocation 遇到的坑

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了wx.getLocation 遇到的坑相关的知识,希望对你有一定的参考价值。

参考技术A 最近在做微信小程序,获取定位时,遇到了一些问题
思路如下图:

当手机未开启GPS 定位,小程序同意了地理位置授权, 安卓机型没问题,但是在ios 机型上遇到了问题

ios 授权了地理位置,wx.getLocation 走fail , wx.getSetting也是走fail ,就很神奇

打印一下

发现IOS 和安卓的回调不一样(真的坑)
安卓

ios

errCode 安卓有 ios 没有
仔细看了下文档,好像没有fail 回调说明,真坑
无奈只能通过判断字符串判断

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

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








以上是关于wx.getLocation 遇到的坑的主要内容,如果未能解决你的问题,请参考以下文章

微信支付,别人遇到的坑--转载

全局变量遇到的坑

GO遇到的坑

安装pods 遇到的坑

隐藏php版本遇到的坑

python中常遇到的坑