微信小程序中限制激勵式視頻廣告位顯示次數(shù)(實現(xiàn)思路)
微信小程序自從支持激勵式視頻廣告位以后,很多小程序為了變現(xiàn)都加入了此廣告位,廣告正常觀看結束的次數(shù)越多就越賺錢,但是觀看次數(shù)的比率過高也會面臨封號的風險,那么如何才能規(guī)避這個風險呢?
實現(xiàn)思路:限制每個用戶當天觀看激勵式視頻廣告位的次數(shù),如果用戶當天觀看廣告位超過了一定的次數(shù)就不再顯示廣告位,用戶第二天打開小程序時清空第一天觀看廣告的次數(shù),下面用實例代碼來說明。
第一步:在小程序的 onLaunch 里獲取本地存儲的上一次觀看激勵視頻廣告保存的時間,并獲取本地存儲觀看廣告位的次數(shù),如果上一次觀看激勵視頻廣告時間的晚上12點小于當前時間,則將觀看廣告位的次數(shù)清0;
onLaunch: function() { // 獲取激勵視頻廣告位加載的次數(shù) 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(); // 清空激勵廣告位觀看次數(shù) if (currentTime > endTime) { wx.setStorage({ key: 'showRewardedVideoAdCount', data: 0, }) } } },
第二步:發(fā)起請求從服務端獲取廣告位ID以后生成廣告位,這一步只做參考。
// 如果激勵廣告位視頻存在 if (rewardedAdId) { that.setData({ rewardedAdId: rewardedAdId }, function() { // 創(chuàng)建一個激勵視頻廣告位,rewardedVideoAd為全局變量,與Page()同級. rewardedVideoAd = wx.createRewardedVideoAd({ adUnitId: rewardedAdId }); // 監(jiān)聽加載 rewardedVideoAd.onLoad(() => { console.log('激勵廣告加載成功'); }); // 監(jiān)聽失敗 rewardedVideoAd.onError(err => { console.log('激勵廣告加載失敗' + err); }); }) }
注意:以上代碼中廣告位ID rewardedAdId 為發(fā)起請求獲取,而rewardedVideoAd 為整個頁面的全局全變,與Page()同級。
第三步:在用戶觸發(fā)廣告位以后,獲取用戶當天已正常觀看完畢廣告位的次數(shù)A與限制廣告位播放的最多次數(shù)B,如果A小于B則繼續(xù)加載廣告位,否則播放視頻。在廣告位正常播放完畢后,要更新本地存儲的播放次數(shù)與觀看時間。
// 點擊播放 bindPlay: function() { var that = this; var count = wx.getStorageSync('showRewardedVideoAdCount'); // 對應頁面上的video標簽 var videoContext = wx.createVideoContext('myVideo'); // 限制激勵視頻最大播放次數(shù) if (count < App.globalData.maxShowRewardedAdCount) { // 如果存在激勵視頻廣告ID,并且當前頁面已經(jīng)播放過一次廣告 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(); // 保存累加的次數(shù) 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 { // 繼續(xù)播放 videoContext.play(); } } else { // 繼續(xù)播放 videoContext.play(); } },
上面的代碼中,我們對是否有廣告位ID做了判斷,如第6行中的 that.data.rewardedAdId ,如果沒有廣告位ID,則直接播放視頻,另外,如果用戶播放完一個視頻以后可能還會在該頁面的推薦中觀看其它視頻,而此時再次彈出廣告位的體驗可能會不太好,所以我又加了入了一個判斷,如上面代碼中第6行的 that.data.showRewardedAd,頁面初始化時該值為1,當播放完一次后將其歸0。
總結
以上所述是小編給大家介紹的微信小程序中限制激勵式視頻廣告位顯示次數(shù)的實現(xiàn)思路,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
如果你覺得本文對你有幫助,歡迎轉載,煩請注明出處,謝謝!
相關文章
JS實現(xiàn)點擊Radio動態(tài)更新table數(shù)據(jù)
這篇文章主要介紹了JS實現(xiàn)點擊Radio動態(tài)更新table數(shù)據(jù)的相關資料,需要的朋友可以參考下2017-07-07package.json與package-lock.json的區(qū)別及詳細解釋
不知道大家平時在開發(fā)中有沒有注意到,你的項目中有兩個文件:package.json,package-lock.json,應該很多人平時都不會去關注這兩個文件有啥關系吧,這篇文章主要給大家介紹了關于package.json與package-lock.json的區(qū)別及詳細解釋,需要的朋友可以參考下2022-08-08讓JavaScript擁有類似Lambda表達式編程能力的方法
在前幾天的博文中我發(fā)布了一個可以自定義頁碼呈現(xiàn)方式的組件,有C#和JavaScript兩個版本。2010-09-09js addDqmForPP給標簽內屬性值加上雙引號的函數(shù)
這篇文章主要介紹了js addDqmForPP給標簽內屬性值加上雙引號的函數(shù),需要的朋友可以參考下2016-12-12仿iPhone通訊錄制作小程序自定義選擇組件的實現(xiàn)
這篇文章主要介紹了仿iPhone通訊錄制作小程序自定義選擇組件的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2019-05-05