chore:启动广告,后台开启首次弹出,第一次进入小程序后会弹出广告,
后台开启每次弹出,每次重新进入小程序都会弹出广告
This commit is contained in:
@@ -299,16 +299,25 @@ export default {
|
|||||||
async: false
|
async: false
|
||||||
});
|
});
|
||||||
this.adv = res.value
|
this.adv = res.value
|
||||||
// 弹框形式(后台"首次弹出"等配置), 这里统一为: 每次(重新)进入小程序都弹出
|
// 后台配置: advshow=1 开启启动广告; advtype 决定弹出策略
|
||||||
// 通过 App 层"重新进入"信号 + 首屏首次加载来判定, 不再依赖持久化缓存计数,
|
// advtype == 1: 首次弹出 —— 仅第一次进入小程序弹出(持久化标记, 清缓存后可再弹)
|
||||||
// 否则关闭广告后计数变为 -1, 第二次进入不会弹出, 必须清缓存才能再弹。
|
// advtype == 0: 每次弹出 —— 每次"重新进入小程序"都弹出(不含 Tab 切换回首页)
|
||||||
if (this.adv.advshow == 1) {
|
if (this.adv.advshow == 1) {
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
if (!this.$refs.uniPopupWindow) return;
|
if (!this.$refs.uniPopupWindow) return;
|
||||||
const reenter = consumeNeedStartupAd(); // 从后台切回 / "重新进入小程序"
|
if (res.value.advtype == 1) {
|
||||||
const firstLaunch = isColdLaunchPending(); // 本 app 进程首次冷启动(只一次)
|
// 首次弹出: 从未展示过才弹
|
||||||
if (reenter || firstLaunch) {
|
var popwindow_count = uni.getStorageSync(this.id + this.name + '_popwindow_count');
|
||||||
this.$refs.uniPopupWindow.open();
|
if (popwindow_count == '' || popwindow_count == 0) {
|
||||||
|
this.$refs.uniPopupWindow.open();
|
||||||
|
uni.setStorageSync(this.id + this.name + '_popwindow_count', 1);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// 每次弹出: 冷启动首次 或 真正"重新进入小程序"(App 前后台切换)时弹出,
|
||||||
|
// 由 App.onShow 在重新进入时置位的信号驱动, 切 Tab 不会触发 App.onShow 故不弹
|
||||||
|
if (consumeNeedStartupAd() || isColdLaunchPending()) {
|
||||||
|
this.$refs.uniPopupWindow.open();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}, 500);
|
}, 500);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user