方法一:在App.vue中封装
第一步:在App.vue里边写入封装的代码,如下
<script>
export default {
onLaunch: function(e) {},
onShow: function(e) {
console.log('App Show')
},
onHide: function() {
console.log('App Hide')
},
globalData: {
// #ifdef H5
setWxShare: function(redirect_link,id,imgurl) {
console.log("pages", redirect_link)
console.log("pagesid", id)
console.log("pagesimgurl", imgurl)
let wzhi = window.location.href //获取当前页面路由
this.hi = wzhi.split("#")[0]
let url = this.hi+'#/pages/share/code'
let ref = uni.getStorageSync('code');
//判断是否是ios环境
let os = ""
uni.getSystemInfo({
success: function(res) {
os = res.system;
}
});
var link = "";
if (os.indexOf("IOS") == -1) {
link = url.split("#")[0]
}else{
link = url
}
var jump_goods2 = this.hi+'#/pages/link_jump/link_jump'+"?ref=" + ref+"&id="+id+'&redirect_link='+redirect_link;//拼接分享的链接地址
var share_img = imgurl;//分享的图片
//请求接口返回签名
this.http('api/jssdk/get', 'post', {
link: link,share_img:share_img
}).then(res => {
var result = res.data.data;
var wxshare = require('jweixin-module');//调用微信集成的方法
wxshare.config({
debug: false, //是否打开调试
appId: result.appId, // 公众号的唯一标识
timestamp: result.timestamp, // 生成签名的时间戳
nonceStr: result.nonceStr, // ,生成签名的随机串
signature: result.signature, // 签名
jsApiList: [
"updateAppMessageShareData",
"updateTimelineShareData",
]
});
wxshare.ready(function() {
//分享给朋友
wxshare.updateAppMessageShareData({
title: "标题", // 分享标题
desc: "描述", // 分享描述
link: jump_goods2, // 当前页面链接
imgUrl: result.share_img, // 分享图标
success: function() { //分享成功回调
},
cancel: function() { //取消分享回调
}
});
//分享到朋友圈
wxshare.updateTimelineShareData({
title: "标题", // 分享标题
desc: "描述", // 分享描述
link: jump_goods2, // 当前页面链接
imgUrl: result.share_img, // 分享图标
success: function() {
},
cancel: function() {
}
});
})
});
},
// #endif
},
methods: {
}
}
</script>
第二步:在main.js中挂载全局
// #ifdef H5
Vue.prototype.setWxShare = App.globalData.setWxShare; // 右上角分享
// #endif
第三步:在相应的页面中调用
onShow(e) {
// #ifdef H5
let pages = getCurrentPages();
var redirect_link = pages[pages.length - 1].route;
this.setWxShare(redirect_link)// 分享传入参数
// #endif
},
方法二:建一个js来进行封装
第一步:在static下建一个share.js的文件内容如下:
async function setWxShare (redirect_link, id, imgurl) {
console.log("pages", redirect_link)
console.log("pagesid", id)
console.log("pagesimgurl", imgurl)
let wzhi = window.location.href //获取当前页面路由
this.hi = wzhi.split("#")[0]
let url = this.hi + '#/pages/share/code'
let ref = uni.getStorageSync('code');
let os = ""
//判断环境是否是ios
uni.getSystemInfo({
success: function(res) {
os = res.system;
}
});
var link = "";
if (os.indexOf("IOS") == -1) {
link = url.split("#")[0]
} else {
link = url
}
var jump_goods2 = this.hi + '#/pages/link_jump/link_jump' + "?ref=" + ref + "&id=" + id + '&redirect_link=' +redirect_link;//拼接的分享链接地址
var share_img = imgurl;
//请求接口返回签名
await this.http('api/jssdk/get', 'post', {
link: link,
share_img: share_img
}).then(res => {
var result = res.data.data;
var wxshare = require('jweixin-module');//调用微信集成的方法
wxshare.config({
debug: false, //是否打开调试
appId: result.appId, // 公众号的唯一标识
timestamp: result.timestamp, // 生成签名的时间戳
nonceStr: result.nonceStr, // ,生成签名的随机串
signature: result.signature, // 签名
jsApiList: [
"updateAppMessageShareData",
"updateTimelineShareData",
]
});
wxshare.ready(function() {
//分享给朋友
wxshare.updateAppMessageShareData({
title: "标题", // 分享标题
desc: "描述", // 分享描述
link: jump_goods2, // 当前页面链接
imgUrl: result.share_img, // 分享图标
success: function() { //分享成功回调
},
cancel: function() { //取消分享回调
}
});
//分享到朋友圈
wxshare.updateTimelineShareData({
title: "标题", // 分享标题
desc: "描述", // 分享描述
link: jump_goods2, // 当前页面链接
imgUrl: result.share_img, // 分享图标
success: function() {},
cancel: function() {}
});
})
});
}
export default {setWxShare};//暴露出这个方法
第二步:在main.js引用,并且挂载全局
const https = require('./static/http.js')
import share from './static/share.js';
Vue.prototype.setWxShare = share.setWxShare;
第三步:在相应的页面中调用
onShow(e) {
// #ifdef H5
let pages = getCurrentPages();
var redirect_link = pages[pages.length - 1].route;
this.setWxShare(redirect_link)// 分享传入参数
// #endif
},