好记星不如烂笔头,写一写记录下。
一. 用到的API
转发功能API参考微信官方,列下常用的
onShareAppMessage(options)
在返回值中设置转发的title与页面path,会回调转发成功与失败,js中设置了这个胶囊按键中才会出现“转发”
wx.hideShareMenu(OBJECT)
隐藏胶囊按键里面的“转发”按钮
wx.showShareMenu(OBJECT)
1.显示胶囊按键里的“转发”按钮 2.设置是否使用带shareTicket 的转发(转发到微信群)
wx.getShareInfo(OBJECT)
拿shareTicket 获取微信群的信息
二. 实现步骤
- 转发分为页面内button(只能是button)或右上角胶囊按键转发。后者只要添加了前面提到的第一个方法就可以了。而页面内转发要在wxml里这么加(不需要bindtap,点击button会触发
onShareAppMessage(options)
方法
<button class="btnShare" open-type="share"</button>
- 在页面
onShareAppMessage(options)
方法调用前添加
wx.showShareMenu({
withShareTicket: true
})
withShareTicket参数是设置转发是否携带shareTicket。该参数只有在转发至群组时可以获取到,转发至单聊时无法获取到shareTicket,有啥用后面说。
- 无论点击哪种转发按键都会触发
onShareAppMessage: function (option)
,其中参数option.from
可以区别是页面定义button转发还是胶囊按键转发
onShareAppMessage: function (option) {
var shareTitle;
if (option.from === 'button') {
// 来自页面内转发按钮
shareTitle = '这是来自button的转发';
}else {
shareTitle = '这是来自胶囊按键的转发';
}
return {
title: shareTitle,
path: '/parts/xxx',
success: function(res) {
res.shareTickets
},
fail: function(res) {
console.log(res)
}
}
}
在后面的return中设置好title,path,转发成功或失败会回调相应block
- 开发者将shareTicket传入到
wx.getShareInfo(OBJECT)
方法中可以获取到加密数据,解密后群组信息(openGId),然后通过gid与开放组件open-data可以让小程序在微信群中增加不一样的玩法。shareTicket有两种获取方式。
(1)用户转发成功后的block参数(见上面代码)。
(2)用户收到转发卡片启动小程序的onLaunch: function(options)或onShow: function(options)
方法(见下面代码)。
onLaunch: function(opt) {
//1044转发场景值
if (opt.scene == 1044) {
wx.getShareInfo({
shareTicket: opt.shareTicket;
success: function(res){
var encryptedData = res.encryptedData;
var iv = res.iv;
}
})
}
其中success块返回值即为加密数据。解密算法见微信官方
三. 总结
需求并没有增加群组玩法,并没有过多关注openGid,后面有机会可以试一试,用户点击卡片启动小程序时,由于只是分享一个页面,导航层级会发生变化,若不需要获取shareTicket则可以做一些其他判断。