一、微信自定义分享
【 (* ̄︶ ̄)微信官方文档 】
业务需求:
开发过程中有些业务需要借助微信进行推广和宣传。难免需要使用微信提供的一些功能,比如微信的二次分享(也叫微信自定义分享)功能来方便用户查阅和了解。微信公众号提供的自定义分享功能涉及的模块主要有以下几类:
- 自定义“分享给朋友”及“分享到QQ”(1.4.0);
- 自定义“分享到朋友圈”及“分享到QQ空间”(1.4.0);
- 获取“分享到腾讯微博”按钮点击状态及自定义分享内容接口。
【提示】:新版的微信自定义分享相对【即将废弃】的自定义分享api来说简洁了好多,处理起来相比旧版自定义分享来说少了许多代码;提高了代码的复用性。
微信自定义分享代码:
let WeChatPay = function() {
// 2、引入js后、获取公众号校验信息
let timestamp = '',
nonceStr = '',
signature = '';
// 用于换取微信校验信息的参数:要求不可以包含 “#” 号
let v = {
url: location.split('#')[0]
};
// 3、通过config接口注入权限验证配置(需要同步进行,在获取到校验信息后方可注入config,否则校验失败!)
wx.config({
debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
appId: '', // 必填,公众号的唯一标识
timestamp: , // 必填,生成签名的时间戳
nonceStr: '', // 必填,生成签名的随机串
signature: '', // 必填,签名
jsApiList: [
"checkJsApi",
"onMenuShareAppMessage",
"onMenuShareTimeline",
"updateAppMessageShareData",
"updateTimelineShareData"
] // 必填,需要使用的JS接口列表
});
// 4、通过ready接口处理成功验证
wx.ready(function() {
// 【备注:checkJsApi接口是客户端6.0.2新引入的一个预留接口,第一期开放的接口均可不使用checkJsApi来检测。】
wx.checkJsApi({
jsApiList: [
"onMenuShareAppMessage",
"onMenuShareTimeline",
"updateAppMessageShareData",
"updateTimelineShareData"
], // 需要检测的JS接口列表,所有JS接口列表见附录2,
success: function(res) {}
});
// 1.0版本的微信分享已经被废弃,为了兼容老版本写法如下
// 自定义“分享给朋友”及“分享到QQ”按钮的分享内容
if (wx.onMenuShareAppMessage) {
wx.onMenuShareAppMessage({
title: '', // 分享标题
desc: '', // 分享描述
link: '', // 分享链接,该链接域名或路径必须与当前页面对应的公众号JS安全域名一致
imgUrl: '', // 分享图标
success: function() {} // 设置成功
});
} else {
// 自定义“分享给朋友”及“分享到QQ”按钮的分享内容(1.4.0)
wx.updateAppMessageShareData({
title: '', // 分享标题
desc: '', // 分享描述
link: '', // 分享链接,该链接域名或路径必须与当前页面对应的公众号JS安全域名一致
imgUrl: '', // 分享图标
success: function() {} // 设置成功
});
}
if (wx.onMenuShareTimeline) {
wx.onMenuShareTimeline({
title: '', // 分享标题
link: '', // 分享链接,该链接域名或路径必须与当前页面对应的公众号JS安全域名一致
imgUrl: '', // 分享图标
success: function() {} // 设置成功
});
} else {
// 自定义“分享到朋友圈”及“分享到QQ空间”按钮的分享内容(1.4.0)
wx.updateTimelineShareData({
title: '', // 分享标题
link: '', // 分享链接,该链接域名或路径必须与当前页面对应的公众号JS安全域名一致
imgUrl: '', // 分享图标
success: function() {} // 设置成功
});
}
});
}
【注】:此写法是为了兼容旧版的微信自定义分享功能。因为有些老用户没有升级微信或者没有升级最新版的【JS-SDK】,因此会导致老旧代码微信分享失败。若不考虑兼顾老版本可以舍弃【 if 】中的代码块,直接采用【else】中的代码块。
二、限制分享【微信界面操作】
业务需求:
在开发过程中,难免会有一些特殊的要求,如:要求此次推广活动只能在微信中打开,限制微信用户分享给好友,限制分享到微信朋友圈等等。当遇到这些业务需求的时候就需要特定的操作来做一些限制了。微信浏览器右上角的的三个点,点开时下方弹出的操作按钮是可以做限制处理的,这就是在根上处理了限制微信用户分享的问题。
界面操作API:
- 关闭当前网页窗口
- 批量隐藏功能按钮
- 批量显示功能按钮
- 隐藏所有非基础按钮
- 显示所有非基础按钮
【 代码API 】
// 1、关闭当前网页窗口接口
wx.closeWindow();
// 2、批量隐藏功能按钮接口
wx.hideMenuItems({
menuList: [] // 要隐藏的菜单项,只能隐藏“传播类”和“保护类”按钮,所有menu项见附录3
});
// 3、批量显示功能按钮接口
wx.showMenuItems({
menuList: [] // 要显示的菜单项,所有menu项见附录3
});
// 4、隐藏所有非基础按钮接口
wx.hideAllNonBaseMenuItem();
// 5、显示所有功能按钮接口
wx.showAllNonBaseMenuItem();
附录3:菜单列表:
【 基本类 】
举报 | "menuItem:exposeArticle" |
---|---|
调整字体 | "menuItem:setFont" |
日间模式 | "menuItem:dayMode" |
夜间模式 | "menuItem:nightMode" |
刷新 | "menuItem:refresh" |
查看公众号(已添加) | "menuItem:profile" |
查看公众号(未添加) | "menuItem:addContact" |
【 传播类 】
发送给朋友 | "menuItem:share:appMessage" |
---|---|
分享到朋友圈 | "menuItem:share:timeline" |
分享到QQ | "menuItem:share:qq" |
分享到Weibo | "menuItem:share:weiboApp" |
收藏 | "menuItem:favorite" |
分享到FB | "menuItem:share:facebook" |
分享到 QQ 空间 | "menuItem:share:QZone" |
【 保护类 】
编辑标签 | "menuItem:editTag" |
---|---|
删除 | "menuItem:delete" |
复制链接 | "menuItem:copyUrl" |
原网页 | "menuItem:originPage" |
阅读模式 | "menuItem:readMode" |
在QQ浏览器中打开 | "menuItem:openWithQQBrowser" |
在Safari中打开 | "menuItem:openWithSafari" |
邮件 | "menuItem:share:email" |
一些特殊公众号 | "menuItem:share:brand" |
代码实例:
let RestrictedBtn = function() {
// 2、引入js后、获取公众号校验信息
let timestamp = '',
nonceStr = '',
signature = '';
// 用于换取微信校验信息的参数:要求不可以包含 “#” 号
let v = {
url: location.split('#')[0]
};
// 3、通过config接口注入权限验证配置(需要同步进行,在获取到校验信息后方可注入config,否则校验失败!)
wx.config({
debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
appId: '', // 必填,公众号的唯一标识
timestamp: , // 必填,生成签名的时间戳
nonceStr: '', // 必填,生成签名的随机串
signature: '', // 必填,签名
jsApiList: ["checkJsApi", "hideMenuItems", "updateAppMessageShareData", "updateTimelineShareData"] // 必填,需要使用的JS接口列表
});
// 4、通过ready接口处理成功验证
wx.ready(function() {
// 微信界面限制
// 要隐藏的菜单项,只能隐藏“传播类”和“保护类”按钮
wx.hideMenuItems({
menuList: [
"menuItem:share:qq", // 分享到QQ
"menuItem:share:weiboApp", // 分享到Weibo
"menuItem:favorite", // 收藏
"menuItem:share:facebook", // 分享到FB
"menuItem:share:QZone", // 分享到 QQ 空间
"menuItem:openWithQQBrowser", // 在QQ浏览器中打开
"menuItem:openWithSafari", // 在Safari中打开
"menuItem:share:email", // 邮件
"menuItem:copyUrl" // 复制链接
});
// 校验API
wx.checkJsApi({
jsApiList: ["updateAppMessageShareData", "updateTimelineShareData"], // 需要检测的JS接口列表,所有JS接口列表见附录2,
success: function(res) {}
});
});
}