微信自定义分享&限制分享

本文介绍了微信自定义分享的业务需求和代码实现,包括自定义“分享给朋友”、“分享到朋友圈”等接口,并提供了兼容旧版的代码示例。此外,还探讨了如何通过微信界面操作限制分享,包括关闭窗口、隐藏或显示功能按钮,以满足特定的业务需求。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

微信自定义分享&限制分享

一、微信自定义分享

【 (* ̄︶ ̄)微信官方文档 】
业务需求:

开发过程中有些业务需要借助微信进行推广和宣传。难免需要使用微信提供的一些功能,比如微信的二次分享(也叫微信自定义分享)功能来方便用户查阅和了解。微信公众号提供的自定义分享功能涉及的模块主要有以下几类:

  1. 自定义“分享给朋友”及“分享到QQ”(1.4.0)
  2. 自定义“分享到朋友圈”及“分享到QQ空间”(1.4.0)
  3. 获取“分享到腾讯微博”按钮点击状态及自定义分享内容接口。

【提示】:新版的微信自定义分享相对【即将废弃】的自定义分享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:
  1. 关闭当前网页窗口
  2. 批量隐藏功能按钮
  3. 批量显示功能按钮
  4. 隐藏所有非基础按钮
  5. 显示所有非基础按钮

【 代码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) {}
					});
				});
		}
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值