import request from "../utils/request.js"; import ShareConfigModel from "../model/ShareConfigModel"; import DnSdk from "../lib/DnSdk.js"; /** * @description:检查分享配置 * @return {*} */ const checkShareConfig = async () => { try { // 加载分享配置 let shareConfigInfo = ShareConfigModel.getInstance().getInfo(); if (Object.getOwnPropertyNames(shareConfigInfo).length === 0 || shareConfigInfo.title === "") { // 获取服务端分享配置 const res = await request.api("COMMON", { do: "getShareConfig", }); res.imageUrl = res.image_url; ShareConfigModel.getInstance().load(res); } return Promise.resolve(); } catch (error) { return Promise.reject(error); } }; /** * @description: 开启系统分享 * @return {*} */ export const showShareMenu = async () => { try { // 开启分享按钮 wx.showShareMenu({ withShareTicket: true, }); await checkShareConfig(); let shareData = buildShareData({}); wx.onShareAppMessage(() => { // 腾讯广告小游戏SDK上报 DnSdk.getInstance().track('SHARE', { target: 'APP_MESSAGE' }); return shareData; }); wx.onShareTimeline(() => { // 腾讯广告小游戏SDK上报 DnSdk.getInstance().track('SHARE', { target: 'TIME_LINE' }); return shareData; }); wx.onCopyUrl(() => { return { query: shareData, }; }); // 收藏 wx.onAddToFavorites(() => { // 腾讯广告小游戏SDK上报 DnSdk.getInstance().track('ADD_TO_WISHLIST', { // 普通收藏(default) type: 'default', }) }) return Promise.resolve(); } catch (error) { return Promise.reject(error); } }; /** * @description: 主动发起分享 * @param {*} data * @return {*} */ export const shareAppMessage = async (data) => { console.log("shareAppMessage入参"+JSON.stringify(data)); try { await checkShareConfig(); // 发起分享 let shareData = buildShareData(data); wx.shareAppMessage(shareData); return Promise.resolve(); } catch (error) { return Promise.reject(error); } }; const buildShareData = (data) => { let shareConfigInfo = ShareConfigModel.getInstance().getInfo(); let shareData = { title: shareConfigInfo.title, imageUrl: shareConfigInfo.imageUrl, query: shareConfigInfo.query, }; let share_ext = ""; // 记录分享透传参数 if (data.hasOwnProperty("title") && data.title) shareData.title = data.title; if (data.hasOwnProperty("imageUrl") && data.imageUrl) shareData.imageUrl = data.imageUrl; if (data.hasOwnProperty("ext") && data.ext) share_ext = data.ext; //前面这个share_ext是研发透传进来的,后面这个是服务端传进来的 shareData.query += shareConfigInfo.share_ext; if (share_ext) { shareData.query += `&share_ext=` + share_ext; } return shareData; }; /** * @description: 主动监听研发透传参数 * @param {*} data * @return {*} */ export const onShareAppMessage = (data,menus=['shareAppMessage', 'shareTimeline']) => { console.log("onShareAppMessage入参"+JSON.stringify(data)); //先off,再on wx.offShareAppMessage(); wx.offShareTimeline(); wx.offCopyUrl(); wx.offAddToFavorites(); let shareData = buildShareData(data); wx.showShareMenu({ withShareTicket: true, menus:menus }) wx.onShareAppMessage(() => { // 腾讯广告小游戏SDK上报 DnSdk.getInstance().track('SHARE', { target: 'APP_MESSAGE' }); return shareData; }); wx.onShareTimeline(() => { // 腾讯广告小游戏SDK上报 DnSdk.getInstance().track('SHARE', { target: 'TIME_LINE' }); return shareData; }); wx.onCopyUrl(() => { return { query: shareData.query, }; }); // 收藏 wx.onAddToFavorites(() => { // 腾讯广告小游戏SDK上报 DnSdk.getInstance().track('ADD_TO_WISHLIST', { // 普通收藏(default) type: 'default', }) }) };