- 当前 Bug 的表现(可附上截图)
- 预期表现
小程序右上角分享可以获取webview的地址,并且地址作为参数用小程序的路由分享带出来。当别人打开时,打开的是设置的路由,路由含有分享时的参数。
- 复现路径
比如在/pages/index中有webview组件,其初始地址是https://www.aiplat.com/index,在跳转到内页后https://www.aiplat.com/index/info?id=888888,在这个页面分享出来的路由( 这个叫第一次分享)也是/pages/index?p=/index/info&id=888888,在这含有p参数时/pages/index会将webview的地址变为https://www.aiplat.com/index/info?id=888888。但是在多次转发后,打开的页面一直是最初分享后的地址。比如在别人打开第一次分享时跳转是https://www.aiplat.com/index/info?id=888888,然后在这个页面打开到其他页面时https://www.aiplat.com/index/list/add,此时分享出来的路由却还是第一次分享时的/pages/index?p=/index/info&id=888888。这个应该是/pages/index?p=/index/list/add。ios和安卓都有这个问题。
- 提供一个最简复现 Demo
你这个问题 我前几天刚解决。我这边出现这个问题的原因是因为,我用了第三方统计sdk---阿拉丁
然后用的是7.0.0的版本。通过一系列测试后来发现可能是阿拉丁的问题。我又去阿拉丁官网下了一个新包,,不过也是7.0.0的。替换后发现没有此问题了。
仅供参考。
没有使用阿拉丁
是用wepy的
麻烦给个相关的代码片段(https://developers.weixin.qq.com/miniprogram/dev/devtools/minicode.html),我们定位下问题
onShareAppMessage = function(res) {
var url = res.webViewUrl;
url = url.split('aiplat.com')[1];
var s = '&share=1';
if (url.indexOf('?') > -1) {
var a = url.split('?');
url = a[0] + '&' + a[1];
}
url += s;
url = '/pages/index?url=' + url;
console.log(url);
return {
title: 'aiplat.com',
path: url
};
};
onShareAppMessage 的代码是这样的。
用的是wepy框架
你好,如果是wepy框架的问题还需向wepy团队反馈哈
就是有一个分享的监听方法onShareAppMessage,这个方法在小程序列表里打开小程序,进入任意页面分享出来的路由是/pages/share?****,此时执行了onShareAppMessage方法。但是在/pages/share?****打开页面到其他页面再去第二次分享时,分享出来的路由依然是/pages/share?****,因为这次分享并没有执行onShareAppMessage方法。onShareAppMessage方法用于获取当前打开的webview页面地址,是官方自带的监听方法。
就是在第一次分享出来的路由打开小程序,在这个基础上进入到其他页面再去分享时,分享出来的路由依然是第一次分享出来的路由。