背景
微信放开了一个功能,就是微信开放标签,用于唤起APP或者唤起微信小程序
- 唤起APP
- 唤起微信小程序
- 微信二次分享自定义配置功能
code
import jsonp from 'jsonp'
import wx from 'weixin-js-sdk'
interface ShareData {
title: string
desc: string
imgUrl: string
link: string
}
type ShareDataPartial = Partial<ShareData>;
interface WxConfig {
debug: boolean
appId: string
timestamp: string
nonceStr: string
signature: string
jsApiList: string[]
openTagList?: string[]
}
const jsApiList = [
'checkJsApi',
'onMenuShareTimeline',
'onMenuShareAppMessage',
'onMenuShareQQ',
'onMenuShareQZone',
'onMenuShareWeibo',
'hideMenuItems',
'showMenuItems',
'hideAllNonBaseMenuItem',
'showAllNonBaseMenuItem',
'translateVoice',
'startRecord',
'stopRecord',
'onRecordEnd',
'playVoice',
'pauseVoice',
'stopVoice',
'uploadVoice',
'downloadVoice',
'chooseImage',
'previewImage',
'uploadImage',
'downloadImage',
'getNetworkType',
'openLocation',
'getLocation',
'hideOptionMenu',
'showOptionMenu',
'closeWindow',
'scanQRCode',
'chooseWXPay',
'openProductSpecificView',
'addCard',
'chooseCard',
'openCard'
]
export function initEvents ({shareData, sdkUrl}: { shareData: ShareData, sdkUrl?: string}) {
// 获取签名
const URL_WX_SIGN = sdkUrl ? sdkUrl : 'https://xxx.xxxx.com/weixin/getSignPackage';
const url = URL_WX_SIGN + '?url=' + encodeURIComponent(location.href.split('#')[0]);
return jsonp(url, {
prefix: 'xxx',
name: 'xxx'
}, (err, data) => {
if (err) throw err
if (data.error_code === '0') {
const wxConfig: WxConfig = {
debug: false,
appId: data.data.appId,
timestamp: data.data.timestamp,
nonceStr: data.data.nonceStr,
signature: data.data.signature,
jsApiList
};
/* 支持微信开放标签 */
if (sdkUrl) {
wxConfig.openTagList = ['wx-open-launch-app','wx-open-launch-weapp'];
}
wx.config(wxConfig);
wx.ready(() => {
if (JSON.stringify(shareData) === '{}' || !shareData) return;
/* 功能: 微信分享 */
const defaultData = {
title: document.title,
desc: '',
link: location.href,
imgUrl: '',
trigger (res) {
// alert('用户点击发送给朋友aa');
},
success (res) {
// alert('成功');
},
cancel (res) {
// alert('已取消');
},
fail (res) {
// alert('分享失败了');
}
}
shareData = Object.assign(defaultData, shareData)
wx.onMenuShareAppMessage(shareData)
wx.onMenuShareTimeline(shareData)
wx.onMenuShareQQ(shareData)
wx.onMenuShareWeibo(shareData)
wx.onMenuShareQZone(shareData)
})
} else {
console.error(data.error_msg)
}
});
}
复制代码