溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

微信小程序中限制激勵(lì)式視頻廣告位顯示次數(shù)的實(shí)現(xiàn)方法

發(fā)布時(shí)間:2021-06-03 13:57:57 來源:億速云 閱讀:1126 作者:小新 欄目:web開發(fā)

這篇文章將為大家詳細(xì)講解有關(guān)微信小程序中限制激勵(lì)式視頻廣告位顯示次數(shù)的實(shí)現(xiàn)方法,小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。

微信小程序自從支持激勵(lì)式視頻廣告位以后,很多小程序?yàn)榱俗儸F(xiàn)都加入了此廣告位,廣告正常觀看結(jié)束的次數(shù)越多就越賺錢,但是觀看次數(shù)的比率過高也會(huì)面臨封號的風(fēng)險(xiǎn),那么如何才能規(guī)避這個(gè)風(fēng)險(xiǎn)呢?

實(shí)現(xiàn)思路:限制每個(gè)用戶當(dāng)天觀看激勵(lì)式視頻廣告位的次數(shù),如果用戶當(dāng)天觀看廣告位超過了一定的次數(shù)就不再顯示廣告位,用戶第二天打開小程序時(shí)清空第一天觀看廣告的次數(shù),下面用實(shí)例代碼來說明。

第一步:在小程序的 onLaunch 里獲取本地存儲(chǔ)的上一次觀看激勵(lì)視頻廣告保存的時(shí)間,并獲取本地存儲(chǔ)觀看廣告位的次數(shù),如果上一次觀看激勵(lì)視頻廣告時(shí)間的晚上12點(diǎn)小于當(dāng)前時(shí)間,則將觀看廣告位的次數(shù)清0;

onLaunch: function() {
 // 獲取激勵(lì)視頻廣告位加載的次數(shù)
 var count = wx.getStorageSync('showRewardedVideoAdCount');
 if (!count) {
 wx.setStorage({
 key: 'showRewardedVideoAdCount',
 data: 0,
 })
 };
 // 上次觀看激勵(lì)視頻廣告保存的時(shí)間
 var lastSaveTime = wx.getStorageSync('saveVideoAdCountTime');
 if (lastSaveTime) {
 // 計(jì)算最后一次保存時(shí)間晚上12點(diǎn)的時(shí)間戳
 var endTime = new Date(new Date(lastSaveTime).setHours(23, 59, 59, 999));
 // 當(dāng)前時(shí)間戳
 var currentDate = new Date();
 var currentTime = currentDate.getTime();
 // 清空激勵(lì)廣告位觀看次數(shù)
 if (currentTime > endTime) {
 wx.setStorage({
 key: 'showRewardedVideoAdCount',
 data: 0,
 })
 }
 } 
},

第二步:發(fā)起請求從服務(wù)端獲取廣告位ID以后生成廣告位,這一步只做參考。

// 如果激勵(lì)廣告位視頻存在
if (rewardedAdId) {
 that.setData({
 rewardedAdId: rewardedAdId
 }, function() {
 // 創(chuàng)建一個(gè)激勵(lì)視頻廣告位,rewardedVideoAd為全局變量,與Page()同級.
 rewardedVideoAd = wx.createRewardedVideoAd({
 adUnitId: rewardedAdId
 });
 // 監(jiān)聽加載
 rewardedVideoAd.onLoad(() => {
 console.log('激勵(lì)廣告加載成功');
 });
 // 監(jiān)聽失敗
 rewardedVideoAd.onError(err => {
 console.log('激勵(lì)廣告加載失敗' + err);
 });
 })
}

注意:以上代碼中廣告位ID rewardedAdId 為發(fā)起請求獲取,而rewardedVideoAd 為整個(gè)頁面的全局全變,與Page()同級。

第三步:在用戶觸發(fā)廣告位以后,獲取用戶當(dāng)天已正常觀看完畢廣告位的次數(shù)A與限制廣告位播放的最多次數(shù)B,如果A小于B則繼續(xù)加載廣告位,否則播放視頻。在廣告位正常播放完畢后,要更新本地存儲(chǔ)的播放次數(shù)與觀看時(shí)間。

// 點(diǎn)擊播放
bindPlay: function() {
 var that = this;
 var count = wx.getStorageSync('showRewardedVideoAdCount');
 // 對應(yīng)頁面上的video標(biāo)簽
 var videoContext = wx.createVideoContext('myVideo');
 // 限制激勵(lì)視頻最大播放次數(shù)
 if (count < App.globalData.maxShowRewardedAdCount) {
 // 如果存在激勵(lì)視頻廣告ID,并且當(dāng)前頁面已經(jīng)播放過一次廣告
 if (that.data.rewardedAdId && that.data.showRewardedAd == 1) {
 // 暫停視頻
 videoContext.stop();
 // 加載廣告位
 rewardedVideoAd.load().then(function() {
 rewardedVideoAd.show();
 }).catch(function(err) {
 console.log('激勵(lì)廣告位加載失敗');
 });
 // 廣告位關(guān)閉后
 rewardedVideoAd.onClose(function(res) {
 that.setData({
  showRewardedAd: 0
 });
 videoContext.play();
 // 保存累加的次數(shù)
 var newCount = parseInt(count) + 1;
 wx.setStorage({
  key: 'showRewardedVideoAdCount',
  data: newCount,
 });
 var time = new Date()
 time = time.getTime();
 // 更新保存的時(shí)間
 wx.setStorage({
  key: 'saveVideoAdCountTime',
  data: time
 });
 })
 } else {
 // 繼續(xù)播放
 videoContext.play();
 }
 } else {
 // 繼續(xù)播放
 videoContext.play();
 }
},

上面的代碼中,我們對是否有廣告位ID做了判斷,如第6行中的 that.data.rewardedAdId ,如果沒有廣告位ID,則直接播放視頻,另外,如果用戶播放完一個(gè)視頻以后可能還會(huì)在該頁面的推薦中觀看其它視頻,而此時(shí)再次彈出廣告位的體驗(yàn)可能會(huì)不太好,所以我又加了入了一個(gè)判斷,如上面代碼中第6行的 that.data.showRewardedAd,頁面初始化時(shí)該值為1,當(dāng)播放完一次后將其歸0。

關(guān)于“微信小程序中限制激勵(lì)式視頻廣告位顯示次數(shù)的實(shí)現(xiàn)方法”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,使各位可以學(xué)到更多知識,如果覺得文章不錯(cuò),請把它分享出去讓更多的人看到。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI