App 广告收入怎么算:AdMob eCPM 计算
作者:Mehdi Azizi
发布于 ,8分钟
一次广告展示的收入是 eCPM 除以 1000。总收入=展示次数÷1000×eCPM,eCPM 随格式、国家、ATT 和同意而变。
一次 App 内广告展示的收入等于 eCPM 除以 1000:按 Google 示例里用的 4 美元 eCPM,一次展示值 0.004 美元。你的广告收入=展示次数除以 1000,再乘以 eCPM,而这个 eCPM 会随广告格式、国家、iOS 上的跟踪授权以及欧洲的用户同意而变化。对于以欧元结算的 AdMob 账户,Google 会在次月 21 日左右付款,前提是余额达到 70 欧元。
如果想和订阅做对比,整体情况见一个 App 能赚多少钱。我的 iOS App 靠订阅变现,不靠广告:本指南依据的是 Google、Apple 和相关库的官方页面,于 2026 年 10 月 25 日重新核对过。
一次广告能赚多少:计算方法
Google 把 eCPM 定义为你每 1000 次展示获得的收入估算值:(总收入÷展示次数)×1000。把公式倒过来,就得到你的收入。
收入=展示次数÷1000×eCPM
从请求到展示,AdMob 术语表跟踪三个指标:
- 请求数:你的 App 每请求一次广告就算一次,即使什么都没显示。
- 匹配率:收到广告的请求所占的比例。
- 展示率:收到的广告中真正展示出来的比例。
只要广告有一个像素可见,就算一次展示。广告加载了但从未显示,不算展示。
AdMob 广告格式及其风险
AdMob 帮助中心介绍了六种格式。下表把它的描述和 Google、Apple 的规则放在一起对照。
| 格式 | 显示位置 | 优点 | 需要注意的风险 |
|---|---|---|---|
| 横幅广告 | 屏幕顶部或底部的横条 | 可见且不打断使用 | 靠近按钮容易误点 |
| 插页式广告 | 全屏,出现在自然停顿处 | 占满屏幕,可放视频 | Apple 要求有明显的关闭按钮 |
| 激励广告 | 用户自愿观看短视频换取奖励 | 用户明确同意 | 奖励绝不能是现金 |
| 插页式激励广告 | 在过渡处全屏显示(测试版) | 无需用户主动请求 | 需要带“不用了”选项的介绍页 |
| 开屏广告 | 覆盖在加载界面上 | 把启动等待变现 | 前几次打开时应避免 |
| 原生广告 | 融入内容,沿用 App 风格 | 与设计融为一体 | 必须标注“广告” |
在 Google 这边,不建议把横幅放在可交互元素旁边;插页式广告位置不当会导致误点,可能让广告投放被停用。激励广告需要用户明确同意,并且不能直接奖励任何有货币价值的物品。Google 建议在用户使用几次之后再显示开屏广告,原生广告必须标注“广告”“推广”或“赞助”。
在 Apple 这边,guideline 2.5.18 要求打断使用的广告必须明确表明自己是广告,并配有明显且足够大的关闭按钮。它规定广告只能出现在主 App 中,并且必须提供举报不当广告的方式。3.2.2 允许奖励用户观看广告,但拒绝主要为展示广告而设计的 App。1.3 规定,除少数情况外,儿童类别不得含有第三方广告。
为什么各格式的 eCPM 不一样
每种格式卖的是不同的空间:一条横幅、一整屏、一段用户自愿观看的视频。我查阅的 AdMob 帮助页面并没有按 eCPM 给它们排名,但提到启用更多格式会让更多广告主参与竞争。**eCPM 高但很少被看到的格式,可能比 eCPM 一般但每屏都能看到的格式赚得少。**你自己的排名可以在 AdMob 报告里按格式和国家查看。
影响 eCPM 的因素
国家和平台
Google 写道,eCPM 很大程度上取决于市场和平台:可能在一个国家上涨,同时在另一个国家下跌。我不给你按国家划分的 eCPM 表:网上流传的那些来自别的 App、别的受众和别的时间段。
iOS 上的 ATT
在 Apple 看来,利用来自其他公司 App 的数据展示定向广告就属于跟踪。这需要通过 App Tracking Transparency 征得用户同意,否则广告标识符只会是一串零。Google 承认 iOS 的隐私变化可能导致 eCPM 波动,但没有给出具体影响的数字。
在 Apple 弹窗之前先解释你的请求,并等用户回应后再加载广告。用锁定功能或提供奖励来换取用户同意,是 guideline 5.1.2 所禁止的。
欧洲的用户同意
要投放个性化广告,Google 要求使用经过认证的同意管理平台,并接入 IAB 的 TCF 框架:欧洲经济区和英国自 2024 年 1 月 16 日起执行,瑞士自 2024 年 7 月 31 日起执行。Google 在 AdMob 中提供的欧洲同意消息是经过认证的。如果用户的选择既不允许个性化广告,也不允许非个性化广告,AdMob 会尝试投放受限广告,不做个性化,也不做再营销。
填充率和季节
根据 Google 关于收入下降的页面,匹配率低通常与收入下降有关,而展示率低则说明 App 的集成或体验有问题。要识别季节因素,Google 建议做同比比较。季节性下降多半不是你能控制的。
AdMob 什么时候付款,Apple 抽多少
对于以欧元结算的账户,AdMob 的付款门槛是 70 欧元,低于这个数 Google 绝不付款。每月周期由三个日期构成:
- 3 日:上个月的预估收入确定为最终收入。
- 20 日之前:你的付款信息已更新,余额达到门槛,且没有设置暂缓付款。
- 21 日左右:发出付款;如果 21 日是周末或节假日,则顺延到下一个工作日。
低于门槛时,余额会结转,累加到下个月。
Apple 的佣金针对的是通过 App Store 购买的数字商品和服务。由 Analysis Group 为 Apple 撰写、2026 年 6 月发布的 App Store 生态系统报告,把 App 内广告归入不抽佣金的收入。**AdMob 付给你的钱,Apple 一分不拿。**至于订阅,Apple 的分成见 Small Business Program 指南。
分步计算示例
下面所有数值都是为这个练习设定的假设。既不是我某个 App 的实测数据,也不是市场平均值。
假设有一款小游戏:每天 500 人打开,每人玩两局,每局结束时看到一次插页式广告。设匹配率为 90%,展示率为 80%,eCPM 为 3 欧元。
| 步骤 | 计算 | 结果 |
|---|---|---|
| 每日请求数 | 500×2 | 1,000 |
| 匹配成功 | 1,000×0.9 | 900 |
| 每日展示次数 | 900×0.8 | 720 |
| 30 天展示次数 | 720×30 | 21,600 |
| 当月收入 | 21,600÷1,000×3 | 64.80 欧元 |
如果插页式广告加载太慢,展示率掉到 50%,展示次数就变成 13,500 次,也就是 40.50 欧元。
假设这个月是 10 月。64.80 欧元在 11 月 3 日确定,低于 70 欧元的门槛:11 月 21 日不付款。如果 11 月收入相同,余额在 12 月初达到 129.60 欧元,付款在 12 月 21 日左右发出。在这个场景里,从第一次广告展示到第一笔付款发出,相隔将近三个月。
在 Expo App 中集成 AdMob
react-native-google-mobile-ads 这个库把 AdMob 带到 Expo。以下步骤参照它的 Expo 文档。
1. 安装库
运行 npx expo install react-native-google-mobile-ads。
2. 声明插件
**插件在 app.json 中声明,填入你的 AdMob 应用 ID 和跟踪请求的说明文字。**文档还加了 skAdNetworkItems 列表,需要与 Google 的列表保持同步。
{
"expo": {
"plugins": [
[
"react-native-google-mobile-ads",
{
"androidAppId": "ca-app-pub-xxxxxxxx~xxxxxxxx",
"iosAppId": "ca-app-pub-xxxxxxxx~xxxxxxxx",
"userTrackingUsageDescription": "你的 ATT 说明文字"
}
]
]
}
}
3. 别用 Expo Go
**这个库包含原生代码,Expo Go 无法运行。**你需要一个开发构建,例如先 npx expo prebuild 再 npx expo run:ios,每次修改插件选项后都要重新构建。
4. 先征得同意,再初始化
Google 提醒,SDK 初始化时可能就已经开始预加载广告。**先征得同意,只有在 canRequestAds 为 true 时才初始化 SDK。**如果征求同意失败,库的文档建议照样继续尝试:SDK 会沿用上一次会话的同意状态。
import mobileAds from "react-native-google-mobile-ads";
import { AdsConsent } from "react-native-google-mobile-ads";
export async function demarrerLesPubs(): Promise<void> {
try {
await AdsConsent.gatherConsent();
} catch (erreur) {
// 之前的同意状态仍然有效。
console.warn("同意状态未更新", erreur);
}
const info = await AdsConsent.getConsentInfo();
if (info.canRequestAds) {
await mobileAds().initialize();
}
}
如果你在 AdMob 中配置了 ATT 消息,同意 SDK 也会处理 Apple 的跟踪请求,并在之前先显示一条解释消息。
5. 开发时使用测试广告
文档提醒,开发阶段使用真实广告可能导致你的账户被停用。整个开发过程都使用 TestIds 标识符。
6. 发布 app-ads.txt 文件
它声明谁有权销售你的广告,Google 认为这是避免大量收入损失所必需的。把它放在你 App Store 页面中营销网址(Marketing URL)字段所指网站的根目录,内容类似 google.com, pub-0000000000000000, DIRECT 这样一行。
7. 申报 SDK 收集的数据
按照 App Store Connect 中的 App Privacy 填写信息。
第一个 App 选广告还是订阅?
在示例中,每天 500 名玩家每月带来 64.80 欧元,每人约 13 欧分。在总指南里,一个月费 4.49 欧元的订阅(价格同样是为示例设定的),扣除法国 20% 的增值税和 15% 的佣金后,每位订阅者给你留下约 3.18 欧元。那篇指南对广告用的是另一套假设:每天看 3 次广告,eCPM 为 4 美元。改动任何一个假设,结果都会跟着变。
当 App 每天会被打开多次时,广告才有意义,比如游戏:Google 把激励广告描述为免费变现游戏的理想方式。对于只用几分钟的工具类 App,订阅往往更现实。计算见iOS App 选订阅还是一次性买断,接入方法见 RevenueCat 与 iOS App 内订阅。
写代码前先选好模式
iOS Kit 包含我的 App 的起步代码,引导流程、付费墙和订阅都已写好,你可以按自己的节奏跟着做。
做决定之前,免费诊断会告诉你项目真正卡在哪里,并发给你我的防 Apple 拒审清单。订阅的搭建方法详见 iOS App 内订阅页面。
常见问题
手机 App 上一次广告能赚多少?
eCPM 除以 1000。按 Google 示例中 4 美元的 eCPM,一次展示值 0.004 美元。
Google AdMob 能赚多少?
没有固定金额。你的收入=展示次数÷1000×eCPM,而 eCPM 随国家、格式、ATT、用户同意和季节而变化。
AdMob 的付款门槛是多少?
以欧元结算的账户是 70 欧元。一个月的收入在次月 3 日确定,如果余额达到门槛,在 21 日左右付款;否则结转到下个月。
Apple 会从广告收入中抽佣金吗?
不会。Analysis Group 为 Apple 撰写、2026 年 6 月发布的报告,把 App 内广告归入不抽佣金的收入。
手机游戏里的一次广告能赚多少?
计算方法相同。游戏有天然的停顿点适合放插页式广告,比如一关结束时,还有可以用来交换激励视频的奖励。
能在 Expo Go 里测试 AdMob 吗?
不能。这个库包含原生代码,Expo Go 无法运行。你需要一个开发构建,并使用测试广告。