如题:
允许用户有三次体验效果,然后弹出激励视频弹窗,之后当日不再弹出。
体验小程序:
/*** 判断当前项目当天是否点击超过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)})}},}
}