zoukankan      html  css  js  c++  java
  • 微信自定义分享&限制分享

    一、微信自定义分享

    【 (* ̄︶ ̄)微信官方文档 】

    业务需求:

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

    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) {}
    					});
    				});
    		}
    
  • 相关阅读:
    oracle将blob转为varchar2
    根据给定年份和周数获取指定周的开始结束日期
    获取指定月份的第一个周五
    找回误删的表和数据
    oracle大数据库
    Java数据库编程
    流的使用
    (转)支持 PS/2 与 USB 的键盘过滤驱动(可卸载)
    Unity编辑器扩展-Custom List, displaying data your way
    值得推荐的C/C++框架和库 (真的很强大)〔转〕
  • 原文地址:https://www.cnblogs.com/zxk5211/p/14118655.html
Copyright © 2011-2022 走看看