| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155 |
- 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',
- })
- })
- };
|