logo头像
Snippet 博客主题

关于微信开发定位问题

  • 腾讯地图的坑

    在使用腾讯地图获取当前位置,在浏览器中是没问题的,但是在微信中却无法定位。

当切到微信开发者工具的公众号调试中,发现腾讯地图会使用微信自带的定位接口,并且会调用wx.config,所以控制台会打印wx.config的信息。

更有意思的是他的签名还无效,所以会导致定位无法使用,所以我准备自己使用jssdk的定位接口来获取当前位置

  • 微信config的坑

一开始在开发者工具上调用wx.config的时候没有问题,可以授权获取当前位置,但是当我用ios手机的时候,点击定位却无效,自己一步步打印调试发现没有问题,搜索了一下:

Vue应用(vue-router)上使用history模式,在某个页面内调用微信JSSDK相关API,如扫码、分享等,使用当前页面URL总会出现签名错误(invalid signature),导致API调用失败。

Vue-Router进行路由切换的时候,总是会操作浏览器的历史记录,从而响应页面URL变化。

也就是说在ios上无论怎么更换页面始终都是第一次进入的url,但是我打印 windows.local.herf的时候就是当前页面的url 这点没太明白是为什么。

于是我尝试使用网上的解决方法,发现是可以解决这个问题的

分享部分代码 因为程序规模不大,所以也没有使用vuex

1
2
3
4
5
6
7
8
9
10
11
12
13
function isIos() {//判断是否为ios
const u = navigator.userAgent;
return u.indexOf("iPhone") > -1 || u.indexOf("Mac OS") > -1;
}


//路由拦截首次进入的url保存 这样在调用微信签名的时候就可以获取到首次进入的路径了
router.beforeEach((to, from, next) => {
if (isIos && sessionStorage.getItem("url") === null) {
sessionStorage.setItem("url", window.location.href)
}
next()
})

这两个坑调试了好久,记录一下!

评论系统未开启,无法评论!