使用uni-app开发了一个微信公众号项目
要实现分享到微信好友的功能;
微信引入和封装就不赘述了;
直接说问题和表象:
自定义微信分享在安卓中是正常的,但是在iOS中页面需要刷新一次执行能调起微信分享;
这个问题 出于以下几个原因:
1. 使用了history模式
2. ios访问只记录第一次的页面,跳转页面时页面不会改变(刷新及正常),android 正常
各路大神给出了原因:
IOS:每次切换路由,SPA的url是不会变的,发起签名请求的url参数必须是当前页面的url(就是最初进入页面时的url)
Android:每次切换路由,SPA的url是会变的,发起签名请求的url参数必须是当前页面的url(不是最初进入页面时的)
微信官网在之前版本也描述过
解决办法:
1.首先把跳转页面的方法由 uni.navigateTo换成window.location.href
2.然后要在封装的微信分享方法里在进行微信分享签名时传入的url进行处理,
在ios系统中,在App.vue中获取并缓存该url,android这不需要。 动态判断设备系统类型
uni.setStorageSync('url',window.location.href)//在App.vue中获取并缓存
let url = uni.getSystemInfoSync().platform ==='ios'? uni.getStorageSync('url') :window.location.href //动态判断url
引用好心人的博客:
https://www.cnblogs.com/yeziyou/p/13790261.html
https://ask.dcloud.net.cn/article/38106