【小程序开发记录】转发功能
日期:2018-11-03 13:55 浏览量:756

好记星不如烂笔头,写一写记录下。

一. 用到的API

转发功能API参考微信官方,列下常用的
onShareAppMessage(options)


在返回值中设置转发的title与页面path,会回调转发成功与失败,js中设置了这个胶囊按键中才会出现“转发”

wx.hideShareMenu(OBJECT)


隐藏胶囊按键里面的“转发”按钮
wx.showShareMenu(OBJECT)
1.显示胶囊按键里的“转发”按钮 2.设置是否使用带shareTicket 的转发(转发到微信群)
wx.getShareInfo(OBJECT)
拿shareTicket 获取微信群的信息

二. 实现步骤
  1. 转发分为页面内button(只能是button)或右上角胶囊按键转发。后者只要添加了前面提到的第一个方法就可以了。而页面内转发要在wxml里这么加(不需要bindtap,点击button会触发onShareAppMessage(options)

  2. 方法

<button class="btnShare" open-type="share"

  1. 在页面onShareAppMessage(options)

  2. 方法

  3. 调用前
  4. 添加

wx.showShareMenu({  withShareTicket: true })

withShareTicket参数是设置转发是否携带shareTicket。该参数只有在转发至群组时可以获取到,转发至单聊时无法获取到shareTicket,有啥用后面说。

  1. 无论点击哪种转发按键都会触发onShareAppMessage: function (option)

  2. ,其中参数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

  1. 开发者将shareTicket传入到wx.getShareInfo(OBJECT)

  2. 方法中可以获取到加密数据,解密后群组信息(openGId),然后通过gid与开放组件open-data可以让小程序在微信群中增加不一样的玩法。shareTicket有两种获取方式。


  3. (1)用户转发成功后的block参数(见上面代码)。


  4. (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则可以做一些其他判断。