单个页面有定制化分享业务时,在需要分享的页面加入onShareAppMessage和onShareTimeline这两个方法,而onShareAppMessage这个分享到好友方法需要页面路径path,title标题,以及imageUrl封面,onShareTimeline分享到朋友圈方法需要页面路径及参数,用query字段接收,以及title标题和imageUrl封面。页面路径和参数可以根据页面栈获取,为此我们可以封装一个获取页面路径及参数的方式,方便各个需要分享功能的页面调用。
以下是分享页
share.vue
<template>
<view>
分享页
</view>
</template>
<script>
import Util from "@/util/index.js";
export default {
onShareAppMessage() {
return {
title: '',
path: Util.pagesName()[0],
imageUrl: '../../static/image/logo2.png'
}
},
//分享到朋友圈
onShareTimeline() {
return {
title: '',
query: Util.pagesName()[1],
imageUrl: '../../static/image/logo2.png'
}
},
data(){
return {
}
},
onLoad(options) {
}
}
</script>
<style>
</style>
封装的一个获取各个页面参数和路径的方法,方便各个分享页面调用
index.js
import Circle from "./Circle.js";
export default class Util extends Circle{
constructor(obj = {}) {
super(obj);
Object.assign(this, obj);
}
static pagesName(){
let pages = getCurrentPages();
let shareFriend = pages[pages.length -1].$page.fullPath; //上一个页面
let shareCircle = shareFriend.split('?')[1]
let shareWx = shareFriend.split('?')[0]
let shareArr = []
// 当页面没有参数时,直接返回页面路径
if(!shareCircle){
shareArr.push(shareFriend)
return shareArr
}
let WxItem = shareCircle.split('&')
let WxUrl = ''
WxItem.forEach((item,index) =>{
decodeURIComponent(item.split('=')[1]) // 解码页面路径参数
WxUrl += '&'+decodeURIComponent(item.split('=')[0])+'='+decodeURIComponent(item.split('=')[1])
})
let friendUrl = shareWx+'?'+WxUrl.substr(1) // 分享到好友获取页面路径及所带参数
let urlItem = shareCircle.split('&')
let decodeUrl = '';
urlItem.forEach((item,index) =>{
decodeURIComponent(item.split('=')[1])
decodeUrl += '&'+decodeURIComponent(item.split('=')[0])+'='+decodeURIComponent(item.split('=')[1])
})
shareArr.push(friendUrl) // 存储页面路径和参数到shareArr数组中用于分享好友
shareArr.push(decodeUrl.substr(1)) // 存储页面参数到shareArr数组中用于分享到朋友圈
return shareArr
}
}
Circle.js
export default class Circle {
}