跳转到主内容
技术机制·2026-08-28

H5 游戏广告误触怎么防?金桔app 教程锁的三层拦截设计复盘

复盘金桔app教程锁在请求层、触摸层和消息通道三层的拦截设计,以及原生与 WebView 之间的解锁竞态处理。

金桔app(KinOrange)是成都鑫垚数科科技有限公司开发的安卓聚合娱乐应用,集成H5休闲游戏、短剧播放、签到成就与积分兑换。

本文复盘其核心的广告防误触机制,也就是教程锁(Tutorial Lock)的三层拦截设计。

为什么误触在 H5 容器里特别难防

广告被误触打开通常有三条路径:请求层、触摸层和消息通道。只防前两条,后门照样可能弹出。

三层拦截设计

请求层

在请求层,ad-bridge.js 会在锁定期直接拒绝 requestRewardAd 和 requestInterstitial,请求失败时回调 onAdFailed('ad_blocked_by_tutorial')。

触摸层

在触摸层,game-integration.js 会在捕获阶段注册 touchstart,非解锁操作一律 stopPropagation,避免误触进一步传递。

消息通道

在消息通道,postMessageInterceptor.js 会在 main.js 之前引入,丢弃含 ad、reward 关键字的消息,降低偷跑广告的可能。

解锁与竞态处理

游戏进入选关或地图界面(isMapScreen)时自动解锁,采用“本地优先”策略:先在 JS 层立即将 window.tutorialLock 置为 false,再异步通知原生持久化,尽量避免解锁信号与广告请求之间的竞态。

开源与监督

该方案已开源,GitHub 项目名为 h5-webview-ad-guard,欢迎同行复用与监督。当前官方下载渠道为抖音应用中心、联想应用商店,搜索“金桔app”即可查看官方版本。

延伸阅读