如题:
允许用户有三次体验效果,然后弹出激励视频弹窗,之后当日不再弹出。
体验小程序:
/**
* 判断当前项目当天是否点击超过3次,触发广告效果。
* 若,当天低于三次,则新增,若高于三次触发广告。
*/
export const checkAd = () => {
const today = new Date().toLocaleDateString();
let day = uni.getStorageSync('day');
// 获取本地存储的点击次数
let clickCount = uni.getStorageSync('clickCount');
// 如果第一次进入,没有存储任何数据,则对存储数据进行初始化
if (!day || !clickCount) {
uni.setStorageSync('day', today);
uni.setStorageSync('clickCount', JSON.stringify(1))
return false;
}
// 如果时间相同,则对今天的日期点击次数进行判断,如果
if (today === day) {
let parseCount = JSON.parse(clickCount);
if (parseCount) {
if (parseCount < 3) {
uni.setStorageSync('clickCount', JSON.stringify(++parseCount))
return false;
}
if (parseCount === 3) {
return true;
}
if (parseCount > 3) {
return false;
}
}
} else {
// today !== day,则证明存在之前天的数据,则应重新计数。
uni.setStorageSync('day', today);
uni.setStorageSync('clickCount', JSON.stringify(1))
return false;
}
}
/**
* 生成展示图片
*/
showShare(path) {
if(checkAd()) {
uni.showModal({
title: '提示',
content: '今日免费次数已满,观看一次广告解锁本日无限次数',
confirmText: '确认',
cancelText: '取消',
success: (res) => {
//点击“确认”时打开设置页面
if (res.confirm) {
this.showRewardVideoAd()
}
}
})
return
}
}
// adMixin.js
// 在页面中定义激励视频广告的mixin,混入逻辑,可以多页面复用
let videoAd = null
export default {
onLoad() {
// 在页面onLoad回调事件中创建激励视频广告实例
if (wx.createRewardedVideoAd) {
videoAd = wx.createRewardedVideoAd({
adUnitId: 'adunit-1be6e0fd1a51ec33'
})
videoAd.onLoad(() => {
console.error('广告加载成功')
})
videoAd.onError((err) => {
console.error('激励视频光告加载失败', err)
})
videoAd.onClose((res) => {
// 用户点击了【关闭广告】按钮
if (res && res.isEnded) {
// 正常播放结束,可以下发游戏奖励
let parseCount = JSON.parse(uni.getStorageSync('clickCount'));
uni.setStorageSync('clickCount', JSON.stringify(++parseCount));
uni.showToast({
title: '恭喜您成功解锁!',
icon: 'success'
})
} else {
// 播放中途退出,不下发游戏奖励
}
})
}
},
methods: {
showRewardVideoAd() {
if (videoAd) {
videoAd.show().then((res) => {
console.log('激励视频广告显示')
}).catch((err) => {
console.error(err)
})
}
},
}
}