Files
lucky_shop/common/js/startup-ad.js
jing df5be6045b common\js\floating-button.js
common\js\startup-ad.js
components\ns-mp-navbar\ns-mp-navbar.vue
2026-10-12 15:41:28 +08:00

31 lines
1.2 KiB
JavaScript

// 启动广告弹出信号
// 用于判定"当前是否需要弹出启动广告":
// - 小程序冷启动(首次进入): 由模块级 _coldLaunchedShown 标记判定, 整个 app 进程只记一次
// - 小程序重新进入(从后台切回 / 微信"重新进入小程序"菜单):
// 由 App.onShow 在"非首次展示"时调用 markNeedStartupAd() 置位
// 信号消费一次即清除, 不落地到持久化存储, 因此无需清缓存即可每次重新进入都弹出。
// 关键: 切换 Tab 回到首页只触发"页面级 onShow", 不会触发 App.onShow, 也不会重置
// 模块级冷启动标记, 因此不会在 Tab 切换时误弹。
let _needStartupAd = false;
let _coldLaunchedShown = false;
// App 层检测到"重新进入小程序"时调用, 标记本次需要弹出启动广告
export function markNeedStartupAd() {
_needStartupAd = true;
}
// 页面层读取并消费该信号(消费后自动复位)
export function consumeNeedStartupAd() {
const v = _needStartupAd;
_needStartupAd = false;
return v;
}
// 是否为本 app 进程的首次冷启动(只返回一次 true, 之后恒为 false)
export function isColdLaunchPending() {
if (_coldLaunchedShown) return false;
_coldLaunchedShown = true;
return true;
}