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


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中void(0)的具体含义解释
Feb 27 Javascript
javascript 页面划词搜索JS
Sep 28 Javascript
网站页面自动跳转实现方法PHP、JSP(上)
Aug 01 Javascript
jquery 图片上传按比例预览插件集合
May 28 Javascript
JQuery 控制内容长度超出规定长度显示省略号
May 23 Javascript
浅谈Sizzle的“编译原理”
Apr 14 Javascript
利用NPM淘宝的node.js镜像加速nvm
Mar 27 Javascript
Javascript操作dom对象之select全面解析
Apr 24 Javascript
javascript 数据存储的常用函数总结
Jun 01 Javascript
Vue的土著指令和自定义指令实例详解
Feb 04 Javascript
关于微信小程序获取小程序码并接受buffer流保存为图片的方法
Jun 07 Javascript
vue 图片裁剪上传组件的实现
Nov 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查询域名状态whois的类
2006/11/25 PHP
php error_log 函数的使用
2009/04/13 PHP
PHP获取文件绝对路径的代码(上一级目录)
2011/05/29 PHP
PHP读书笔记整理_结构语句详解
2016/07/01 PHP
iOS+PHP注册登录系统 PHP部分(上)
2016/12/26 PHP
PHP使用Redis实现Session共享的实现示例
2019/05/12 PHP
静态的动态续篇之来点XML
2006/08/15 Javascript
一个可以兼容IE FF的加为首页与加入收藏实现代码
2009/11/02 Javascript
面向对象的Javascript之二(接口实现介绍)
2012/01/27 Javascript
js导航菜单(自写)简单大方
2013/03/28 Javascript
jquery的选择器的使用技巧之如何选择input框
2013/09/22 Javascript
JavaScript子类用Object.getPrototypeOf去调用父类方法解析
2013/12/05 Javascript
jQuery事件绑定用法详解(附bind和live的区别)
2016/01/19 Javascript
微信小程序删除处理详解
2017/08/16 Javascript
vue用Object.defineProperty手写一个简单的双向绑定的示例
2018/07/09 Javascript
vue基于v-charts封装双向条形图的实现代码
2019/12/09 Javascript
vue 实现tab切换保持数据状态
2020/07/21 Javascript
python的即时标记项目练习笔记
2014/09/18 Python
Python运行报错UnicodeDecodeError的解决方法
2016/06/07 Python
python3将视频流保存为本地视频文件
2018/06/20 Python
python3 对list中每个元素进行处理的方法
2018/06/29 Python
python实现远程控制电脑
2019/05/23 Python
解决Python3用PIL的ImageFont输出中文乱码的问题
2019/08/22 Python
wxPython实现分隔窗口
2019/11/19 Python
Python 解决相对路径问题:&quot;No such file or directory&quot;
2020/06/05 Python
[原创]赚疯了!转手立赚800+?大佬的python「抢茅台脚本」使用教程
2021/01/12 Python
英国领先的新鲜松露和最好的松露产品供应商:TruffleHunter
2019/08/26 全球购物
波兰汽车配件网上商店:iParts.pl
2020/09/08 全球购物
物理学专业自荐信
2014/06/11 职场文书
辞旧迎新演讲稿
2014/09/15 职场文书
保洁员岗位职责
2015/02/04 职场文书
护士个人年度总结范文
2015/02/13 职场文书
测量员岗位职责
2015/02/14 职场文书
2015年会计人员工作总结
2015/05/22 职场文书
死磕 java同步系列之synchronized解析
2021/06/28 Java/Android
nginx刷新页面出现404解决方案(亲测有效)
2022/03/18 Servers