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

一、微信自定义分享

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

业务需求:

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

  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" // 复制链接});// 校验APIwx.checkJsApi({jsApiList: ["updateAppMessageShareData", "updateTimelineShareData"], // 需要检测的JS接口列表,所有JS接口列表见附录2,success: function(res) {}});});}

微信自定义分享限制分享相关推荐

  1. android sdk引入 微信分享_android 调用本地微信自定义多图分享朋友圈,可放在share sdk中一起使用...

    最终的效果图,右下角微信多图为自定义调用系统分享,分享到微信. 在你能正常调用share sdk的时候想在原本的基础上加自定义的分享非常的简单. 它的官网已经给出了代码,但是给的不是很清楚. lz毕竟 ...

  2. android微信自定义分享代码,android 调用本地微信自定义多图分享朋友圈,可放在share sdk中一起使用...

    最终的效果图,右下角微信多图为自定义调用系统分享,分享到微信. 在你能正常调用share sdk的时候想在原本的基础上加自定义的分享非常的简单. 它的官网已经给出了代码,但是给的不是很清楚. lz毕竟 ...

  3. 微信自定义分享卡片链接的解决方案(可自定义标题 描述 图片)

    微信自定义分享卡片链接的解决方案(可自定义标题 描述 图片) 参考文章: (1)微信自定义分享卡片链接的解决方案(可自定义标题 描述 图片) (2)https://www.cnblogs.com/rg ...

  4. uniapp 实现微信小程序全局分享及自定义分享按钮样式

    uniapp 实现微信小程序的全局 转发给好友/分享到朋友圈 的功能.主要使用 Vue.js 的 全局混入 概念. 下面直接上 实现步骤和代码: 创建全局分享内容文件 1.创建一个全局分享的 js 文 ...

  5. 微信公众号分享配置无效。。分享出来的只是纯链接了,如何自定义微信公众号的分享

    微信公众号分享配置无效..分享出来的只是纯链接了 挺久没接微信公众号的项目开发了,最近突然接了一个,结果微信自定义分享给我整懵了.原本配置的好好的,屡试不爽的代码,居然死活不生效,开启debug,开发 ...

  6. 微信自定义分享功能实现

    微信自定义分享功能实现 微信自定义分享功能实现 一.实现的关键 1.后端的任务 2.前台的任务 二.实现具体步骤 1.js安全域名配置(被分享的网址必须实现) 2.添加服务器配置(成为开发者) 3.生 ...

  7. 微信自定义分享功能二次封装

    我原本是纯后端开发,但是最近因为工作原因,做了微信公众号的二次开发,说实话写H5调CSS调得头大,还是得术业有专攻才行.话不多说,因为要做微信自定义分享,网上其实已经有很多轮子了,但是100个人就有1 ...

  8. 微信自定义分享--失效问题

    微信自定义分享 微信自定义分享到朋友圈/朋友失效问题 微信自定义分享到朋友圈 wx.onMenuShareTimeline({title: '', // 分享标题link: '', // 分享链接,该 ...

  9. 微信自定义分享ios无效

    微信自定义分享无效情况有很多种,这里记录开发中遇到的一种 分享链接包含汉字 在自定义分享中,分享链接包含汉字,且没有进行编码处理,会导致ios无效:因为Android会自行进行处理,ios却不会,导致 ...

  10. 微信自定义分享pc正常手机不正常

    微信自定义分享pc正常手机不正常,经排查后发现微信自定义分享的链接不能直接使用授权链接.因此我的解决方法是,新建一个页面用于授权.就解决啦

最新文章

  1. redmine升级了 ,6与18日同时发布2.0.3和1.4.4
  2. 未来,机器人帮你盖房子
  3. python 字符串形式的列表 转 列表
  4. 【学习笔记】springboot的过滤器与拦截器的使用 springboot的事件驱动模型
  5. Android安全与逆向之Dex动态加载
  6. Linux 系统中 Redis 的安装及其使用
  7. 中专学历就该被拒之门外?做Java开发改变命运难吗?
  8. spring ioc控制反转
  9. nginx request_uri接收到的参数只有一个
  10. ce标志cad_CAD自定义快捷键+常用符号
  11. 金融科技成为服贸会热议话题:数字化转型中如何保障金融安全
  12. 一次分布式架构cms系统页面静态化模块开发经历
  13. G1垃圾回收器在并发场景调优
  14. 【CQF Math Class 数学笔记】
  15. 爬取京东图书价格信息分析
  16. idea合并分支只合并某次提交的代码
  17. JustLaws 法律文库贡献指南
  18. 路由器wan和lan口
  19. Oracle中一个汉字占几个字节
  20. Burp Suite进行账号密码爆破

热门文章

  1. LightGBM之metric的选择
  2. 微型计算机电路基础第四版答案,微型计算机电路基础期末试卷2B
  3. 实现pc/移动端加载不同css样式
  4. 西瓜书研读——第五章 神经网络:BP神经网络
  5. Exoplayer使用记录4-调节音轨中某个频道的声音
  6. 电影票在线预订系统的设计和实现
  7. 自动驾驶攀登顶峰,Waymo、小马智行们难言轻松
  8. Windows Phone实例开发 - [鲜闻阅读器]
  9. [转载]辜新星:时刻调整方向 找到人生的蓝海
  10. MeshSimplify