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 {
	
} 

你可能感兴趣的:(微信小程序,javascript,uni-app)