// 启动广告弹出信号 // 用于判定"当前是否需要弹出启动广告": // - 小程序冷启动(首次进入): 由模块级 _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; }