Czym jest app-ads.txt i gdzie musi się znajdować
Plik w jednym akapicie, format linii pole po polu, jedna zasada dotycząca jego lokalizacji, od której zależy, czy cokolwiek zadziała, i co zrobić bez strony internetowej.
app-ads.txt to plik tekstowy z listą firm reklamowych uprawnionych do sprzedaży powierzchni reklamowej Twojej aplikacji. Znajduje się pod /app-ads.txt w witrynie podanej na stronie aplikacji w sklepie, a sieci pobierają go, by sprawdzić, czy sprzedawcy są autoryzowani. Subdomena platformy działa: AdMob weryfikuje pliki na subdomenach AppFoyer. Bez reklam plik nie jest potrzebny.
Zrób to zamiast tego w kilka minut
AppFoyer hostuje strony, o których jest ten poradnik — politykę prywatności, regulamin, wsparcie, usuwanie konta i app-ads.txt — na ich własnej subdomenie, bez Twojej własnej domeny i serwera. Jedna aplikacja jest za darmo, a nic, czego wymaga sklep, nigdy nie jest płatne.
Sprawdzono 12 października 2026. Zasady sklepów się zmieniają, czasem bez zapowiedzi. Wszystko poniżej linkuje do oficjalnej dokumentacji i to ona — nie ta strona — jest rozstrzygająca. Jeśli się różnią, rację ma sklep. Ten poradnik jest przetłumaczony z angielskiego; cytaty z dokumentacji sklepów pozostawiono w oryginalnym brzmieniu angielskim.
app-ads.txt to zwykły plik tekstowy z listą firm reklamowych uprawnionych do sprzedaży
powierzchni reklamowej Twojej aplikacji. Znajduje się pod /app-ads.txt na stronie internetowej,
którą podałeś na stronie aplikacji w sklepie, a sieci reklamowe pobierają go, żeby sprawdzić, czy
ten, kto oferuje Twoją powierzchnię reklamową, naprawdę jest przez Ciebie autoryzowany. Bez niego
kupujący nie ma jak tego potwierdzić — i to jest cały powód istnienia tego standardu.
Jeśli w aplikacji nie wyświetlasz reklam, ten plik w ogóle nie jest Ci potrzebny. Jeśli wyświetlasz, zajmuje to około dziesięciu minut — z czego dziewięć idzie na ustalenie właściwej lokalizacji, bo to jedyna część, która regularnie się psuje.
Jaki problem rozwiązuje
Powierzchnia reklamowa jest odsprzedawana. Gdzieś między Twoją aplikacją a reklamodawcą są giełdy,
resellerzy i pośrednicy, a dopóki nie istniał ads.txt i jego wersja dla aplikacji, kupujący nie miał
taniego sposobu, by odróżnić „to naprawdę jest powierzchnia tej aplikacji” od „ktoś twierdzi, że ją
sprzedaje”. Oszustwa działały, bo tego twierdzenia nie dało się zweryfikować.
Rozwiązanie jest celowo mało techniczne: wydawca publikuje listę tych, którzy mogą sprzedawać w jego imieniu, pod adresem, który kontroluje tylko on. Kupujący pobiera plik i porównuje. To cały mechanizm i właśnie dlatego adres jest ważniejszy niż treść — plik, który mógł tam umieścić ktokolwiek, niczego by nie dowodził.
Format linii
Jeden autoryzowany sprzedawca na linię, trzy pola wymagane i jedno opcjonalne, rozdzielone przecinkami:
google.com, pub-0000000000000000, DIRECT, f08c47fec0942fa0
| Pole | Znaczenie |
|---|---|
google.com | Domena systemu reklamowego — kanoniczna domena samej sieci, nie Twoja. |
pub-0000000000000000 | Twój identyfikator wydawcy w tej sieci. Skopiuj go z jej panelu. |
DIRECT lub RESELLER | DIRECT, jeśli masz z nią bezpośrednią umowę; RESELLER, jeśli upoważniłeś ją do odsprzedaży. |
f08c47fec0942fa0 | Opcjonalny identyfikator urzędu certyfikacji, jeśli sieć go publikuje. |
Wszystko po # jest komentarzem. Linie zaczynające się od contact=, subdomain=,
inventorypartnerdomain= i podobnych to zmienne, a nie rekordy sprzedawców, i pozostają bez zmian.
Za większość zepsutych plików odpowiadają dwa błędy: brakujący przecinek, przez który cała linia staje się nieczytelna dla parsera, oraz wklejenie cudzego identyfikatora wydawcy z forum wsparcia, co upoważnia obcą osobę do sprzedaży Twojej powierzchni reklamowej. Panel każdej sieci pokazuje dokładnie tę linię, której ona oczekuje — użyj jej, a nie szablonu.
Gdzie musi się znajdować — część, od której zależy wszystko
Crawler nie zna nazwy Twojego pakietu i nie szuka Cię po aplikacji. Odczytuje adres URL strony
dewelopera ze strony aplikacji w sklepie i pobiera /app-ads.txt z katalogu głównego tej domeny.
Jeśli adres na stronie aplikacji w sklepie jest zły, nawet całkowicie poprawny plik jest niewidoczny.
AdMob dokumentuje zasady sprawdzania i warto je przeczytać raz, zamiast zgadywać:
- Katalog główny oznacza „the directory following the top level domain” (katalog następujący po
domenie najwyższego poziomu) —
example.com/app-ads.txt, a nieexample.com/some/path/app-ads.txt. - Crawlery „probe up to one subdomain level from the developer website when constructing an
app-ads.txt URL” (sprawdzają co najwyżej jeden poziom subdomeny od strony dewelopera, budując
adres URL app-ads.txt). Dla strony aplikacji wskazującej na
support.help.example.com/gamewłasny przykład AdMob pokazuje próby podhelp.example.com/app-ads.txtiexample.com/app-ads.txt. www.im.są wykluczone jako lokalizacje subdomen, więc sprowadzają się do samej domeny.
Poza adresem samo serwowanie musi być nudno poprawne: HTTP 200, Content-Type: text/plain, bez
przekierowania przed nim, bez logowania, bez JavaScriptu, który by go renderował, i bez niczego
w robots.txt, co by go blokowało. Plik, który pojawia się dopiero po przekierowaniu z http na
https albo z domeny głównej na www, to częsta i zupełnie niewidoczna awaria.
Sprawdź go tak, jak zrobiłby to crawler:
curl -i https://your-domain.example/app-ads.txt
Oczekujesz 200 OK, text/plain, braku nagłówka Location: i swoich linii w treści odpowiedzi.
„Ale ja nie mam strony internetowej”
To normalna sytuacja niezależnego dewelopera i powód, dla którego tak wiele aplikacji w ogóle nie ma tego pliku.
Wymogiem jest nazwa hosta, którą kontrolujesz i która serwuje plik — a nie strona marketingowa, firmowa domena czy landing page. AdMob mówi to wprost: „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.” (Jeśli nie masz odpowiedniej strony internetowej, która pozwala przesłać plik app-ads.txt do katalogu głównego, możesz hostować plik app-ads.txt w Firebase Hosting.) Hosting na platformie jest przewidzianą opcją, a nie obejściem. Możliwości omawia poradnik o app-ads.txt bez strony internetowej.
Czegokolwiek użyjesz, dwie rzeczy muszą być prawdziwe dłużej niż przez tydzień premiery: adres musi pozostać ten sam, bo jest wpisany na stronie aplikacji w sklepie, o której już nie pomyślisz, i musi nadal serwować zwykły tekst, bez przekierowania, które wkradnie się przed niego, gdy ktoś pierwszy raz „ulepszy” konfigurację.
Gdy coś zmienisz, nic nie dzieje się od razu
Sieci reklamowe ponownie indeksują pliki według własnego harmonogramu. AdMob stwierdza, że „it can take up to 24 hours for AdMob to crawl and verify your app-ads.txt files” (zindeksowanie i zweryfikowanie plików app-ads.txt przez AdMob może potrwać do 24 godzin), a inne sieci są wolniejsze. Plik przesłany godzinę temu, który nadal jest widoczny jako brakujący, prawie zawsze jest po prostu sprawdzany za wcześnie — zanim cokolwiek zmienisz, zajrzyj do poradnika o błędzie „not found”.
Co robi tutaj AppFoyer
Strona Twojej aplikacji serwuje app-ads.txt na własnej subdomenie — zwykły tekst, 200, bez
przekierowania, z nagłówkami, których wymaga specyfikacja — a edytor sprawdza każdą linię podczas
pisania, więc brakujący przecinek zostaje wychwycony, zanim zobaczy go crawler. Tę subdomenę
ustawiasz jako stronę dewelopera na stronie aplikacji w sklepie; to jeden poziom pod appfoyer.page.
AdMob weryfikuje tam ten plik: w październiku 2026 roku zgłosił „app-ads.txt file found and verified” (plik app-ads.txt znaleziony i zweryfikowany) dla aplikacji, których stroną dewelopera jest adres AppFoyer. Od innych sieci reklamowych nie mamy jeszcze własnego wyniku indeksowania.
Źródła oficjalne
- Konfigurowanie app-ads.txt — Centrum pomocy AdMob. Zasady działania crawlera i przytoczony wyżej przykład z subdomeną pochodzą z tej strony.
- Specyfikacja ads.txt / app-ads.txt — IAB Tech Lab. Sama specyfikacja i źródło rozstrzygające w kwestii składni linii.