微信小程序中限制激励式视频广告位显示次数(实现思路)


Posted in Javascript onDecember 06, 2019

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

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

第一步:在小程序的 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。

总结

以上所述是小编给大家介绍的微信小程序中限制激励式视频广告位显示次数的实现思路,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Javascript 相关文章推荐
Javascript 获取链接(url)参数的方法
Feb 15 Javascript
javascript之Partial Application学习
Jan 10 Javascript
Js判断参数(String,Array,Object)是否为undefined或者值为空
Nov 04 Javascript
Document.location.href和.replace的区别示例介绍
Mar 04 Javascript
jQuery实现带分组数据的Table表头排序实例分析
Nov 24 Javascript
javascript先序遍历DOM树的方法
Feb 27 Javascript
Jquery实现的简单轮播效果【附实例】
Apr 19 Javascript
利用AJAX实现WordPress中的文章列表及评论的分页功能
May 17 Javascript
详解vue2.0的Element UI的表格table列时间戳格式化
Jun 13 Javascript
详解基于vue-cli配置移动端自适应
Jan 13 Javascript
angular.js和vue.js中实现函数去抖示例(debounce)
Jan 18 Javascript
vue路由组件按需加载的几种方法小结
Jul 12 Javascript
vue中监听路由参数的变化及方法
Dec 06 #Javascript
详解ECMAScript2019/ES10新属性
Dec 06 #Javascript
ES6的异步操作之promise用法和async函数的具体使用
Dec 06 #Javascript
原生JavaScript实现滑动拖动验证的示例代码
Dec 06 #Javascript
微信小程序 自定义弹窗实现过程(附代码)
Dec 05 #Javascript
Nuxt v-bind绑定img src不显示的解决
Dec 05 #Javascript
微信小程序swiper左右扩展各显示一半代码实例
Dec 05 #Javascript
You might like
PHP调用Linux的命令行执行文件压缩命令
2013/01/27 PHP
php截取字符串函数substr,iconv_substr,mb_substr示例以及优劣分析
2014/06/10 PHP
php实现使用正则将文本中的网址转换成链接标签
2014/12/03 PHP
PHP5.6读写excel表格文件操作示例
2019/02/26 PHP
基于JQuery的访问WebService的代码(可访问Java[Xfire])
2010/11/19 Javascript
基于jquery的表头固定的若干方法
2011/01/27 Javascript
JQuery中使用ajax传输超大数据的解决方法
2014/07/14 Javascript
Jquery 实现grid绑定模板
2015/01/28 Javascript
JQuery控制图片由中心点逐渐放大效果
2016/06/26 Javascript
Node.js的基本知识简单汇总
2016/09/19 Javascript
使用vue.js2.0 + ElementUI开发后台管理系统详细教程(一)
2017/01/21 Javascript
vue-hook-form使用详解
2017/04/07 Javascript
Node.js使用gm拼装sprite图片
2017/07/04 Javascript
vue中多路由表头吸顶实现的几种布局方式
2019/04/12 Javascript
js 执行上下文和作用域的相关总结
2021/02/08 Javascript
Python程序员鲜为人知但你应该知道的17个问题
2014/06/04 Python
Django2.1.3 中间件使用详解
2018/11/26 Python
python中实现控制小数点位数的方法
2019/01/24 Python
对python借助百度云API对评论进行观点抽取的方法详解
2019/02/21 Python
基于python的ini配置文件操作工具类
2019/04/24 Python
python实现异常信息堆栈输出到日志文件
2019/12/26 Python
澳洲国民品牌乡村路折扣店:Country Road & Trenery Outlet
2018/04/19 全球购物
ToysRus日本官网:玩具反斗城
2018/09/08 全球购物
PUMA澳大利亚官方网站:德国运动品牌
2018/10/19 全球购物
业务代表的岗位职责
2013/11/16 职场文书
管理心得体会
2013/12/28 职场文书
特色蛋糕店创业计划书
2014/01/28 职场文书
工作疏忽、懈怠的检讨书
2014/09/11 职场文书
党员剖析材料范文
2014/09/30 职场文书
初中生旷课检讨书范文
2014/10/06 职场文书
幼儿园中班个人总结
2015/02/28 职场文书
2015年药品销售工作总结范文
2015/05/25 职场文书
格列夫游记读书笔记
2015/07/01 职场文书
小学五年级班主任工作经验交流材料
2015/11/02 职场文书
《水浒传》读后感3篇(范文)
2019/09/19 职场文书
Python OpenCV实现图像模板匹配详解
2022/04/07 Python