每日运势小程序
This commit is contained in:
62
DailyFortuneGuide/utils/adService.js
Normal file
62
DailyFortuneGuide/utils/adService.js
Normal file
@@ -0,0 +1,62 @@
|
||||
const config = require("../config/index");
|
||||
|
||||
function showRewardedVideoAd() {
|
||||
return new Promise((resolve, reject) => {
|
||||
if (!config.adUnitId) {
|
||||
console.warn("adUnitId 未配置,跳过广告流程(仅开发阶段)");
|
||||
resolve("ad_skipped");
|
||||
return;
|
||||
}
|
||||
if (typeof tt === "undefined" || !tt.createRewardedVideoAd) {
|
||||
reject(new Error("rewarded_ad_unavailable"));
|
||||
return;
|
||||
}
|
||||
|
||||
const ad = tt.createRewardedVideoAd({
|
||||
adUnitId: config.adUnitId
|
||||
});
|
||||
|
||||
const cleanup = () => {
|
||||
if (!ad) {
|
||||
return;
|
||||
}
|
||||
if (ad.offLoad) {
|
||||
ad.offLoad();
|
||||
}
|
||||
if (ad.offError) {
|
||||
ad.offError();
|
||||
}
|
||||
if (ad.offClose) {
|
||||
ad.offClose();
|
||||
}
|
||||
};
|
||||
|
||||
ad.onError((error) => {
|
||||
cleanup();
|
||||
reject(error);
|
||||
});
|
||||
|
||||
ad.onClose((result = {}) => {
|
||||
cleanup();
|
||||
if (result.isEnded) {
|
||||
resolve();
|
||||
} else {
|
||||
const err = new Error("ad_not_completed");
|
||||
err.code = "ad_not_completed";
|
||||
reject(err);
|
||||
}
|
||||
});
|
||||
|
||||
ad
|
||||
.load()
|
||||
.then(() => ad.show())
|
||||
.catch((error) => {
|
||||
cleanup();
|
||||
reject(error);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
showRewardedVideoAd
|
||||
};
|
||||
Reference in New Issue
Block a user