Перейти к содержимому
AppFoyer
Начать

Руководства app-ads.txt

Что такое app-ads.txt и где он должен находиться

Файл в одном абзаце, формат строки поле за полем, единственное правило о его расположении, от которого зависит, работает ли всё это, и что делать без сайта.

app-ads.txt — это текстовый файл со списком рекламных компаний, которым разрешено продавать рекламный инвентарь вашего приложения. Он лежит по адресу /app-ads.txt на сайте, указанном в странице вашего приложения в магазине, и сети запрашивают его, чтобы проверить, что продавцы авторизованы. Поддомен платформы подходит: AdMob проверяет файлы на поддоменах AppFoyer. Нет рекламы — файл не нужен.

1:22
Видео 1:22 · откроется на YouTube

Сделайте это за несколько минут

AppFoyer размещает страницы, о которых это руководство, — политику конфиденциальности, условия использования, поддержку, удаление аккаунта и app-ads.txt — на отдельном поддомене, без собственного домена и сервера. Одно приложение — бесплатно, и ничто из того, что требует магазин, никогда не бывает платным.

Проверено 12 октября 2026 г. Правила магазинов меняются, иногда без предупреждения. Всё ниже ссылается на официальную документацию, и авторитетна именно она, а не эта страница. Если они расходятся, прав магазин. Это руководство переведено с английского; цитаты из документации магазинов приведены в оригинале на английском.

app-ads.txt — это текстовый файл со списком рекламных компаний, которым разрешено продавать рекламный инвентарь вашего приложения. Он находится по адресу /app-ads.txt на сайте, который вы указали в странице приложения в магазине, и рекламные сети запрашивают его, чтобы проверить, что тот, кто предлагает ваш инвентарь, действительно авторизован вами. Без него покупатель никак не может это подтвердить, и именно ради этого стандарт и существует.

Если ваше приложение не показывает рекламу, этот файл вам вообще не нужен. Если показывает, на него уходит около десяти минут — и девять из них на то, чтобы правильно выбрать расположение, а это единственная часть, которая регулярно идёт не так.

Какую проблему он решает

Рекламный инвентарь перепродаётся. Где-то между вашим приложением и рекламодателем есть биржи, реселлеры и посредники, и пока не появились ads.txt и его вариант для приложений, у покупателя не было дешёвого способа отличить «это действительно инвентарь того приложения» от «кто-то утверждает, что продаёт его». Мошенничество работало, потому что это утверждение нельзя было проверить.

Решение намеренно простое: издатель публикует список тех, кому разрешено продавать от его имени, по адресу, который контролирует только издатель. Покупатель запрашивает файл и сравнивает. Это весь механизм, и именно поэтому адрес важнее содержимого — файл, который мог положить туда кто угодно, ничего бы не доказывал.

Формат строки

Один авторизованный продавец на строку, три обязательных поля и одно необязательное, через запятую:

google.com, pub-0000000000000000, DIRECT, f08c47fec0942fa0
ПолеЗначение
google.comДомен рекламной системы — собственный канонический домен сети, а не ваш.
pub-0000000000000000Ваш идентификатор издателя в этой сети. Скопируйте его из её панели управления.
DIRECT или RESELLERDIRECT, если у вас прямой договор с сетью; RESELLER, если вы разрешили ей перепродажу.
f08c47fec0942fa0Необязательный идентификатор центра сертификации, если сеть его публикует.

Всё после # — комментарий. Строки, начинающиеся с contact=, subdomain=, inventorypartnerdomain= и подобных, — это переменные, а не записи о продавцах, и их не трогают.

Две ошибки объясняют большинство сломанных файлов: пропущенная запятая, из-за которой вся строка не разбирается, и вставленный с форума поддержки чужой идентификатор издателя, который разрешает незнакомцу продавать ваш инвентарь. Панель каждой сети показывает точную строку, которая ей нужна, — используйте её, а не шаблон.

Где он должен находиться — часть, которая решает всё

