31 lines
1.2 KiB
JavaScript
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;
|
|
}
|