一、支付

由于在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下的公众号分享跟支付问题。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