import { Injectable } from '@kaokei/use-vue-service'; import { DaoService } from './dao.service'; interface ShareConfig { link: string; title: string; desc: string; timeLineTitle: string; } @Injectable() export class WxService { constructor(public daoService: DaoService) {} public async shareConfig({ link, title, desc, timeLineTitle }: ShareConfig) { const res = await this.daoService.getMobileJSConfig(window.location.href); const { appId, nonceStr, signature, timestamp } = res; wx.config({ debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。 appId, // 必填,公众号的唯一标识 timestamp, // 必填,生成签名的时间戳 nonceStr, // 必填,生成签名的随机串 signature, // 必填,签名 jsApiList: ['updateAppMessageShareData', 'updateTimelineShareData'], // 必填,需要使用的JS接口列表 }); wx.ready(function () { //需在用户可能点击分享按钮前就先调用 wx.updateAppMessageShareData({ title: title || '一封来自核桃杯的邀请函!', // 分享标题 desc: desc || '核桃杯思维与编程大赛正式开启报名,4~16岁小朋友均可报名。', // 分享描述 link: link, // 分享链接,该链接域名或路径必须与当前页面对应的公众号JS安全域名一致 imgUrl: 'https://img.project.com/competition/ht-cup-h5/photo.png', // 分享图标 success: function () { // 设置成功 }, }); }); wx.ready(function () { //需在用户可能点击分享按钮前就先调用 wx.updateTimelineShareData({ title: timeLineTitle || '核桃杯思维与编程大赛正式开启报名,4~16岁小朋友免费报名参加。', // 分享标题 link: link, // 分享链接,该链接域名或路径必须与当前页面对应的公众号JS安全域名一致 imgUrl: 'https://img.project.com/competition/ht-cup-h5/photo1.png', // 分享图标 success: function () { // 设置成功 }, }); }); wx.error(function () { // config信息验证失败会执行error函数,如签名过期导致验证失败,具体错误信息可以打开config的debug模式查看,也可以在返回的res参数中查看,对于SPA可以在这里更新签名。 // console.log(res) }); } }