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


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 相关文章推荐
ASP.NET jQuery 实例9  通过控件hyperlink实现返回顶部效果
Feb 03 Javascript
javascript设计模式之对象工厂函数与构造函数详解
Jul 30 Javascript
js省市联动效果完整实例代码
Dec 09 Javascript
jquery实现倒计时功能
Dec 28 Javascript
jQuery实现导航滚动到指定内容效果完整实例【附demo源码下载】
Sep 20 Javascript
HTML Table 空白单元格补全的简单实现
Oct 13 Javascript
AngularJS中控制器函数的定义与使用方法示例
Oct 10 Javascript
vue父组件向子组件传递多个数据的实例
Mar 01 Javascript
详解elementui之el-image-viewer(图片查看器)
Aug 30 Javascript
node后端服务保活的实现
Nov 10 Javascript
vue element 中的table动态渲染实现(动态表头)
Nov 21 Javascript
JS实现的定时器展示简单秒表、页面弹框及跳转操作完整示例
Jan 26 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 导出数据到淘宝助手CSV的方法分享
2010/02/27 PHP
关于php操作mysql执行数据库查询的一些常用操作汇总
2013/06/24 PHP
windows中为php安装mongodb与memcache
2015/01/06 PHP
PHP使用Pear发送邮件(Windows环境)
2016/01/05 PHP
smarty自定义函数用法示例
2016/05/20 PHP
PHP实现统计在线人数功能示例
2016/10/15 PHP
PHP编程获取音频文件时长的方法【基于getid3类】
2017/04/20 PHP
javascript innerText和innerHtml应用
2010/01/28 Javascript
FF火狐下获取一个元素同类型的相邻元素实现代码
2012/12/15 Javascript
jQuery插件实现控制网页元素动态居中显示
2015/03/24 Javascript
JavaScript实现图片滑动切换的代码示例分享
2016/03/06 Javascript
Javascript对象字面量的理解
2016/06/22 Javascript
javascript动画之模拟拖拽效果篇
2016/09/26 Javascript
详解Angular操作cookies方法
2018/06/01 Javascript
webpack4之SplitChunksPlugin使用指南
2018/06/12 Javascript
详解解决使用axios发送json后台接收不到的问题
2018/06/27 Javascript
小程序登录态管理的方法示例
2018/11/13 Javascript
对layui初始化列表的CheckBox属性详解
2019/09/13 Javascript
Python编程实现删除VC临时文件及Debug目录的方法
2017/03/22 Python
python简单线程和协程学习心得(分享)
2017/06/14 Python
在Python 中实现图片加框和加字的方法
2019/01/26 Python
实例讲解Python中整数的最大值输出
2019/03/17 Python
python程序控制NAO机器人行走
2019/04/29 Python
python远程邮件控制电脑升级版
2019/05/23 Python
Django框架之DRF 基于mixins来封装的视图详解
2019/07/23 Python
Python Selenium XPath根据文本内容查找元素的方法
2020/12/07 Python
HTML5 canvas基本绘图之文字渲染
2016/06/27 HTML / CSS
Ajax实现页面无刷新留言效果
2021/03/24 Javascript
就业自我评价
2014/02/04 职场文书
机关作风建设剖析材料
2014/10/11 职场文书
司法局2014法制宣传日活动总结
2014/11/01 职场文书
整改报告怎么写
2014/11/06 职场文书
MySQL5.7并行复制原理及实现
2021/06/03 MySQL
浅谈redis的过期时间设置和过期删除机制
2022/03/18 MySQL
分享五个Node.js开发的优秀实践 
2022/04/07 NodeJs
Java版 简易五子棋小游戏
2022/05/04 Java/Android