用途:为 Expo 应用接入 Google AdMob 广告,并在任何广告请求前完成 UMP 同意与 Apple ATT 跟踪授权,保证广告不打断用户正在进行的任务。
主要能力:支持横幅、插屏、激励三种广告形态;所有“此刻能否展示广告”的判断由纯函数 ad-policy.ts / rewarded-offer.ts 决定,节奏数值来自配置(默认首次插屏前需 3 个自然断点,之后间隔 3 分钟和 2 个断点);横幅仅出现在 contracts/ads.json 声明的屏幕且屏幕获得焦点时;插屏仅由离开自然断点的按压处理器触发;激励广告仅在用户点击且明确标注“Watch an ad to ...”时展示,奖励仅在 EARNED_REWARD 时发放;全屏广告前后通过 MediaLifecycle 暂停和恢复媒体;广告失败静默记录,不显示错误、加载圈或重试提示;按 general / child-directed 声明并执行受众策略,儿童导向应用不接入 ATT;SKAdNetwork 标识列表在发布前用脚本生成并校验;测试构建使用 Google 测试广告,真实 ID 仅在生产 + live 构建注入。
使用方式:安装 react-native-google-mobile-ads@17.2.0(使用 npm install -E)及 expo-tracking-transparency、expo-network、expo-constants、expo-application;复制 templates 下的端口、配置、钩子、横幅组件、脚本和 contracts/ads.json;按 examples/app-config-ads.ts 配置 app.config.ts;在组合根中组装 ads、consent、connectivity、fullscreenAd 端口;挂载 AdsRoot 与同意流程,按 references/ad-policy.md 和 placements-and-lifecycle.md 放置广告;运行 Jest 测试、check-ads.mjs 和 check-ad-behaviour.mjs 检查器直至 RESULT: PASS;发布前运行 refresh-skadnetwork.ts --check,并在测试构建上手动完成 iOS 与 Android 的广告冒烟测试;AdMob 控制台步骤需由开发者完成,不得编造 ID。
适用场景:需要为 Expo 应用添加合规 AdMob 广告、统一管理同意与 ATT 流程、按广告节奏与受众策略约束投放的工程场景。
限制:SDK 版本固定为 17.2.0,仅限三个适配器文件导入,使用经典 create/load/show API,不采用 hooks 或广告池;测试构建不显示真实广告;儿童导向应用需移除跟踪相关包与适配器;控制台配置、商店链接和 app-ads.txt 等步骤不由本技能自动完成;未提供具体收费、价格或效果数据。