微信小程序如何知道分享是否成功的解决方案

来源:网络 文章列表 2019-03-13 8
本文提供了微信分享后的统计数据的解决方案。

最近公司开发微信小程序有一个需求,需要统计某个业务员给用户分享的次数,之前记得微信对于分享这块有个回调函数的,但是貌似现在微信官方为了避免传销式拉人头的分享,已经把分享成功后的回调功能取消。简而言之,就是我们现在是不知道用户的分享动作是取消,还是转发出去。

对于这种情况,我们目前一般的有2种策略可以实施。

1、如果统计要求不是很严格,那么不管分享成功还是取消,只要点击了分享,就视为分享成功。

2、第二种则可以精确统计。只有分享到群里或者朋友,有用户打开后,通过ShareTicket拿用户信息,则判断分享成功,否则都是分享失败。

第一种做法比较简单

Page({
  onShareAppMessage: function () {
    const that = this
    // 此处发送统计请求
    wx.request({
      url: globalData.apiDomainZt + 'xcx/news/flash_share',
      data: {
        uid: globalData.uid
      },
      header: globalData.postHeader,
      success (res) {
        console.log('', res)
      }
    })
    return {
      title: '我的顾问',
      imageUrl: '',
      path: '/pages/index/index,
      success () {
        console.log('新版微信此处已经不会再执行了', res)
      }
    };
  }
})

 

第二种方案:

// 页面入口页 App.js
App({
  onShow: function (ops) {
    let that = this;
    // 分享统计放到此处的目的是因为热启动会不走onload,导致统计不准确。
    if (ops.scene == 1044) {
      // 分享数据统计
      wx.getShareInfo({
          shareTicket: ops.shareTicket,
          success: function(res){
            var encryptedData = res.encryptedData;
            var iv = res.iv;
            if (ops.shareTicket != false) {
              wx.getShareInfo({
                  shareTicket: ops.shareTicket,
                  success: function (res) {
                      var encryptedData = res.encryptedData;
                      var iv = res.iv;
                      // 发送请求,后台解析出分享信息  
                      wx.request({
                        url: that.globalData.apiDomainZt + 'xcx/login/xcx',
                        data: {
                           encry: encryptedData,
                           iv: iv,
                           key: that.globalData.sessionKey,
                           tid: ops.query.tid // 推广者的ID
                        },
                        method: 'POST',
                        header: that.globalData.postHeader,
                        success: function(res) {
                          // 成功后的逻辑处理
                          
                        },
                        fail: function (res) {
                          // console.log('用户打开', res)
                        }
                      })
                  }
              })
            }
          }
      })
    }
  }
})


// 分享页的代码
Page({
  onLaunch: function () {
    // 设置分享时带上分享信息
    wx.showShareMenu({
      withShareTicket: true
    })
  },
  onShareAppMessage(res) {
      return {
        title: '转发时显示的标题',
        path: '/pages/index/index?tid=推广者ID', // 转发的页面路径
        success: res = >{
          
        },
        fail: () = >{
          console.log('--- 转发失败 ---', path);
        }
      }
    }

})

至于选择那种方法需要和产品沟通了。这是我想的2种方案,如果大家有其他的好的方案,欢迎留言.....

版权声明

本站部分原创文章,部分文章整理自网络。如有转载的文章侵犯了您的版权,请联系站长删除处理。如果您有优质文章,欢迎发稿给我们!联系站长:
愿本站的内容能为您的学习、工作带来绵薄之力。

评论

  • 随机获取
点击刷新
精彩评论
关闭