xx-common
Version:
the functions of yd common
773 lines (750 loc) • 27.5 kB
text/typescript
// 微信分享
// 使用方法
// 步骤1,引入:
// import * as YdShare from '@/common/share.js'
// 步骤2,初始化:
// let shareObj = {
// shareTitle: this.city + '竟然有那么多好玩的活动',
// shareContent: "快来参加吧!",
// shareIcon:"https://ssl-pubpic.51yund.com/857264683.jpg",
// shareUrl: 'https://sslwxsharecircle.51yund.com/vapps/cityActivity/'
// }
// YdShare.setSimpleShare(shareObj);
// 步骤3,调用
// YdShare.onShare()
// 如果是右上角分享,则不需要步骤3
import CryptoJS from "crypto-js";
import wx from "weixin-js-sdk"; //引入WxjsSDK
async function commonShare(shareObj: any, cbFun: () => void) {
//sharePlatforom -2:右上角分享配置不调起分享面板 -1:分享面板 0:新浪微博 1:微信聊天 2:微信朋友圈 4:QQ聊天 5:QQ空间
//shareType 0:分享链接(icon title content url) 1:分享图片(QQ空间不支持 即使是分享图片的时候 也需要设置一套分享链接的素材)
//screenShotsFlag true 分享截屏
shareCb = cbFun;
var sharePlatforom = shareObj["sharePlatforom"];
var shareType = shareObj["shareType"];
if (sharePlatforom == -2 && shareType != 1) {
updateShareMetaInfo(shareObj); //更新meta信息
await addWeixinShareSpecifyInfoV2(shareObj); //增加二次分享
return;
}
if (!window.tool.isYuedong()) return;
if (window.tool.isAndroidWeb()) {
if (sharePlatforom >= 0) {
/*单渠道分享 (分享链接 or 图片)
android 分享图片.meta带上share_pic_url
QQ 空间不支持 正常分享页面meta配置的title、content、url、icon等
*/
sharePlatforom = initAppShareType(sharePlatforom);
shareObj["sharePlatforom"] = sharePlatforom;
androidShareByType(shareObj);
} else {
//分享面板分享链接(图片 )
updateShareMetaInfo(shareObj); //更新meta信息 给客户端取
await addWeixinShareSpecifyInfoV2(shareObj); //增加二次分享
ydShare(null, null);
}
return;
}
if (sharePlatforom >= -1) {
// ios 分享面板 or 单渠道分享 (图片 + 链接)
var screenShotsFlag = shareObj["screenShotsFlag"];
var shareTitle = shareObj["shareTitle"];
var shareContent = shareObj["shareContent"];
var shareIcon = shareObj["shareIcon"];
var openShareUrl = shareObj["shareUrl"];
var imgBase64Url = shareObj["sharePicUrl"];
shareObj = initShareObj(shareObj);
if (sharePlatforom < 0) {
sharePlatforom = "";
}
//imgBase64Url与sharePicUrl都是base64格式且同时存在,分享图片就是根据sharePicUrl来生成
//imgBase64Url1 为了兼容客户端无法分享bug加的
var imgBase64Url1 =
"iVBORw0KGgoAAAANSUhEUgAAAB0AAAAdCAIAAADZ8fBYAAADlElEQVR4AX2VA6xEVxCGv3/OuYvajdPGSRvUCGvFKsPGZuPGbsyaQW3btm27T6s70+Ttnpzcfcrd3Tl435n7z73z6+ifjnfkmGOx+V3jemmnpRIvE7LCTUY44GCCAOEgsAAAc8JwAHBhQYlRYBgKwh0MENmYDwwKmvoXNcRRWepuq0NjQdvklhQMddA1Vsk63FSWVLYJgrJTm3HhEoRgK1p41LvuoKOjW02OAM/CjSKoMLaia1y0LmgKGrrSKxse1DMDwNqYtbBU63p1ZyBl9TporNStng/hh9the9u+jiCBxeY3JGSQyqSBJeU/fPWt2VeFsJC01A2spDyL9lAdcNEel4ASKalJpKwmKSVy33o99QwzWcL20ODyf657LT5p1LcAFd0MN9zCNQ/wxuzt6RsfTz4imMVsFtPyPXNaQRvt/DLs5dH7d208NbBkFML8EmG4yU2LhUSEpk+OHpsx0SKDACD6m7kbMilhLe1VK3eObZwKpKI755S4Z+lr//yt8es9NRRoQ+6rb1KSGTaw/hPrL786e3doqUsoXCMs3KIsbAbZeGr02L/+j2ECwZ5pj6xkmKGs9G/73/Wrd6SEEQtcVEltwVJI5Uy58Eb6nZ+fHz3dKAU+tMFQA6GEmWyg3p2rD3/pX/dltiCGVCTFTaVuFrF0O31LL06e+XH2fU/Nfmkfk6XNq0fz7fSH2zfuG6Sssr9kGlXfeggddBYb+u+R9fv3SfsMNLR5slhWvmXltr/4I4sqaLkUMZfRl5sLbuUdydJP/i1EVmoR0Kj39ujdx8dPDHMDtXNWggi0zXtBmGuBJtqzhudNfRJEwkAe7Y3/3Ti1UcOwZABROoPmsazmr/pIGGFEG+Mj0pGnDs+cxHjNV5Py0IZPrT/55uy1oWWjrY+BlghR+lks9y0nepEu2OvSfdP+q6ystav7pf3/bf+5ZeX6nDACgvD6X932VvVdMoKJT88cXHDy8LRxjBr1xj6KiHtWbvvGP+/nPR1XbO8yHb+owpe4p/T79Psr/risxR21ES3+1uzNYWrA6/0t9WuVghsx37e8gL3XvjCLcNKiEcuS9bOyF4uB4jI4wqNawVzf7ZxN9JWbjp/LwXF1+nVxGTpaF7/YUakaa3c/7hJq3XZGd51tB3QnuVK3Io1sobVYfuABbbH6wFS3KTAVP55zqzTb1lfU1KSuVXff4LIpC7eAKuKOT6WqXLGTIGWb/ge7OXDlEvWZtQAAAABJRU5ErkJggg==";
var url =
"/local_call?local_action=share_params&arg0=" +
encodeURIComponent(shareTitle) +
"&arg1=" +
encodeURIComponent(shareContent) +
"&arg2=" +
encodeURIComponent(shareIcon) +
"&arg3=" +
encodeURIComponent(openShareUrl) +
"&arg4=" +
encodeURIComponent(JSON.stringify(shareObj)) +
"&arg5=" +
encodeURIComponent(sharePlatforom) +
"&arg6=" +
encodeURIComponent(screenShotsFlag) +
"&arg7=" +
encodeURIComponent(imgBase64Url1) +
"&arg8=" +
encodeURIComponent(imgBase64Url);
iosIframeLocalCall(url);
}
}
function checkShareContent(content: string | undefined) {
var enableContent = true;
if (!content || content == undefined || content == "") {
enableContent = false;
}
return enableContent;
}
function dealCheck(defaultVal: string, needVal: any) {
let finalVal = defaultVal;
if (checkShareContent(needVal)) {
finalVal = needVal;
}
return finalVal;
}
/**
* 设置/更新 meta信息
* @param {Object} shareObj
*/
function updateShareMetaInfo(shareObj: { [x: string]: any }) {
var doc = document;
var metaNode = doc.getElementsByTagName("meta");
for (var index = 0; index < metaNode.length; index++) {
var metaInfo = metaNode[index];
var metaAttr = metaInfo["attributes"];
if (!metaAttr) {
continue;
}
var metaAttrLen = metaAttr.length;
for (var attrIndex = 0; attrIndex < metaAttrLen; attrIndex++) {
var metaAttrIndexNode: any = metaAttr[attrIndex];
var itemProp = metaAttrIndexNode["itemprop"];
if (metaAttrIndexNode.name == "itemprop") {
var shareTitle = shareObj["shareTitle"];
var shareContent = shareObj["shareContent"];
if (metaAttrIndexNode.value == "name") {
metaInfo["content"] = shareTitle;
}
if (metaAttrIndexNode.value == "description") {
metaInfo["content"] = shareContent;
}
if (metaAttrIndexNode.value == "qq_title") {
metaInfo["content"] = dealCheck(shareTitle, shareObj["shareQqTitle"]);
}
if (metaAttrIndexNode.value == "qzone_title") {
metaInfo["content"] = dealCheck(
shareTitle,
shareObj["shareQzoneTitle"]
);
}
if (metaAttrIndexNode.value == "qq_content") {
metaInfo["content"] = dealCheck(
shareContent,
shareObj["shareQqContent"]
);
}
if (metaAttrIndexNode.value == "qzone_content") {
metaInfo["content"] = dealCheck(
shareContent,
shareObj["shareQzoneContent"]
);
}
if (metaAttrIndexNode.value == "wx_circle") {
metaInfo["content"] = dealCheck(
shareContent,
shareObj["shareWxCircle"]
);
}
if (metaAttrIndexNode.value == "wb_content") {
metaInfo["content"] = dealCheck(
shareContent,
shareObj["shareWbContent"]
);
}
if (metaAttrIndexNode.value == "share_url") {
metaInfo["content"] = dealCheck("", shareObj["shareUrl"]);
}
if (metaAttrIndexNode.value == "image") {
metaInfo["content"] = dealCheck("", shareObj["shareIcon"]);
}
if (metaAttrIndexNode.value == "share_pic_url") {
metaInfo["content"] = dealCheck("", shareObj["sharePicUrl"]);
}
if (metaAttrIndexNode.value == "screen_shots_flag") {
metaInfo["content"] = dealCheck("", shareObj["screenShotsFlag"]);
}
}
}
}
}
async function AccessWeixinShare(currentUrl: string) {
//微信分享
let ts = new Date().getTime();
let noncestr = "Wm3WZYTPz0wzccnW";
let ticket = await GetWeixinTicket();
let arrTemp = [];
arrTemp[0] = "jsapi_ticket=" + ticket;
arrTemp[1] = "noncestr=" + noncestr;
arrTemp[2] = "timestamp=" + ts;
arrTemp[3] = "url=" + currentUrl;
arrTemp.sort();
let strTemp = arrTemp.join("&");
strTemp = CryptoJS.SHA1(strTemp).toString(CryptoJS.enc.Hex);
let strArr: any = new Object();
strArr["sha1Str"] = strTemp;
strArr["ts"] = ts;
strArr["noncestr"] = noncestr;
return strArr;
}
/**
* 增加二次分享
*
* */
async function addWeixinShareSpecifyInfoV2(shareObj: { [x: string]: any }) {
if (!window.tool.isWeixin()) {
return;
}
var shareTitle = shareObj["shareTitle"];
var shareContent = shareObj["shareContent"];
var shareIcon = shareObj["shareIcon"];
var shareWxCircle = dealCheck(shareContent, shareObj["shareWxCircle"]);
var shareQqTitle = dealCheck(shareTitle, shareObj["shareQqTitle"]);
var shareQqContent = dealCheck(shareContent, shareObj["shareQqContent"]);
var shareQzoneTitle = dealCheck(shareTitle, shareObj["shareQzoneTitle"]);
var shareQzoneContent = dealCheck(
shareContent,
shareObj["shareQzoneContent"]
);
var shareWbTitle = dealCheck(shareTitle, shareObj["shareWbTitle"]);
var shareWbContent = dealCheck(shareContent, shareObj["shareWbContent"]);
var shareLinkUrl = "window.location.href";
var shareOpenUrl = dealCheck(shareLinkUrl, shareObj["shareUrl"]);
var strArr = await AccessWeixinShare(window.location.href);
var sha1Str = strArr["sha1Str"];
var timestamp = strArr["ts"];
var noncestr = strArr["noncestr"];
// addWeixinShareViewInfo(sha1Str, timestamp, noncestr, shareTitle, shareContent, shareLinkUrl, shareIcon, shareOpenUrl);
shareLinkUrl = shareLinkUrl.replace("v=*&", "");
shareLinkUrl = shareLinkUrl.replace("&is_share=*", "");
shareLinkUrl = shareLinkUrl.replace("user_id=", "MSEASE=");
shareLinkUrl = shareLinkUrl.replace(
"member=",
window.tool.getUrlParam("user_id")
);
if (!shareOpenUrl) {
shareOpenUrl = shareLinkUrl;
}
wx.config({
debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
appId: "wxa0bd6bb58c4f415f", // 必填,公众号的唯一标识
timestamp: timestamp, // 必填,生成签名的时间戳
nonceStr: noncestr, // 必填,生成签名的随机串
signature: sha1Str, // 必填,签名,见附录1
jsApiList: [
"onMenuShareTimeline",
"onMenuShareAppMessage",
"onMenuShareQQ",
"onMenuShareWeibo",
"onMenuShareQZone",
"showMenuItems",
], // 必填,需要使用的JS接口列表,所有JS接口列表见附录2
});
wx.ready(function () {
//验证通过
//分享到朋友圈
wx.onMenuShareTimeline({
title: shareWxCircle, // 分享标题
link: shareOpenUrl, // 分享链接
imgUrl: shareIcon, // 分享图标
success: function () {
// 用户确认分享后执行的回调函数
if ("onYdShare" in window) {
window.onYdShare();
}
},
cancel: function () {
// 用户取消分享后执行的回调函数
},
});
//分享好友
wx.onMenuShareAppMessage({
title: shareTitle, // 分享标题
desc: shareContent, // 分享描述
link: shareOpenUrl, // 分享链接
imgUrl: shareIcon, // 分享图标
type: "link", // 分享类型,music、video或link,不填默认为link
dataUrl: "", // 如果type是music或video,则要提供数据链接,默认为空
success: function () {
// 用户确认分享后执行的回调函数
if ("onYdShare" in window) {
window.onYdShare();
}
},
cancel: function () {
// 用户取消分享后执行的回调函数
},
});
wx.onMenuShareQQ({
title: shareQqTitle, // 分享标题
desc: shareQqContent, // 分享描述
link: shareOpenUrl, // 分享链接
imgUrl: shareIcon, // 分享图标
success: function () {
// 用户确认分享后执行的回调函数
if ("onYdShare" in window) {
window.onYdShare();
}
},
cancel: function () {
// 用户取消分享后执行的回调函
},
});
wx.onMenuShareQZone({
title: shareQzoneTitle, // 分享标题
desc: shareQzoneContent, // 分享描述
link: shareOpenUrl, // 分享链接
imgUrl: shareIcon, // 分享图标
success: function () {
// 用户确认分享后执行的回调函数
if ("onYdShare" in window) {
window.onYdShare();
}
},
cancel: function () {
// 用户取消分享后执行的回调函数
},
});
wx.onMenuShareWeibo({
title: shareWbTitle, // 分享标题
desc: shareWbContent, // 分享描述
link: shareOpenUrl, // 分享链接
imgUrl: shareIcon, // 分享图标
success: function () {
// 用户确认分享后执行的回调函数
if ("onYdShare" in window) {
window.onYdShare();
}
},
cancel: function () {
// 用户取消分享后执行的回调函数
},
});
});
wx.error(function (res: any) {
//微信验证失败
});
}
/**
* 点击右上角分享 客户端调用此方法获得分享信息
*/
function MetaShareInfo() {
var doc = document;
var metaNode = doc.getElementsByTagName("meta");
var shareTitle = "";
var shareContent = "";
var shareIcon = "";
var shareWxCircle = "";
var shareQqTitle = "";
var shareQqContent = "";
var shareQzoneTitle = "";
var shareQzoneContent = "";
var shareWbContent = "";
var sharePicUrl = "";
var screenShotsFlag: any = "";
var openShareUrl = window.location.href;
for (var index = 0; index < metaNode.length; index++) {
var metaInfo = metaNode[index];
var metaAttr = metaInfo["attributes"];
if (!metaAttr) {
continue;
}
var metaAttrLen = metaAttr.length;
for (var attrIndex = 0; attrIndex < metaAttrLen; attrIndex++) {
var metaAttrIndexNode: any = metaAttr[attrIndex];
var itemProp = metaAttrIndexNode["itemprop"];
if (metaAttrIndexNode.name == "itemprop") {
let metaDesc = metaInfo["content"];
if (metaAttrIndexNode.value == "description") {
shareContent = metaDesc;
}
if (metaAttrIndexNode.value == "name") {
shareTitle = metaDesc;
}
if (metaAttrIndexNode.value == "image") {
shareIcon = metaDesc;
}
if (metaAttrIndexNode.value == "wx_circle") {
shareWxCircle = metaDesc;
}
if (metaAttrIndexNode.value == "qq_title") {
shareQqTitle = metaDesc;
}
if (metaAttrIndexNode.value == "qq_content") {
shareQqContent = metaDesc;
}
if (metaAttrIndexNode.value == "qzone_title") {
shareQzoneTitle = metaDesc;
}
if (metaAttrIndexNode.value == "qzone_content") {
shareQzoneContent = metaDesc;
}
if (metaAttrIndexNode.value == "wb_content") {
shareWbContent = metaDesc;
}
if (metaAttrIndexNode.value == "share_url") {
openShareUrl = metaDesc;
}
if (metaAttrIndexNode.value == "share_pic_url") {
sharePicUrl = metaDesc;
}
if (metaAttrIndexNode.value == "screen_shots_flag") {
screenShotsFlag = metaDesc;
}
}
}
}
openShareUrl = openShareUrl.replace(/&is_share=[a-z]+/g, "");
openShareUrl = openShareUrl.replace(/&is_share=/g, "");
openShareUrl = openShareUrl.replace(/\?user_id=[0-9]+&?/g, "?");
openShareUrl = openShareUrl.replace(/\?user_id=[0-9]+/g, "");
openShareUrl = openShareUrl.replace(/&user_id=[0-9]+/g, "");
openShareUrl = openShareUrl.replace(/&user_id=/g, "");
if (!checkShareContent(shareWxCircle)) {
shareWxCircle = shareContent;
}
if (!checkShareContent(shareQqTitle)) {
shareQqTitle = shareTitle;
}
if (!checkShareContent(shareQqContent)) {
shareQqContent = shareContent;
}
if (!checkShareContent(shareQzoneTitle)) {
shareQzoneTitle = shareTitle;
}
if (!checkShareContent(shareQzoneContent)) {
shareQzoneContent = shareContent;
}
if (!checkShareContent(shareWbContent)) {
shareWbContent = shareContent;
}
if (!checkShareContent(openShareUrl)) {
shareWbContent = shareWbContent + openShareUrl;
}
if (window.tool.isAndroidWeb() && window.YDJSInterface) {
setAppShareUrl(openShareUrl);
if ("setMetaDataShareImgV2" in window.YDJSInterface && sharePicUrl != "") {
window.YDJSInterface.setMetaDataShareImgV2(
shareQzoneTitle,
shareQzoneContent,
shareIcon,
shareWbContent,
sharePicUrl,
openShareUrl
);
return;
}
if ("setMetaDataShareInfoExv2" in window.YDJSInterface) {
window.YDJSInterface.setMetaDataShareInfoExv2(
shareTitle,
shareContent,
shareIcon,
shareWxCircle,
shareQqTitle,
shareQqContent,
shareQzoneContent,
shareWbContent,
shareQzoneTitle
);
return;
}
}
var shareObj: any = new Object();
shareObj["shareTitle"] = shareTitle;
shareObj["shareContent"] = shareContent;
shareObj["shareIcon"] = shareIcon;
shareObj["shareUrl"] = openShareUrl;
shareObj["sharePicUrl"] = sharePicUrl;
shareObj["shareWxCircle"] = shareWxCircle;
shareObj["shareQqTitle"] = shareQqTitle;
shareObj["shareQqContent"] = shareQqContent;
shareObj["shareQzoneTitle"] = shareQzoneTitle;
shareObj["shareQzoneContent"] = shareQzoneContent;
shareObj["shareWbContent"] = shareWbContent;
if (sharePicUrl != "") {
shareObj["shareType"] = 1;
shareObj["sharePlatforom"] = -2;
}
shareObj = initShareObj(shareObj);
screenShotsFlag = Boolean(screenShotsFlag);
if (window.tool.isIosWeb()) {
var strAction = "share_params";
var imgBase64Url1 =
"iVBORw0KGgoAAAANSUhEUgAAAB0AAAAdCAIAAADZ8fBYAAADlElEQVR4AX2VA6xEVxCGv3/OuYvajdPGSRvUCGvFKsPGZuPGbsyaQW3btm27T6s70+Ttnpzcfcrd3Tl435n7z73z6+ifjnfkmGOx+V3jemmnpRIvE7LCTUY44GCCAOEgsAAAc8JwAHBhQYlRYBgKwh0MENmYDwwKmvoXNcRRWepuq0NjQdvklhQMddA1Vsk63FSWVLYJgrJTm3HhEoRgK1p41LvuoKOjW02OAM/CjSKoMLaia1y0LmgKGrrSKxse1DMDwNqYtbBU63p1ZyBl9TporNStng/hh9the9u+jiCBxeY3JGSQyqSBJeU/fPWt2VeFsJC01A2spDyL9lAdcNEel4ASKalJpKwmKSVy33o99QwzWcL20ODyf657LT5p1LcAFd0MN9zCNQ/wxuzt6RsfTz4imMVsFtPyPXNaQRvt/DLs5dH7d208NbBkFML8EmG4yU2LhUSEpk+OHpsx0SKDACD6m7kbMilhLe1VK3eObZwKpKI755S4Z+lr//yt8es9NRRoQ+6rb1KSGTaw/hPrL786e3doqUsoXCMs3KIsbAbZeGr02L/+j2ECwZ5pj6xkmKGs9G/73/Wrd6SEEQtcVEltwVJI5Uy58Eb6nZ+fHz3dKAU+tMFQA6GEmWyg3p2rD3/pX/dltiCGVCTFTaVuFrF0O31LL06e+XH2fU/Nfmkfk6XNq0fz7fSH2zfuG6Sssr9kGlXfeggddBYb+u+R9fv3SfsMNLR5slhWvmXltr/4I4sqaLkUMZfRl5sLbuUdydJP/i1EVmoR0Kj39ujdx8dPDHMDtXNWggi0zXtBmGuBJtqzhudNfRJEwkAe7Y3/3Ti1UcOwZABROoPmsazmr/pIGGFEG+Mj0pGnDs+cxHjNV5Py0IZPrT/55uy1oWWjrY+BlghR+lks9y0nepEu2OvSfdP+q6ystav7pf3/bf+5ZeX6nDACgvD6X932VvVdMoKJT88cXHDy8LRxjBr1xj6KiHtWbvvGP+/nPR1XbO8yHb+owpe4p/T79Psr/risxR21ES3+1uzNYWrA6/0t9WuVghsx37e8gL3XvjCLcNKiEcuS9bOyF4uB4jI4wqNawVzf7ZxN9JWbjp/LwXF1+nVxGTpaF7/YUakaa3c/7hJq3XZGd51tB3QnuVK3Io1sobVYfuABbbH6wFS3KTAVP55zqzTb1lfU1KSuVXff4LIpC7eAKuKOT6WqXLGTIGWb/ge7OXDlEvWZtQAAAABJRU5ErkJggg==";
var url =
"/local_call?local_action=" +
strAction +
"&arg0=" +
encodeURIComponent(shareTitle) +
"&arg1=" +
encodeURIComponent(shareContent) +
"&arg2=" +
encodeURIComponent(shareIcon) +
"&arg3=" +
encodeURIComponent(openShareUrl) +
"&arg4=" +
encodeURIComponent(JSON.stringify(shareObj)) +
"&arg6=" +
encodeURIComponent(screenShotsFlag) +
"&arg7=" +
encodeURIComponent(imgBase64Url1) +
"&arg8=" +
encodeURIComponent(sharePicUrl);
iosIframeLocalCall(url);
return;
}
if ("setShareMetaInfo" in window.YDJSInterface && window.YDJSInterface) {
window.YDJSInterface.setShareMetaInfo(
shareTitle,
shareContent,
shareIcon,
openShareUrl,
JSON.stringify(shareObj)
);
}
}
// ios 如果我们连续 2 个 js 调 native,连续2次改document.location的话,在app中,
// 只能截获后面那次请求,前一次请求由于很快被替换掉,所以被忽略掉了,前一次请求返回数据丢失。
// 故换成iframe 来实现调用
function iosIframeLocalCall(url: string) {
var iFrame: any;
iFrame = document.createElement("iframe");
iFrame.setAttribute("src", url);
iFrame.setAttribute("style", "display:none;");
iFrame.setAttribute("height", "0px");
iFrame.setAttribute("width", "0px");
iFrame.setAttribute("frameborder", "0");
document.body.appendChild(iFrame);
// 发起请求后这个 iFrame 就没用了,所以把它从 dom 上移除掉
iFrame.parentNode.removeChild(iFrame);
iFrame = null;
}
function setAppShareUrl(url: string) {
if (window.YDJSInterface && "setPageShareUrl" in window.YDJSInterface) {
window.YDJSInterface.setPageShareUrl(url);
}
}
function initAppShareType(sharePlatforom: number) {
//web和ios sharePlatforom -1:分享面板 0:新浪微博 1:微信聊天 2:微信朋友圈 4:QQ聊天 5:QQ空间
//android 安卓分享面板类型:微信:0,朋友圈:1,微博:2, QQ:3,QQ空间:4
switch (sharePlatforom) {
case 0:
sharePlatforom = 2;
break;
case 1:
sharePlatforom = 0;
break;
case 2:
sharePlatforom = 1;
break;
case 4:
sharePlatforom = 3;
break;
case 5:
sharePlatforom = 4;
break;
}
return sharePlatforom;
}
function androidShareByType(shareObj: { [x: string]: any }) {
var shareType = shareObj["shareType"];
var sharePlatforom = shareObj["sharePlatforom"];
var shareTitle = shareObj["shareTitle"];
var shareContent = shareObj["shareContent"];
var shareIcon = shareObj["shareIcon"];
var shareUrl = shareObj["shareUrl"];
var sharePic = shareObj["sharePicUrl"];
var shareWxCircle = dealCheck(shareContent, shareObj["shareWxCircle"]);
var shareQqTitle = dealCheck(shareTitle, shareObj["shareQqTitle"]);
var shareQqContent = dealCheck(shareContent, shareObj["shareQqContent"]);
var shareQzoneTitle = dealCheck(shareTitle, shareObj["shareQzoneTitle"]);
var shareQzoneContent = dealCheck(
shareContent,
shareObj["shareQzoneContent"]
);
var shareWbContent = dealCheck(shareContent, shareObj["shareWbContent"]);
if (
window.YDJSInterface &&
"setMetaDataShareImgExtra" in window.YDJSInterface &&
shareType == 1
) {
//分享图片
window.YDJSInterface.setMetaDataShareImgExtra(
shareQzoneTitle,
shareQzoneContent,
shareIcon,
shareWbContent,
sharePic,
shareUrl,
sharePlatforom
);
return;
}
//分享链接
sharePic = "";
if (
window.YDJSInterface &&
"setMetaDataShareTlInfoExtra" in window.YDJSInterface
) {
window.YDJSInterface.setMetaDataShareTlInfoExtra(
shareTitle,
shareContent,
shareIcon,
shareWxCircle,
shareQqTitle,
shareQzoneTitle,
shareQqContent,
shareQzoneContent,
shareWbContent,
shareUrl,
sharePlatforom
);
return;
}
ydShare(null, null);
}
/**
* 把分享对象 转换成ios需要的样子
* @param {Object} shareObj
*/
function initShareObj(sObj: any) {
var shareType = sObj["shareType"];
var sharePlatforom = sObj["sharePlatforom"];
var shareTitle = sObj["shareTitle"];
var shareContent = sObj["shareContent"];
var shareIcon = sObj["shareIcon"];
var openShareUrl = sObj["shareUrl"];
var sharePic = sObj["sharePicUrl"];
var shareWxCircle = sObj["shareWxCircle"];
var shareQqTitle = sObj["shareQqTitle"];
var shareQqContent = sObj["shareQqContent"];
var shareQzoneTitle = sObj["shareQzoneTitle"];
var shareQzoneContent = sObj["shareQzoneContent"];
var shareWbContent = sObj["shareWbContent"];
if (shareType == 1 && sharePlatforom != 5) {
shareIcon = sharePic;
openShareUrl = "";
}
var shareObj: any = new Object();
shareObj["qq"] = {};
shareObj["qq"]["title"] = shareTitle;
shareObj["qq"]["text"] = shareContent;
if (shareQqTitle != "") {
shareObj["qq"]["title"] = shareQqTitle;
}
if (shareQqContent != "") {
shareObj["qq"]["text"] = shareQqContent;
}
shareObj["qzone"] = {};
shareObj["qzone"]["title"] = shareTitle;
shareObj["qzone"]["text"] = shareContent;
if (shareQzoneTitle != "") {
shareObj["qzone"]["title"] = shareQzoneTitle;
}
if (shareQzoneContent != "") {
shareObj["qzone"]["text"] = shareQzoneContent;
}
shareObj["wechat_session"] = {};
if (shareTitle != "") {
shareObj["wechat_session"]["title"] = shareTitle;
}
if (shareContent != "") {
shareObj["wechat_session"]["text"] = shareContent;
}
//微信朋友圈title&content只有一个
shareObj["wechat_timeline"] = {};
shareObj["wechat_timeline"]["title"] = shareTitle;
shareObj["wechat_timeline"]["text"] = shareContent;
if (shareWxCircle != "") {
shareObj["wechat_timeline"]["title"] = shareWxCircle;
shareObj["wechat_timeline"]["text"] = shareWxCircle;
}
shareObj["sina"] = {};
shareObj["sina"]["title"] = shareTitle;
shareObj["sina"]["text"] = shareContent;
if (shareWbContent != "") {
//内容后面拼接链接 微博会自动识别链接。
shareObj["sina"]["text"] = shareWbContent + openShareUrl;
}
if (shareIcon != "") {
shareObj["qq"]["image"] = shareIcon;
shareObj["qzone"]["image"] = shareIcon;
shareObj["wechat_session"]["image"] = shareIcon;
shareObj["wechat_timeline"]["image"] = shareIcon;
shareObj["sina"]["image"] = shareIcon;
}
if (openShareUrl != "") {
shareObj["qq"]["url"] = openShareUrl;
shareObj["qzone"]["url"] = openShareUrl;
shareObj["wechat_session"]["url"] = openShareUrl;
shareObj["wechat_timeline"]["url"] = openShareUrl;
shareObj["sina"]["url"] = "";
}
return shareObj;
}
function stopBubble(e: { stopPropagation: () => void }) {
if (e && e.stopPropagation) e.stopPropagation();
//非IE
else (window.event as any).cancelBubble = true; //IE
}
function ydShare(type: string | null | undefined, event: null | undefined) {
if (event != null) {
stopBubble(event);
}
if (null == type) {
window.location.href = "/local_call?local_action=share";
} else {
window.location.href = "/local_call?local_action=share&type=" + type;
}
}
function onShare(that: { [funName: string]: any }) {
if (!window.tool.isYuedong()) {
window.global.toast("亲,请点击右上角分享按钮进行分享~");
} else {
ydShare(null, null);
}
}
let shareCb = function () {};
//右上角分享 可以分享链接/图片/ios可分享截图
async function setSimpleShare(shareObj: any, cbFun: { (): void; (): void }) {
await addWeixinShareSpecifyInfoV2(shareObj);
updateShareMetaInfo(shareObj);
if (cbFun) {
shareCb = cbFun;
}
}
function onYdShareCb() {
shareCb();
}
function GetWeixinTicket() {
return window.$http
.post("/invite/get_wx_web_token", {})
.then((res: { code: number; ticket: any }) => {
if (res.code == 0) {
return res.ticket;
}
return "";
});
}
(function () {
window.MetaShareInfo = () => {
MetaShareInfo();
};
window.onYdShare = () => {
onYdShareCb();
};
})();
export {
iosIframeLocalCall,
addWeixinShareSpecifyInfoV2,
commonShare,
onShare,
setSimpleShare,
MetaShareInfo,
AccessWeixinShare,
onYdShareCb,
};