信誓旦旦上了积分功能之后发现与广告组件存在冲突。
背景
在上个版本把积分功能的整体逻辑跑通了,但似乎利用积分跳过广告这一功能违背了广告组件的初衷,所以当发布后,我的广告功能失效了。
截图1
之后紧急发布了两个版本,试图绕过去,但发现广告组件审核还是很犀利的,驳回原因也写的很具体。
截图2
当然我也有看到过漏网之鱼的,有些用户用我的积分功能成功过审的同时也没和广告组件冲突的。
但按照腾讯小程序广告组件的本质,是不希望开发者利用广告组件作为一种手段参与到你的需求当中。比如积分跳过广告,会员跳过广告之类的。
改变
既然积分跳过广告的权益无法变现,只能让积分赋予其他的用户权益了。
所以暂时加了截图中的两项权益,补签和昵称高亮。都是比较常规的权益,因为不太想对原来的代码大动「回看之前写的代码,有点不忍直视了」
截图3
补签到的流程还是比较简单的,在mini_member
集合中新增了补签次数的字段,积分兑换后自动累加,当进行补签时再进行扣除。
截图4
这里用到了日历的点击事件,在调用云函数补签完成之后,记得将页面中相关的补签次数,选中样式等进行重新渲染,另外没有补签和已经签到过的日期忽略对应的点击事件,核心代码如下:
onTapDay(e) {
let that = this
console.log('onTapDay', e.detail);
if (e.detail.choosed) {
if (Number(that.data.signedRightCount) <= 0) {
return;
}
let set = {
year: e.detail.year.toString(),
month: e.detail.month.toString(),
day: e.detail.day.toString()
}
if (JSON.stringify(toSet).indexOf(JSON.stringify(set)) !== -1) {
return;
}
wx.showModal({
title: '提示',
content: '您有' + that.data.signedRightCount + '次补签,是否进行补签?',
success(res) {
if (res.confirm) {
wx.showLoading({
title: '处理中...',
})
let info = {
openId: app.globalData.openid,
nickName: app.globalData.userInfo.nickName,
avatarUrl: app.globalData.userInfo.avatarUrl,
year: e.detail.year,
month: e.detail.month,
day: e.detail.day
}
api.addSignAgain(info).then((res) => {
console.info(res)
if (res.result) {
that.setData({
signedDays: Number(that.data.signedDays) + 1,
signedRightCount: Number(that.data.signedRightCount) - 1,
})
toSet.push(set)
that.calendar.setSelectedDays(toSet);
wx.showToast({
title: "补签成功",
icon: "none",
duration: 3000
});
}
else {
wx.showToast({
title: "程序有些小异常",
icon: "none",
duration: 3000
});
}
wx.hideLoading()
})
} else if (res.cancel) {
console.log('用户点击取消')
}
}
})
}
},