微信小程序> 微信小程序中限制激励式视频广告位显示次数

微信小程序中限制激励式视频广告位显示次数

浏览量:6253 时间: 来源:aiguangyuan

微信小程序自从支持激励式视频广告位以后,很多小程序为了变现都加入了此广告位,广告正常观看结束的次数越多就越赚钱,但是观看次数的比率过高也会面临封号的风险,那么如何才能规避这个风险呢?

实现思路:限制每个用户当天观看激励式视频广告位的次数,如果用户当天观看广告位超过了一定的次数就不再显示广告位,用户第二天打开小程序时清空第一天观看广告的次数,下面用实例代码来说明。

第一步:在小程序的 onLaunch 里获取本地存储的上一次观看激励视频广告保存的时间,并获取本地存储观看广告位的次数,如果上一次观看激励视频广告时间的晚上12点小于当前时间,则将观看广告位的次数清0;

onLaunch: function() {    // 获取激励视频广告位加载的次数    var count = wx.getStorageSync('showRewardedVideoAdCount');    if (!count) {        wx.setStorage({            key: 'showRewardedVideoAdCount',            data: 0,        })    };    // 上次观看激励视频广告保存的时间    var lastSaveTime = wx.getStorageSync('saveVideoAdCountTime');    if (lastSaveTime) {        // 计算最后一次保存时间晚上12点的时间戳        var endTime = new Date(new Date(lastSaveTime).setHours(23, 59, 59, 999));        // 当前时间戳        var currentDate = new Date();        var currentTime = currentDate.getTime();        // 清空激励广告位观看次数        if (currentTime  endTime) {            wx.setStorage({                key: 'showRewardedVideoAdCount',                data: 0,            })        }    } },

第二步:发起请求从服务端获取广告位ID以后生成广告位,这一步只做参考。

// 如果激励广告位视频存在if (rewardedAdId) {    that.setData({        rewardedAdId: rewardedAdId    }, function() {        // 创建一个激励视频广告位,rewardedVideoAd为全局变量,与Page()同级.        rewardedVideoAd = wx.createRewardedVideoAd({            adUnitId: rewardedAdId        });        // 监听加载        rewardedVideoAd.onLoad(() = {            console.log('激励广告加载成功');        });        // 监听失败        rewardedVideoAd.onError(err = {            console.log('激励广告加载失败' + err);        });    })}

注意:以上代码中广告位ID rewardedAdId 为发起请求获取,而rewardedVideoAd 为整个页面的全局全变,与Page()同级。

第三步:在用户触发广告位以后,获取用户当天已正常观看完毕广告位的次数A与限制广告位播放的最多次数B,如果A小于B则继续加载广告位,否则播放视频。在广告位正常播放完毕后,要更新本地存储的播放次数与观看时间。

// 点击播放bindPlay: function() {    var that = this;    var count = wx.getStorageSync('showRewardedVideoAdCount');    // 对应页面上的video标签    var videoContext = wx.createVideoContext('myVideo');    // 限制激励视频最大播放次数    if (count  App.globalData.maxShowRewardedAdCount) {        // 如果存在激励视频广告ID,并且当前页面已经播放过一次广告        if (that.data.rewardedAdId && that.data.showRewardedAd == 1) {            // 暂停视频            videoContext.stop();            // 加载广告位            rewardedVideoAd.load().then(function() {                rewardedVideoAd.show();            }).catch(function(err) {                console.log('激励广告位加载失败');            });            // 广告位关闭后            rewardedVideoAd.onClose(function(res) {                that.setData({                    showRewardedAd: 0                });                videoContext.play();                // 保存累加的次数                var newCount = parseInt(count) + 1;                wx.setStorage({                    key: 'showRewardedVideoAdCount',                    data: newCount,                });                var time = new Date()                time = time.getTime();                // 更新保存的时间                wx.setStorage({                    key: 'saveVideoAdCountTime',                    data: time                });            })        } else {            // 继续播放            videoContext.play();        }    } else {        // 继续播放        videoContext.play();    }},

上面的代码中,我们对是否有广告位ID做了判断,如第6行中的 that.data.rewardedAdId ,如果没有广告位ID,则直接播放视频,另外,如果用户播放完一个视频以后可能还会在该页面的推荐中观看其它视频,而此时再次弹出广告位的体验可能会不太好,所以我又加了入了一个判断,如上面代码中第6行的 that.data.showRewardedAd,页面初始化时该值为1,当播放完一次后将其归0。

 

版权声明

即速应用倡导尊重与保护知识产权。如发现本站文章存在版权问题,烦请提供版权疑问、身份证明、版权证明、联系方式等发邮件至197452366@qq.com ,我们将及时处理。本站文章仅作分享交流用途,作者观点不等同于即速应用观点。用户与作者的任何交易与本站无关,请知悉。

产品经理

手机 : 13312967497

擅长 : 小程序流量变现

扫码领取礼包

热门模板

  • 头条
  • 搜狐
  • 微博
  • 百家
  • 一点资讯
  • 知乎