Краулер не знает имени вашего пакета и не ищет вас по приложению. Он читает URL сайта разработчика из страницы вашего приложения в магазине и запрашивает /app-ads.txt в корне этого домена. Ошибётесь с URL в странице магазина — и совершенно правильный файл будет невидим.

AdMob документирует правила поиска, и их стоит один раз прочитать, а не угадывать:

  • Корневой каталог означает “the directory following the top level domain” («каталог, следующий за доменом верхнего уровня») — example.com/app-ads.txt, а не example.com/some/path/app-ads.txt.
  • Краулеры “probe up to one subdomain level from the developer website when constructing an app-ads.txt URL” («проверяют до одного уровня поддомена от сайта разработчика при построении URL app-ads.txt»). Для страницы в магазине, указывающей на support.help.example.com/game, собственный пример AdMob показывает попытки запросить help.example.com/app-ads.txt и example.com/app-ads.txt.
  • www. и m. исключены как расположения поддоменов, поэтому сводятся к самому домену.

Помимо адреса, отдача файла должна быть скучно правильной: HTTP 200, Content-Type: text/plain, никакого перенаправления перед ним, никакого входа в аккаунт, никакого JavaScript для его отрисовки, ничего в robots.txt, что его блокирует. Файл, который появляется только после перенаправления с http на https или с основного домена на www, — частая и совершенно незаметная ошибка.

Проверьте его так, как это сделал бы краулер:

curl -i https://your-domain.example/app-ads.txt

Вам нужны 200 OK, text/plain, отсутствие заголовка Location: и ваши строки в теле ответа.

«Но у меня нет сайта»

Для независимого разработчика это обычная ситуация, и именно поэтому у стольких приложений файла нет вообще.

Требуется хост под вашим контролем, который отдаёт файл, — а не маркетинговый сайт, домен компании или лендинг. AdMob говорит об этом прямо: “If you don’t have a suitable website that allows the uploading of an app-ads.txt file at the root level, you can use Firebase Hosting to host your app-ads.txt file.” («Если у вас нет подходящего сайта, на который можно загрузить файл app-ads.txt на корневом уровне, вы можете разместить файл app-ads.txt на Firebase Hosting».) Хостинг на платформе — это ожидаемый вариант, а не обходной путь. Варианты разобраны в руководстве для тех, у кого нет сайта.

Что бы вы ни использовали, две вещи должны оставаться верными дольше, чем неделю после запуска: адрес должен оставаться прежним, потому что он указан в странице магазина, о которой вы больше не будете думать, и файл должен по-прежнему отдаваться как простой текст, без перенаправления, которое появится перед ним, как только кто-нибудь «улучшит» настройку.

Когда вы что-то меняете, ничего не происходит сразу

Рекламные сети повторно сканируют файлы по своему расписанию. AdMob указывает, что “it can take up to 24 hours for AdMob to crawl and verify your app-ads.txt files” («сканирование и проверка ваших файлов app-ads.txt в AdMob может занять до 24 часов»), а другие сети работают медленнее. Файл, загруженный час назад и всё ещё считающийся отсутствующим, почти всегда просто ещё не проверен — прежде чем что-либо менять, загляните в руководство по ошибке «not found».

Что здесь делает AppFoyer

Страница вашего приложения отдаёт app-ads.txt на собственном поддомене — простой текст, 200, без перенаправления, с заголовками, которых требует спецификация, — а редактор проверяет каждую строку по мере ввода, поэтому пропущенная запятая обнаруживается до того, как её увидит краулер. Этот поддомен вы указываете как сайт разработчика в странице приложения в магазине, на один уровень ниже appfoyer.page.

AdMob проверяет файл там: в октябре 2026 года он сообщил “app-ads.txt file found and verified” («файл app-ads.txt найден и проверен») для приложений, у которых сайтом разработчика указан адрес AppFoyer. Собственных результатов сканирования от других рекламных сетей у нас пока нет.

Официальные источники

  • Настройка app-ads.txt — AdMob Help. Правила краулера и пример с поддоменом, процитированные выше, взяты с этой страницы.
  • Спецификация ads.txt / app-ads.txt — IAB Tech Lab. Сама спецификация и авторитетный источник по грамматике строки.