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

对于这种情况,我们目前一般的有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);
}
}
}
})

 

发表评论

您的电子邮箱地址不会被公开。