微信小程序中限制激勵(lì)式視頻廣告位顯示次數(shù)(實(shí)現(xiàn)思路)
微信小程序自從支持激勵(lì)式視頻廣告位以后,很多小程序?yàn)榱俗儸F(xiàn)都加入了此廣告位,廣告正常觀看結(jié)束的次數(shù)越多就越賺錢,但是觀看次數(shù)的比率過高也會面臨封號的風(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 里獲取本地存儲的上一次觀看激勵(lì)視頻廣告保存的時(shí)間,并獲取本地存儲觀看廣告位的次數(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ù)加載廣告位,否則播放視頻。在廣告位正常播放完畢后,要更新本地存儲的播放次數(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è)視頻以后可能還會在該頁面的推薦中觀看其它視頻,而此時(shí)再次彈出廣告位的體驗(yàn)可能會不太好,所以我又加了入了一個(gè)判斷,如上面代碼中第6行的 that.data.showRewardedAd,頁面初始化時(shí)該值為1,當(dāng)播放完一次后將其歸0。
總結(jié)
以上所述是小編給大家介紹的微信小程序中限制激勵(lì)式視頻廣告位顯示次數(shù)的實(shí)現(xiàn)思路,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時(shí)回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
如果你覺得本文對你有幫助,歡迎轉(zhuǎn)載,煩請注明出處,謝謝!
相關(guān)文章
JS實(shí)現(xiàn)點(diǎn)擊Radio動(dòng)態(tài)更新table數(shù)據(jù)
這篇文章主要介紹了JS實(shí)現(xiàn)點(diǎn)擊Radio動(dòng)態(tài)更新table數(shù)據(jù)的相關(guān)資料,需要的朋友可以參考下2017-07-07
package.json與package-lock.json的區(qū)別及詳細(xì)解釋
不知道大家平時(shí)在開發(fā)中有沒有注意到,你的項(xiàng)目中有兩個(gè)文件:package.json,package-lock.json,應(yīng)該很多人平時(shí)都不會去關(guān)注這兩個(gè)文件有啥關(guān)系吧,這篇文章主要給大家介紹了關(guān)于package.json與package-lock.json的區(qū)別及詳細(xì)解釋,需要的朋友可以參考下2022-08-08
uniapp中使用videojs構(gòu)建H5直播播放器
這篇文章主要為大家介紹了uniapp中使用videojs構(gòu)建H5直播播放器實(shí)現(xiàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-06-06
利用a標(biāo)簽自動(dòng)解析URL分析網(wǎng)址實(shí)例
a標(biāo)簽也和window.location一樣,也有這樣屬性,因此可以利用它來分析網(wǎng)址,下面的實(shí)例代碼,大家可以看看2014-10-10
JavaScript屏蔽指定區(qū)域內(nèi)右鍵菜單
有時(shí)候需要屏蔽部分區(qū)域內(nèi)的右鍵菜單,下面的代碼大家可以測試下。2010-03-03
讓JavaScript擁有類似Lambda表達(dá)式編程能力的方法
在前幾天的博文中我發(fā)布了一個(gè)可以自定義頁碼呈現(xiàn)方式的組件,有C#和JavaScript兩個(gè)版本。2010-09-09
js addDqmForPP給標(biāo)簽內(nèi)屬性值加上雙引號的函數(shù)
這篇文章主要介紹了js addDqmForPP給標(biāo)簽內(nèi)屬性值加上雙引號的函數(shù),需要的朋友可以參考下2016-12-12
仿iPhone通訊錄制作小程序自定義選擇組件的實(shí)現(xiàn)
這篇文章主要介紹了仿iPhone通訊錄制作小程序自定義選擇組件的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-05-05

