微信小程序分享朋友圈

article/2025/9/21 22:37:39

微信小程序在基础库2.11.3之前没有分享到朋友圈的功能,分享的思路是用 canvas画布生成一张分享图片,保存到相册,用户将带有分享二维码的图片发到朋友圈,其他人可以识别图中二维码的方式进入小程序的指定分享页面。可参考智行火车票的助力抢票功能。

1、wxml文件

<view class='share'><canvas canvas-id="shareCanvas" style="width:300px;height:380px"></canvas>
</view>
<view class='btn-box'><button bindtap='downloadImg'>分享到朋友圈</button>
</view>

2、wxss样式文件(如果不想显示canvas,可以将canvas定位到可视区域外部)

page{background: #eee;
}
.share{width: 300px;height: 380px;position: fixed;left: 0;right: 0;top: 0;bottom: 100rpx;margin: auto;
}
.btn-box{padding: 1060rpx 60rpx 0 60rpx;
}
button{background: darkturquoise;
}

3、js文件

Page({data: {sharebg: 'http://qiniu.jnwtv.com/H520181206092255188568494.png', // 分享底部背景图shareTitle: '哈哈哈男孩从小就没有地位,看来一万个心酸哈哈哈男孩从小就没有地位,看来一万个心酸', // 分享标题shareCoverImg: 'http://qiniu.jnwtv.com/H520181210164154569520223.jpeg', // 分享封面图shareQrImg: 'http://qiniu.jnwtv.com/H520181210164146322557972.jpg', // 分享小程序二维码userInfo: {headImg: 'http://qiniu.jnwtv.com/H520181210164138180428653.jpg', //用户头像nickName: '打豆豆', // 昵称},seeDate: '2018-12-04', //看视频日期},onLoad: function (options) {},downloadImg:function(){let that = this;// 创建画布const ctx = wx.createCanvasContext('shareCanvas')// 白色背景ctx.setFillStyle('#fff')ctx.fillRect(0, 0, 300, 380)ctx.draw()// 下载底部背景图wx.getImageInfo({src: that.data.sharebg,success: (res1) => {ctx.drawImage(res1.path, 0, 250, 300, 130)// 下载视频封面图wx.getImageInfo({src: that.data.shareCoverImg,success: (res2) => {ctx.drawImage(res2.path, 0, 0, 300, 168)// 分享标题// ctx.setTextAlign('center')    // 文字居中ctx.setFillStyle('#000')  // 文字颜色:黑色ctx.setFontSize(20)         // 文字字号:20pxif (that.data.shareTitle.length <= 14) {// 不用换行ctx.fillText(that.data.shareTitle, 10, 200, 280)} else if (that.data.shareTitle.length <= 28) {// 两行let firstLine = that.data.shareTitle.substring(0, 14);let secondLine = that.data.shareTitle.substring(14, 27);ctx.fillText(firstLine, 10, 200, 280)ctx.fillText(secondLine, 10, 224, 280)} else {// 超过两行let firstLine = that.data.shareTitle.substring(0, 14);let secondLine = that.data.shareTitle.substring(14, 27) + '...';ctx.fillText(firstLine, 10, 200, 280)ctx.fillText(secondLine, 10, 224, 280)}// 下载二维码wx.getImageInfo({src: that.data.shareQrImg,success: (res3) => {let qrImgSize = 70ctx.drawImage(res3.path, 212, 256, qrImgSize, qrImgSize)ctx.stroke()ctx.draw(true)// 用户昵称ctx.setFillStyle('#000')  // 文字颜色:黑色ctx.setFontSize(14) // 文字字号:16pxctx.fillText(that.data.userInfo.nickName, 38, 284)// 观看日期ctx.setFillStyle('#999')  // 文字颜色:黑色ctx.setFontSize(10)       // 文字字号:16pxctx.fillText('在' + that.data.seeDate + '观看这个视频', 38, 298)// 下载用户头像wx.getImageInfo({src: that.data.userInfo.headImg,success: (res4) => {// 先画圆形,制作圆形头像(圆心x,圆心y,半径r)ctx.arc(22, 284, 12, 0, Math.PI * 2, false)ctx.clip()// 绘制头像图片let headImgSize = 24ctx.drawImage(res4.path, 10, 272, headImgSize, headImgSize)// ctx.stroke() // 圆形边框ctx.draw(true)// 保存到相册wx.canvasToTempFilePath({canvasId: 'shareCanvas',success: function (res) {wx.saveImageToPhotosAlbum({filePath: res.tempFilePath,success: function (res) {wx.showToast({title: '分享图片已保存到相册'})}})}}, this)}})}})}})}})}
})

4、生成canvas的图片资源需要缓存到本地,所以需要在微信公众平台,将需要用到的分享图片,包括二维码的图片域名添加到微信安全域名范围内,否则会报下载图片失败的错误。刚开始也可以将微信开发者工具的校验安全域名关掉,进行测试。开发者工具对canvas图片的生成可能会有问题,请尽量使用真机测试。

5、通过api获取的小程序二维码是二进制格式,后台返回的图片应该是base64形式的图片,前端需要把二维码base64格式转换成本地图片,方法见我的另一篇博客 https://blog.csdn.net/bocongbo/article/details/84954567

 

基础库2.11.3版本以后,小程序支持安卓手机分享到朋友圈。

https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/share-timeline.html


http://chatgpt.dhexx.cn/article/ONLdaAZK.shtml

相关文章

微信小程序分享页面

微信小程序页面无法分享到朋友圈之内的&#xff08;只能分享到好朋友或者群中&#xff09;&#xff0c;并且微信小程序无法打开外部链接&#xff0c;只能跳转到小程序内部的pages页面。 问题来了&#xff0c;怎么通过小程序分享页面呢&#xff1f; 首先&#xff0c;这个页面一定…

uniapp微信小程序分享

uniapp微信公众号H5端分享&#xff1a;uniapp微信公众号h5端分享_停留的章小鱼的博客-CSDN博客 一、uniapp微信小程序分享&#xff08;点击右上角胶囊 分享&#xff09; 1、全局分享&#xff08;每个页面胶囊都可以分享&#xff09; &#xff01;&#xff01;&#xff01;在…

关于微信小程序分享及分享朋友圈、复制链接

1、关于直接隐藏分享及分享朋友圈、复制链接 直接在需要禁用的小程序页面的onShow生命周期里使用 wx.hideShareMenu() 在体验版展示如下&#xff08;分享和分享朋友圈已禁用&#xff0c;复制链接还在&#xff09; 正式版才能完全生效&#xff0c;展示如下&#xff08;分享和复…

微信小程序开启分享给好友及分享朋友圈功能

创建一个空白模板的微信小程序&#xff0c;发布成功后才发现不能分享给好友 及朋友圈 查了下才知道&#xff0c;要有分享功能需要开启。 在小程序首页的里添加以下两个函数 //用户点击右上角分享给好友&#xff0c;要现在分享到好友这个设置menu的两个参数&#xff0c;才可以…

uniapp 微信小程序分享、分享朋友圈功能

页内自定义分享按钮 当页面js上没有添加事件“onShareAppMessage”&#xff0c;右上角‘…’不会出现“转发”事件。 如果有事件&#xff0c;但是没有定义事件内容的话&#xff0c;转发的卡片则是当前页面的截屏信息。 官方文档&#xff1a;https://uniapp.dcloud.io/api/plug…

微信小程序实现分享到朋友圈

2020年7月8日。微信小程序推出分享朋友圈&#xff0c;所以笔者先来试一下&#xff0c;没想到一下搞成了 。。 按照微信官方文档得第一步&#xff0c;我们需要设置允许发给朋友&#xff0c;在小程序得生命周期里面这样写。 首先&#xff0c;把你的小程序基础库&#xff0c;改为…

小程序分享给好友以及分享到朋友圈

前言&#xff1a;小程序分享给好友或者朋友圈仅需我们使用微信自带的API&#xff0c;分享到朋友圈的前提是需要我们允许分享给好友&#xff0c;其次才可以分享到朋友圈&#xff0c;功能简单话不多说直接上官方API链接和代码。 一、分享给好友 wx.onShareAppMessage(function c…

微信小程序 转发 分享功能

官网文档&#xff1a;https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/share.html 第一种情况 点击小程序转发 不加入参数 //转发onShareAppMessage: function() {let users wx.getStorageSync(user);if (res.from button) {}return {title: 转发,…

小程序实现分享朋友圈

有过小程序基础的同学都应该知道&#xff0c;小程序是不能直接分享到朋友圈&#xff0c;起码是自从我写下这边文章起&#xff0c;小程序还没有提供分享朋友圈的api。 但是公司很多时候都会想要传播自己的小程序&#xff0c;从而获取更多的流量&#xff0c;从而分享朋友圈的功能…

微信小程序实现分享至朋友圈的功能

微信小程序实现分享至朋友圈的功能 微信小程序从基础库 2.11.3 开始&#xff0c;可将小程序页面分享到朋友圈。适用于内容型页面的分享&#xff0c;不适用于有较多交互的页面分享。 1 设置分享状态 小程序页面默认不可被分享到朋友圈&#xff0c;开发者需主动设置“分享到朋友…

微信小程序分享功能

由于小程序的分享(微信、头条平台)&#xff0c;需要监听页面的onShareAppMessage生命周期&#xff0c;小程序需要在页面声明了此生命周期&#xff0c;点击右上角的"胶囊"才会有分享功能&#xff0c; 而一般情况下&#xff0c;我们希望每个页面都可以分享&#xff0c…

微信小程序之分享功能

微信小程序之分享功能 小程序风口正盛&#xff0c;将小程序作为获客的来源之一实在合适不过&#xff0c;想要让小程序的获客产生裂变&#xff0c;那么从将小程序的数据发送出去势在必行&#xff0c;本文提供以下几种方案作为数据出口&#xff0c;达到老拉新/口碑传播的效果。 …

微信小程序的转发分享功能

文章目录 button组件的open-type"share"app.jsonpages/about/about.wxmlpages/about/about.wxsspages/about/about.js 页面右上角的转发按钮app.jsonpages/about/about.wxmlpages/about/about.wxsspages/about/about.jspages/home/home.wxmlpages/home/home.wxsspage…

vscode中文高亮

测试代码: #include <常用> 如(i)断; 如(j)下;空 主(){ }在vscode目录下resources\app\extensions\cpp\syntaxes中c.tmLanguage.json试改改. "match": "\\b(break|case|continue|default|do|else|for|goto|if|_Pragma|return|switch|while|断|下)\\b&quo…

vscode中文标点符号自动转英文标点符号

vscode中文标点符号自动转英文标点符号

vscode中文乱码解决方法总结

第一种方法&#xff1a;直接点下面的 找到GB18030(其实GB都可以&#xff0c;我也不懂&#xff0c;一个一个试吧) 运行就可以了 第二种方法&#xff1a;点击设置&#xff0c; 在上面搜索 编码 &#xff0c;点击utf8 下拉找到GB 第三种方法&#xff1a; 这种方法我也不会&#xf…

VSCode正则搜索中文字符

(".*[\u4E00-\u9FA5])|([\u4E00-\u9FA5].*") 右侧开启正则匹配&#xff0c;即可搜出全部中文字符

vscode 中文插件失效

一、Crtl Shift P&#xff0c;打开命令面板&#xff0c;输入configure display language&#xff0c;点击图中框起来的那一项&#xff1a; 二、 选择 zh-cn&#xff1a; 等待vscode自动重启。 大功告成&#xff01;

MAC 用配置设置解决vscode中文乱码问题

MAC 用配置设置解决vscode中文乱码问题 中文乱码出现的原因 因为中文主要有两套编码&#xff0c;一套是GBK&#xff0c;一套是UTF-8&#xff0c;代码编辑器一般默认用UTF-8&#xff0c;而在输出的终端中默认是GBK&#xff0c;所以在UTF-8下的中文输出到GBK的终端自然会乱码。…

解决vscode中文注释乱码

有的文件&#xff0c;用Notepad打开很清楚能显示中文或其他中文内容&#xff0c;但是直接用vscode加载就乱码。 解决方案&#xff1a; 打开vscode&#xff0c;打开设置 之后点文件&#xff0c;勾选上Auto Guess Encoding。 最后&#xff0c;将原有乱码文件移出工作区&#x…