一、支付
由于在ios中uni-app发布的应用是单应用,不管访问哪个页面,始终记录的是首次进来的那个页面。
这样的话,在微信支付签名时会报签名不对的错误。怎么解决?
老王的解决方案是在main.js下加上以下代码:
//#ifdef H5
app.$router.afterEach((to, from) => {
const u = navigator.userAgent.toLowerCase()
if (u.indexOf("like mac os x") < 0 || u.match(/MicroMessenger/i) != 'micromessenger') return
if (to.path !== global.location.pathname) {
location.assign(config.h5_addr + to.fullPath);
}
})
//#endif
什么意思呢?支付无非就是要当前页的链接到后台签名,这个页面需要配置到微信支付授权目录。
这段代码就是通过vue全局钩子函数,动态改变浏览器地址。
自此,支付问题完美解决。
二、分享
分享的话比较麻烦一点,解决方案倒还比较简单,就是判断跳转后的页面是否是分享页面,如果是的,就用window.location.href跳转。但是要实现公用的话,就需要封装方法。app内的所有跳转都走全局跳转,封装一个全局函数,然后在全局函数里定义需要分享的页面链接,跳转前判断是不是分享页面。
//判断是否分享页面
if (shareLinks.indexOf(p) > -1) {
//公众号
// #ifdef H5
window.location.href = config.app_url + config.h5_addr + url;
return;
// #endif
}
// 普通页面
uni.navigateTo({
url: url
});
至此,完美解决了uni-app在ios下的公众号分享跟支付问题。
3 个评论
要回复文章请先登录或注册
龙晓宝
p***@163.com
270315475