微信公众号开发指南

微信浏览器?啊,它是什么,好不好用,能吃不?我记得有个说法是这么评价微信浏览器的,微信浏览器就是移动端IE6。是程序员就知道IE什么样,好不好用。面向IE开发,我们经常会写出稀奇古怪的bug代码,同样的,基于微信浏览器开发也会BUG百出。因此,很有必要整理一些基于微信浏览器的开发技巧和开发问题。

开发问题

vue 路由采用 history 模式在IOS中签名失败 Android签名良好

基于微信公众号开发,我们经常会使用到分享、上传图片等功能,然而这种种功能都需要微信签名。提到签名,我们应该就会遇到签名失败的情况。接下来我们说说 vue 路由采用 history 模式在IOS中签名失败,Android签名良好的情况。

原因

history 模式下视图是通过 pushState 来切换的,但IOS手机在微信浏览器中记录的 URL 只会是第一次进入时的URL,所以在IOS中,无论你路由怎么切换。真实的URL都是第一次进入应用时的URL。

解决办法

每次路由变化时都重新请求下签名,同时在路由钩子函数里改写一下路由:

1
2
3
4
5
6
// beforeRouter
if (isWeixin() && to.meta.wxSign && to.path !== location.pathname) {
location.assign(window.location.protocol + '//' + window.location.host + to.fullPath)
} else {
next();
}

两(多)张两张二维码无法在同一屏幕视窗中共存

同一屏幕视窗”是指微信内置浏览器中在当前的手机屏幕上显示的可见范围,我们发现,当同一同一屏幕视窗中存在两个或以上的二维码的时候,微信客户端就会识别错误,无论你按哪个二维码长按识别,识别出来都是同一个目标。这个问题在 iOS 版(iPhone)微信2.2及安卓版上均有。

原因

长按的时候相当于将当前手机屏幕截屏,识别截屏后的图片,这样一张图片有两个二维码图的时候当然只会识别出一个。

解决办法

不要将两个二维码共存在同一个页面中。

微信只调用相机不使用相册时,安卓会退出并刷新页面

解决办法

相机和相册两者都加上!

本文持续更新中

您的支持将鼓励我继续创作!