在开发微信小程序过程中,需要实现将小程序分享到朋友圈,以扩大宣传范围,吸引流量。
实现也不难,满足【两个条件】即可:
-
首先,页面需设置允许“发送给朋友”。具体参考
Page.onShareAppMessage
接口文档 -
满足条件 1 后,页面需设置允许“分享到朋友圈”,同时可自定义标题、分享图等。具体参考
Page.onShareTimeline
接口文档
满足上述两个条件的页面,可被分享到朋友圈(在微信小程序中点击右上角【...】)。
实现则是在Page中定义onShareTimeline()此事件处理函数,点击右上角【...】菜单后弹出层才会显示【分享到朋友圈】按钮,如下图(『分享到朋友圈』是彩色高亮状态):
不过需要注意的是微信小程序是从基础库 2.11.3 才开始支持的。详细可参考微信平台官方文档说明:https://developers.weixin.qq.com/miniprogram/dev/reference/api`/Page.html#onShareTimeline
支持自定义分享内容,参考代码片断如下:
onShareTimeline() {
return {
title: '欢迎打开我的微信小程序【废话文学间】'
imageUrl: '', // 可自定义图片,若图片URL为空则默认取小程序Logo
query: 'id=1'
};
}
参数解释:
但是,由于用户在朋友圈中打开分享后,小程序呈现的是【单页模式】,在这个模式下,一些组件或API接口存在一定限制,详情见下文【单页模式下的限制】章节。
除了这些以上明文规定的限制,还有当query传参内容过多过长时,也是无法分享到朋友圈的。
而当【query】参数中含有中文和其他特殊字符时,还需进行URL编码,代码片断参考如下:
onShareTimeline() {
return {
title: '欢迎打开我的微信小程序【废话文学间】'
imageUrl: '', // 可自定义图片,若图片URL为空则默认取小程序Logo
query: 'id=1&name=' + encodeURIComponent('中文内容和特殊字符’)
};
}
实测中,微信云开发中的数据库查询相关API也会受限制,如果将某个重度依赖微信云开发数据库查询的页面分享到朋友圈,用户在朋友圈点击打开将是一个相当不完整的页面,那体验会大打折扣(虽然这个【单页模式】右下角会有一个【前往小程序】可以打开小程序体验完整页面功能,但大多用户估计也不会注意到这么一个按钮,就算注意到了,也没多少人会愿意点击)。
本人想到一个蹩脚的解决办法就是在分享前,将该页面需要用到的数据先查询出来,塞到【query】参数中传过去,由页面去接收处理。但这样也有缺点,就是前面提到的:不可传过多的数据。如果你有更好的方法,欢迎留言探讨!
欢迎关注微信公众号【废话文学阁】了解更多开发资讯!