uniapp 微信小程序全局分享(二)

单个页面有定制化分享业务时,在需要分享的页面加入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 {
	
} 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值