import request from "../utils/request.js"; import ShareConfigModel from "../model/ShareConfigModel"; /** * @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 { // 开启分享按钮 tt.showShareMenu({ withShareTicket: true, }); await checkShareConfig(); let shareData = buildShareData({}); tt.onShareAppMessage(() => { return shareData; }); 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); console.log("发起分享参数" + JSON.stringify(shareData)); // 发起分享 tt.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"]) => { console.log("onShareAppMessage入参" + JSON.stringify(data)); //先off,再on tt.offShareAppMessage(); let shareData = buildShareData(data); tt.showShareMenu({ withShareTicket: true, menus: menus, }); tt.onShareAppMessage(() => { return shareData; }); };