let videoAd = null; let adVideoUtils = { /** * @param {String} adUnitId 小程序廣告視頻id * videoAdInit 初始化廣告 */ videoAdInit(adUnitId) { if (videoAd) { videoAd = null; } if (uni.createRewardedVideoAd) { videoAd = uni.createRewardedVideoAd({ adUnitId: adUnitId, }); if (videoAd) { videoAd.onError((err) => { console.log(err); }); } // return videoAd; } }, /* 顯示廣告 ture為播放完成 */ videoAdShow() { return new Promise((resolve, reject) => { adVideoUtils._showAd().then((val) => { if (val) { videoAd.onClose((res) => { if (res.isEnded) { //成功 給予獎勵 resolve(true); } else { resolve(false); } }); videoAd.onError((err) => { if (err.errCode == "1004") { reject("1004"); } else { reject(err); } }); } else { reject(err); } }); }); }, _showAd() { return new Promise((resolve) => { videoAd .show() .then(() => { console.log("廣告顯示成功"); resolve(true); }) .catch((err) => { console.log("廣告組件出現問題", err); // 可以手動加載一次 videoAd .load() .then(() => { console.log("手動加載成功"); resolve(true); // 加載成功后需要再顯示廣告 return videoAd.show(); }) .catch((err) => { resolve(false); console.log("廣告組件出現問題2次加載", err); // this.showUToast("加載失敗啦,請稍后在試", "error"); }); }); }); }, }; export default adVideoUtils;
引入后注冊使用 import adVideoUtils from "./../adVideoUtils"; Vue.prototype.$utils = { ...adVideoUtils, };
// onLoad 中 this.$utils.videoAdInit(adUnitId); // 顯示 this.$utils.videoAdShow() .then((res) => { if (res) { // 成功 this.adVideoRes(); } else { this.adVideoErr(); } }) .catch((err) => { this.showUToast("視頻加載失敗了,稍后在試", "error"); });