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


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 相关文章推荐
slice函数的用法 之不错的应用
Dec 29 Javascript
dess中一个简单的多路委托的实现
Jul 20 Javascript
javascript设计模式之解释器模式详解
Jun 05 Javascript
js判断滚动条是否已到页面最底部或顶部实例
Nov 20 Javascript
基于jQuery滑动杆实现购买日期选择效果
Sep 15 Javascript
基于jquery实现的鼠标悬停提示案例
Dec 11 Javascript
jQuery实现遍历复选框的方法示例
Mar 06 Javascript
微信小程序“摇一摇”的实例代码
Jul 20 Javascript
如何使用puppet替换文件中的string
Dec 06 Javascript
微信小程序常见页面跳转操作简单示例
May 01 Javascript
关于Vue中axios的封装实例详解
Oct 20 Javascript
微信小程序实现拍照和相册选取图片
May 09 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 简单数组排序实现代码
2009/08/05 PHP
php中DOMElement操作xml文档实例演示
2013/03/26 PHP
PHP设计模式之迭代器模式的深入解析
2013/06/13 PHP
PHP函数import_request_variables()用法分析
2016/04/02 PHP
golang与php实现计算两个经纬度之间距离的方法
2016/07/22 PHP
基于php判断客户端类型
2016/10/14 PHP
jQuery 通过事件委派一次绑定多种事件,以减少事件冗余
2010/06/30 Javascript
javascript与cookie 的问题详解
2013/11/11 Javascript
Angular Js文件上传之form-data
2015/08/28 Javascript
在easyUI开发中,出现jquery.easyui.min.js函数库问题的解决办法
2015/09/11 Javascript
Jquery组件easyUi实现选项卡切换示例
2016/08/23 Javascript
jquery.multiselect多选下拉框实现代码
2016/11/11 Javascript
JavaScript中动态向表格添加数据
2017/01/24 Javascript
详解如何用VUE写一个多用模态框组件模版
2018/09/27 Javascript
利用Webpack实现小程序多项目管理的方法
2019/02/25 Javascript
javascript原型链学习记录之继承实现方式分析
2019/05/01 Javascript
阿望教你用vue写扫雷小游戏
2020/01/20 Javascript
[03:52]DOTA2英雄基础教程 酒仙
2013/12/23 DOTA
[02:50]2014DOTA2 TI预选赛预选赛 大神专访第一弹!
2014/05/21 DOTA
Python查找相似单词的方法
2015/03/05 Python
Swift中的协议(protocol)学习教程
2016/07/08 Python
Python合并多个Excel数据的方法
2018/07/16 Python
Python实现iOS自动化打包详解步骤
2018/10/03 Python
使用 Supervisor 监控 Python3 进程方式
2019/12/05 Python
pyCharm 设置调试输出窗口中文显示方式(字符码转换)
2020/06/09 Python
HTML5自定义属性的问题分析
2019/08/16 HTML / CSS
MyFrenchPharma中文网:最大的法国药妆平台
2016/10/07 全球购物
英国领先的品牌珠宝和配件供应商:Acotis Jewellery
2018/03/07 全球购物
波兰在线运动商店:YesSport
2020/07/23 全球购物
如何估计一张表的大小(假设该表中有1万条数据)
2016/03/27 面试题
创业计划书的写作技巧及要点
2014/01/31 职场文书
企业员工培训感言
2014/02/26 职场文书
校外活动方案
2014/08/28 职场文书
2014年个人师德工作总结
2014/12/04 职场文书
Python函数中的不定长参数相关知识总结
2021/06/24 Python
vue3 自定义图片放大器效果的示例代码
2022/07/23 Vue.js