美文网首页
小程序分享|转发onShareAppMessage

小程序分享|转发onShareAppMessage

作者: 姬歌 | 来源:发表于2019-06-14 22:50 被阅读0次

小程序分享(转发)
要弹出分享窗口,只有2种?方式,1是点击右上角的菜单;2是在.wxml里使用表单组件<button>,如果是第一种方式,则需要在页面内.js文件中,在onShareAppMessage方法中写几句代码,随便几句,比如console.log(''),这样只是满足基本的转发;要自定义转发,需要返回一个对象,如下

onShareAppMessage: function (obj) {
    let data = {}
    data.title = app.globalData.shareTitle
    
    var myIdPart = ''
    if (app.globalData.id != '') {
      myIdPart = '?inviter=' + app.globalData.id
    }
    //绝对路径;指定分享小程序的哪个页面,并可以加参数('?inviter=egid1234')
   //如果不设置该参数path,则默认分享当前页面。
    data.path = app.globalData.sharePageUrl + myIdPart  
    //自定义分享窗口的广告图,如果不设置默认是所分享的页面的截图
    //图片时本地图片,貌似也可以是网络图片路径
    data.imageUrl = app.globalData.shareIconUrl  
    return data
  },

附:全局对象( app.js )app.globalData

globalData: {
    id: '',
/**********************分享*************************/ 
    shareTitle: '闪配快递,上门取件,次日达。',
    //打开程序如果不是别人分享的,(inviter)传此参数;保持为固定值(0),全局使用!
    //shareFixedSelfID表示无人邀请
    shareFixedSelfID: 0,
    //分享的页面,绝对路径
    sharePageUrl: '/pages/Logins/launchPage/launchPage',
    shareIconUrl: '/img/personalCenter/shareIcon.jpg',
/**********************分享*************************/
  }
/*
  报告邀请人(警告:绝对不要在app.js调用此方法;否则可能导致任何人邀请/分享都无效。)
  */
  requestReportInviter: function (myid, inviter) {....}

如何处理别人分享带的参数?

下面代码是关于 转发, 邀请注册,获得奖励的例子。
1、接口requestReportInviter用于报告后台,‘谁’邀请了‘我’。第一个参数是当前用户的id,第二个参数是分享链接带过来的分享者的id
2、为了获取当前用户id,必须等待app.js请求接口获取到app.globalData.id;如果请求没有结束,则等待app.serverLoginCompelete请求结束后回调,再调用requestReportInviter;
3、utils.saveInviter(options.inviter) 和 let inviter = utils.getInviter()是工具类,通过本地缓存保存、获取分享者id;这即使碰巧第一次打开分享网络出错没有报告分享者成功,下次打开也能报告。

onLoad: function (options) {
    //进入页面 -> 保存邀请者(如果有的话)-> 获取邀请者 -> 确保在登录成功之后,调用一次requestReportInviter向后台报告邀请者
    utils.saveInviter(options.inviter)
    let inviter = utils.getInviter()

    if (app.globalData.isLoginOK == undefined) {
      let that = this
      app.serverLoginCompelete = function () {
        let inviter2 = utils.getInviter()
        if (inviter2 != undefined) {
          app.requestReportInviter(app.globalData.id, inviter2)
        } else {
          app.requestReportInviter(app.globalData.id, app.globalData.shareFixedSelfID)
        }
      }
    } else {
      if (inviter != undefined) {
        app.requestReportInviter(app.globalData.id, inviter)
      } else {
        app.requestReportInviter(app.globalData.id, app.globalData.shareFixedSelfID)
      }
    }
  },

警告:每个分享页面必须调用requestReportInviter;小程序的根页面(默认打开页面)必须实现这个方法,保证1、如果是别人分享的,可以向后台报告分享人;2、如果是自己搜索打开的小程序,则分享人id=0;requestReportInviter接口可以多次调用,但后台需要判断,分享人id初始值为null,只有null状态可以插入值;如果是别人id=9999分享的,则插入9999;如果是自己搜索打开的小程序,则插入0;如果要优化,可以在本地缓存插入状态,如果已经插入分享人,则不需要再调用requestReportInviter接口。

自定义(优化)分享按钮:


自定义分享按钮

先自定义一个如上图样式的view(背景图片必须用base64;或设置颜色)
然后将button放入其中,button需要设置大小和view一样,背景色为透明:background-color: transparent;即使背景透明,button仍然有一个border线框,所以设置一个圆角border-radius: 7.28vmin;刚好切合背景图片,这样几乎就看不到button的外框了!

<view class='theButtonBG'>
    <button class='theButton' open-type='share' bindtap='shareBtnClicked'> 邀请好友得现金</button>
 </view>
.theButtonBG {
  width: 91vmin;
  height: 14.56vmin;

  background-size: 100% 100%;
  background-image: url("data:image/png;base64,iVBORw...==")
}

.theButton {
  width: 100%;
  height: 100%;

  font-size: 15px;
  color: #700014;

  display: flex;
  justify-content: center;
  align-items: center;
  
  border-radius: 7.28vmin;
  background-color: transparent;
}

小程序无法转发到朋友圈,所以必须保存小程序码(或二维码图片),再转发到朋友圈。如果要生成小程序码,请看官方文档。可由后台生成,也可在前端生成,都可加参数。如果要生成海报,请参见【小程序生成带小程序码的海报】

相关文章

网友评论

      本文标题:小程序分享|转发onShareAppMessage

      本文链接:https://www.haomeiwen.com/subject/yowmfctx.html