好记星不如烂笔头,写一写记录下。
一. 用到的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) 方法
- 在页面onShareAppMessage(options) 方法调用前添加
withShareTicket参数是设置转发是否携带shareTicket。该参数只有在转发至群组时可以获取到,转发至单聊时无法获取到shareTicket,有啥用后面说。
- 无论点击哪种转发按键都会触发onShareAppMessage: function (option) ,其中参数option.from
在后面的return中设置好title,path,转发成功或失败会回调相应block
- 开发者将shareTicket传入到wx.getShareInfo(OBJECT) 方法中可以获取到加密数据,解密后群组信息(openGId),然后通过gid与开放组件open-data可以让小程序在微信群中增加不一样的玩法。shareTicket有两种获取方式。
(1)用户转发成功后的block参数(见上面代码)。
(2)用户收到转发卡片启动小程序的onLaunch: function(options)或onShow: function(options)
其中success块返回值即为加密数据。解密算法见微信官方
三. 总结
需求并没有增加群组玩法,并没有过多关注openGid,后面有机会可以试一试,用户点击卡片启动小程序时,由于只是分享一个页面,导航层级会发生变化,若不需要获取shareTicket则可以做一些其他判断。