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


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 相关文章推荐
一个tab标签切换效果代码
Mar 27 Javascript
网页前台通过js非法字符过滤代码(骂人的话等等)
May 26 Javascript
关于div自适应高度/左右高度自适应一致的js代码
Mar 22 Javascript
分享12个实用的jQuery代码片段
Mar 09 Javascript
Jquery中map函数的用法
Jun 03 Javascript
浅谈在vue中用webpack打包之后运行文件的问题以及相关配置方法
Feb 21 Javascript
Vue引入jquery实现平滑滚动到指定位置
May 09 jQuery
Vue监听滚动实现锚点定位(双向)示例
Nov 13 Javascript
微信小程序分享小程序码的生成(带参数)以及参数的获取
Mar 25 Javascript
js中调用微信的扫描二维码功能的实现代码
Apr 11 Javascript
解决vuex数据页面刷新后初始化操作
Jul 26 Javascript
基于Vue全局组件与局部组件的区别说明
Aug 11 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上传图片重命名的6种解决方法的详细介绍
2013/04/28 PHP
php绘图中显示不出图片的原因及解决
2014/03/05 PHP
PHP处理SQL脚本文件导入到MySQL的代码实例
2014/03/17 PHP
PHP GD库生成图像的几个函数总结
2014/11/19 PHP
jQuery获取json后使用zy_tmpl生成下拉菜单
2015/03/27 PHP
PHP实现的简单网络硬盘
2015/07/29 PHP
PHP 配置后台登录以及模板引入
2017/01/24 PHP
基于laravel where的高级使用方法
2019/10/10 PHP
JavaScript 联动的无限级封装类,数据采用非Ajax方式,随意添加联动
2010/06/29 Javascript
一个简单的js鼠标划过切换效果
2010/06/30 Javascript
JavaScript通过RegExp实现客户端验证处理程序
2013/05/07 Javascript
jquery绑定事件不生效的解决方法
2014/02/11 Javascript
js数组方法扩展实现数组统计函数
2014/04/09 Javascript
AngularJS中的过滤器使用详解
2015/06/16 Javascript
vue绑定的点击事件阻止冒泡的实例
2018/02/08 Javascript
手把手带你封装一个vue component第三方库
2019/02/14 Javascript
图解javascript作用域链
2019/05/27 Javascript
layer iframe 设置关闭按钮的方法
2019/09/12 Javascript
[52:32]完美世界DOTA2联赛PWL S2 Magma vs LBZS 第三场 11.18
2020/11/18 DOTA
Python网站验证码识别
2016/01/25 Python
Python输出汉字字库及将文字转换为图片的方法
2016/06/04 Python
Python编写Windows Service服务程序
2018/01/04 Python
python matplotlib画图库学习绘制常用的图
2019/03/19 Python
Python代码注释规范代码实例解析
2020/08/14 Python
基于HTML5 的人脸识别活体认证的实现方法
2016/06/22 HTML / CSS
欧洲、亚洲、非洲和拉丁美洲的度假套餐:Great Value Vacations
2019/03/30 全球购物
美津浓巴西官方网站:Mizuno巴西
2019/07/24 全球购物
英国泽西岛植物:Jersey Plants Direct
2019/08/07 全球购物
专业毕业生个性的自我评价
2013/10/03 职场文书
小学教师评语大全
2014/04/23 职场文书
英语演讲稿3分钟
2014/04/29 职场文书
酒店管理求职信
2014/06/09 职场文书
社会治安综合治理责任书
2015/01/29 职场文书
2015年度电厂个人工作总结
2015/05/13 职场文书
nginx里的rewrite跳转的实现
2021/03/31 Servers
原生JS封装vue Tab切换效果
2021/04/28 Vue.js