Files

63 lines
1.2 KiB
JavaScript
Raw Permalink Normal View History

2025-11-09 18:41:07 +08:00
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
};