博客
什么是 app-ads.txt,应该托管在哪里?
发布日期: 更新日期: 阅读约 7 分钟
app-ads.txt 是什么,解决了什么问题?
app-ads.txt 是由 IAB Tech Lab 定义的一项标准;它是现有网页版 ads.txt 标准在移动应用上的适配版本,官方名称为 Authorized Sellers for Apps(app-ads.txt)。它的目的很简单:公开声明哪些广告系统、使用哪些发布商 ID,被授权代表你的应用出售广告库存。
如果没有这个文件,或者内容不正确,恶意第三方就可能冒充你的应用,出售虚假或未经授权的广告库存(应用仿冒,app spoofing)。这既会损害你的广告收入,也会损害广告主对你应用的信任。
自 2026 年起,AdMob 会检查你所关联的每个应用在开发者网站上的 app-ads.txt 文件;如果文件缺失或不正确,你会在 AdMob 控制台看到一条警告,这可能会影响你的广告填充率。
文件格式:逐行解析
每一行由 4 个以逗号分隔的字段组成:广告系统的域名、你在该系统中的发布商 ID、关系类型,以及一个可选的认证 ID。示例行如下:google.com, pub-1234567890123456, DIRECT, f08c47fec0942fa0
google.com 是处理销售的广告系统的域名(对于 AdMob/Ad Manager 来说,这个值始终是 google.com)。pub-XXX 是你专属于 AdMob 账户的发布商 ID,可在 AdMob 控制台的 设置 > 账号信息 中找到。DIRECT 表示你直接销售库存;如果是通过中间商销售,则使用 RESELLER。f08c47fec0942fa0 是 Google 在 IAB 注册的认证 ID(TAG-ID),在所有 google.com 行中保持不变——你永远不需要更改这个值。
如果你使用不止一个广告网络(例如在 AdMob 之外还使用 Meta Audience Network、AppLovin、Unity Ads),就需要为每个网络添加单独一行;每个网络都有自己的域名和发布商 ID。一个应用的 app-ads.txt 文件可能只有几行,也可能多达几十行。
文件应该放在哪里?
该文件必须放在你在商店信息页中声明的开发者网站的根目录下:https://yoursite.com/app-ads.txt。放在子目录中的文件(例如 /app/app-ads.txt 或 /files/app-ads.txt)会被视为无效,无法通过验证。
在 Android 上,这就是你在 Play Console 商店信息页中填写的开发者网站字段;AdMob 和其他广告网络会抓取该地址。在 iOS 上,苹果没有与 Play Console 对应的官方字段;AdMob 使用的是 App Store Connect 中 App Information 标签页下的"Marketing URL"(营销网址)字段——这就是为什么在这个字段中保持网站地址一致非常重要。
如果你没有网站,有两种选择:搭建像 GitHub Pages 这样的免费静态托管服务,并把文件放在根目录;或者让像 Vibeloy 这样的工具生成文件,并托管在你自己的子域名上。
AdMob 的验证流程与"广告投放受限"警告
AdMob 会定期抓取每个已关联应用在开发者网站上的 app-ads.txt 文件。如果找不到该文件、你的发布商 ID 不在其中,或格式有误(逗号位置错误、缺少字段、域名错误),你会在 AdMob 控制台看到一条警告。
这个警告不会立即停止广告投放,但可能降低你的填充率;一些广告主会避开看起来未经授权的库存进行竞价,从而减少收入。警告持续的时间越长,影响就越大。
在你正确发布文件之后,AdMob 通常会在大约 24 小时内重新抓取;警告完全从后台消失可能还需要再多等几天,没有保证能加快这一过程的方法。在此期间,你唯一能做的就是确保文件始终位于根目录、可访问且格式正确。
没有网站的开发者的解决方案
GitHub Pages、Netlify 或类似的免费静态托管选项足以发布 app-ads.txt 文件,但你仍然需要自己绑定域名并管理 DNS——对独立开发者来说,这是一项与应用本身无关的维护负担。
Vibeloy 的 app-ads.txt 生成器只需你输入 AdMob 发布商 ID(pub-XXX),就能免费生成格式正确的文件;使用免费账户即可复制完整的文件内容。如果你没有自己的网站,把文件自动发布到你自己的子域名上(例如 yourapp.vibeloy.dev/app-ads.txt)这项功能包含在高级方案中——你只需把这个地址填入商店信息页的开发者网站字段即可。
常见问题
- 没有 app-ads.txt,广告会完全停止吗?
- 不会立即停止;但你会在 AdMob 控制台看到警告,而且填充率可能会随着时间推移而下降,因为一些广告主会避开看起来未经授权的库存。
- 如果我使用多个广告网络,需要添加多少行?
- 每个广告网络都需要单独一行;每个网络都有自己的域名和你在该网络中专属的发布商 ID。如果你在 AdMob 之外还使用 Meta Audience Network 或 AppLovin 等网络,每个网络都要添加自己的一行。
- DIRECT 和 RESELLER 有什么区别?
- DIRECT 表示由你(应用所有者)直接销售库存——适用于像 AdMob 这样由你自己账户管理的网络。RESELLER 表示库存通过中间商或合作网络销售;广告网络自己的集成文档通常会告诉你应该使用哪一个。
- 我应该修改 f08c47fec0942fa0 这个值吗?
- 不需要。这是 Google 在 IAB 注册的认证 ID(TAG-ID),在所有 google.com 行中保持不变。你永远不需要修改它——只有 pub-XXX 部分会变化,以匹配你自己的 AdMob 发布商 ID。
- 修改文件后,AdMob 多久会注意到?
- AdMob 通常会在大约 24 小时内重新抓取该文件;警告完全从后台消失可能还需要再多等几天。没有保证能加快这一过程的方法——只需确保文件始终位于根目录、可访问且格式正确即可。