【小程序04】分享转发

2,303 阅读2分钟

隐藏页面导航栏转发按钮

Page 中定义 onShareAppMessage 函数,设置该页面的转发信息,若欲将当前页面禁止转发,可将此函数删除。

设置页面转发

onShareAppMessage(Object object)

监听用户点击页面内转发按钮(button 组件 open-type="share")或右上角菜单“转发”按钮的行为,并自定义转发内容。

注意:只有定义了此事件处理函数,右上角菜单才会显示“转发”按钮

此事件处理函数需要 return 一个 Object,用于自定义转发内容,返回内容如下:

Page({
  onShareAppMessage: function (res) {
    return {
      title: '自定义转发标题',
      path: '/page/user?id=123',
      success: function(res) {
        // 转发成功
      },
      fail: function(res) {
        // 转发失败
      }
    }
  }
})
1.辨别转发到个人还是群
  1. 只有转发到群聊中打开才可以获取到 shareTickets 返回值,单聊没有 shareTickets
  2. shareTicket 仅在当前小程序生命周期内有效
wx.showShareMenu({
  withShareTicket: true
})
2.多个转发按钮

当一个页面中有多个转发的按钮的话,每个按钮的转发页面又有所不同的时候。就要在onShareAppMessage函数中进行单独的设置。 onShareAppMessage函数中有options 参数,options 参数里面有这触发该函数的来源 options 中的from参数表示转发事件来源。

button:页面内转发按钮;menu:右上角转发菜单。 如果是button的话还可以通过button中的target参数来判断是哪一个button触发的,可以获取到button的id或者class。 这样就可以对不同的按钮来设置不同的转发页面

Page({
  onShareAppMessage: function (res) {
    //button触发
    if (res.from === 'button') { 
      let target_id = res.target.id;      //id为btn1的button触发
      if (target_id === "btn1") {        
      return {
          title: '转发一',
          path: '/page/index',
          success: function(res) {
            // 转发成功
          },
          fail: function(res) {
            // 转发失败
          }
        }      //id为btn2的button触发
      }else if((target_id === "btn2")){        return {
          title: '转发二',
          path: '/page/user',
          success: function(res) {
            // 转发成功
          },
          fail: function(res) {
            // 转发失败
          }
        }
      }    //menu触发
    }else if (res.from === 'menu') {        return {
          title: 'menu转发',
          path: '/page/user',
          success: function(res) {
            // 转发成功
          },
          fail: function(res) {
            // 转发失败
          }
        }
    }
  }
})

注:menu的转发要单独进行设置的

3.转发带参数

在转发的时候,如果需要在别的用户点击转发进入小程序的时候带有参数的话,可以通过在onShareAppMessage函数中带入所需的值,进行转发。

Page({
  onShareAppMessage: function (res) {
    let sendinfo = {
      num: 1,
      nickName: "jack",
    }    
    let str = JSON.stringify(sendinfo);    
    return {
      title: nickName + '向你分享了小程序',
      path: '/page/user?sendinfo=' + sendinfo,
      success: function(res) {
        // 转发成功
      },
      fail: function(res) {
        // 转发失败
      }
    }
  }
})

现在点击这个转发卡片就后,在转发路径地址的页面中就可以获取到带入的值了。

Page({
  data:{
  }
  onLoad: function (options) {
    let sendinfo = options.sendinfo ;
  }
})