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


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 相关文章推荐
js动态生成指定行数的表格
Jul 11 Javascript
JavaScript立即执行函数的三种不同写法
Sep 05 Javascript
jQuery实现炫酷的鼠标轨迹特效
Feb 01 Javascript
jQuery拖拽排序插件制作拖拽排序效果(附源码下载)
Feb 23 Javascript
JQuery点击事件回到页面顶部效果的实现代码
May 24 Javascript
react 创建单例组件的方法
Apr 26 Javascript
JS实现520 表白简单代码
May 21 Javascript
快速解决angularJS中用post方法时后台拿不到值的问题
Aug 14 Javascript
详解vue使用$http服务端收不到参数
Apr 19 Javascript
vue改变循环遍历后的数据实例
Nov 07 Javascript
小程序外卖订单界面的示例代码
Dec 30 Javascript
Element InputNumber 计数器的实现示例
Aug 03 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数字字符串左侧补0、字符串填充和自动补齐的几种方法
2014/05/10 PHP
php把大写命名转换成下划线分割命名
2015/04/27 PHP
PHP获取数组中指定的一列实例
2017/12/27 PHP
大家未必知道的Js技巧收藏
2008/04/07 Javascript
jquery实现div阴影效果示例代码
2013/09/16 Javascript
使用apply方法实现javascript中的对象继承
2013/12/16 Javascript
js实现字符串的16进制编码不加密
2014/04/25 Javascript
js中函数调用的两种常用方法使用介绍
2014/07/17 Javascript
JQuery页面地址处理插件jqURL详解
2015/05/03 Javascript
详解JavaScript ES6中的模板字符串
2015/07/28 Javascript
javascript实现C语言经典程序题
2015/11/29 Javascript
js获取当前时间(昨天、今天、明天)
2016/11/23 Javascript
Javascript中字符串replace方法的第二个参数探究
2016/12/05 Javascript
Angular.js中ng-include用法及多标签页面的实现方式详解
2017/05/07 Javascript
Bootstrap开发中Tab标签页切换图表显示问题的解决方法
2018/07/13 Javascript
关于Layui Table隐藏列问题
2019/09/16 Javascript
[04:45]DOTA2上海特级锦标赛主赛事第四日RECAP
2016/03/06 DOTA
Django管理员账号和密码忘记的完美解决方法
2018/12/06 Python
Python实现合并excel表格的方法分析
2019/04/13 Python
TensorFlow实现简单的CNN的方法
2019/07/18 Python
浅谈Python type的使用
2019/11/19 Python
python FTP批量下载/删除/上传实例
2019/12/22 Python
如何将你的应用迁移到Python3的三个步骤
2019/12/22 Python
python如何通过twisted搭建socket服务
2020/02/03 Python
python plt可视化——打印特殊符号和制作图例代码
2020/04/17 Python
美国隐形眼镜网:Major Lens
2018/02/09 全球购物
如何找出EMP表里面SALARY第N高的employee
2013/12/05 面试题
小学母亲节活动方案
2014/03/14 职场文书
技校毕业生自荐信
2014/06/03 职场文书
汽车服务工程专业自荐信
2014/09/02 职场文书
2014年医务科工作总结
2014/12/18 职场文书
受欢迎的自荐信,就这么写!
2019/04/19 职场文书
CSS 文字装饰 text-decoration & text-emphasis 详解
2021/04/06 HTML / CSS
Python多线程 Queue 模块常见用法
2021/07/04 Python
Z-Order加速Hudi大规模数据集方案分析
2022/03/31 Servers
win sever 2022如何占用操作主机角色
2022/06/25 Servers