본문으로 건너뛰기
AppFoyer
무료 시작

가이드 app-ads.txt

웹사이트가 없을 때 app-ads.txt 호스팅하기

크롤러에 실제로 필요한 것, 사이트를 만들지 않고 호스트를 마련하는 세 가지 방법, 각각의 리디렉션 함정, 제대로 작동하는지 확인하는 방법.

웹사이트는 필요 없습니다. /app-ads.txt를 일반 텍스트, HTTP 200, 리디렉션 없이 제공하는, 직접 관리하는 호스트 이름 하나만 있으면 됩니다. 그 주소를 스토어 등록정보의 개발자 웹사이트 필드(App Store에서는 Marketing URL)에 넣으면 크롤러가 그곳에서 파일을 읽습니다. AdMob은 Firebase Hosting을 적합한 방법으로 명시합니다.

대신 몇 분 만에 끝내세요

AppFoyer는 이 가이드가 다루는 페이지, 즉 개인정보처리방침, 이용약관, 지원, 계정 삭제 페이지와 app-ads.txt를 전용 하위 도메인에서 호스팅합니다. 직접 도메인이나 서버를 둘 필요가 없습니다. 앱 하나는 무료이며, 스토어가 요구하는 것은 무엇도 유료로 막아 두지 않습니다.

2026년 10월 12일 확인. 스토어 정책은 바뀌며, 예고 없이 바뀌기도 합니다. 아래의 모든 내용은 공식 문서로 연결되며, 권위를 갖는 것은 이 페이지가 아니라 그 문서입니다. 둘이 다르면 스토어가 맞습니다. 이 가이드는 영어 원문을 번역한 것이며, 스토어 문서의 인용문은 영어 원문 그대로 두었습니다.

웹사이트는 필요 없습니다. /app-ads.txt를 일반 텍스트, HTTP 200, 리디렉션 없이 제공하는, 직접 관리하는 호스트 이름 하나만 있으면 됩니다. 그 주소를 스토어 등록정보의 개발자 웹사이트 필드 (App Store에서는 Marketing URL, Google Play에서는 Store listing contact details 아래의 Website)에 넣으면 크롤러가 그곳에서 파일을 읽습니다.

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 파일을 업로드할 수 있는 적절한 웹사이트가 없다면 Firebase Hosting을 사용해 app-ads.txt 파일을 호스팅할 수 있습니다.) 플랫폼 호스팅은 우회책이 아니라 기대되는 해법입니다.

크롤러에 실제로 필요한 것

크롤러는 패키지 이름으로 앱을 조회하지 않습니다. 스토어 등록정보에서 개발자 웹사이트를 가져와 호스트 이름만 남기고, 그 루트에서 /app-ads.txt를 가져옵니다. AdMob의 규칙은 다음과 같습니다.

  • 경로가 아니라 루트. example.com/myapp을 가리키는 등록정보는 example.com/app-ads.txt에서 확인됩니다.
  • 서브도메인 한 단계. 크롤러는 “probe[s] up to one subdomain level from the developer website”(번역: 개발자 웹사이트에서 서브도메인 한 단계까지 탐색합니다)입니다. www.와 m.은 도메인 자체로 간주됩니다.
  • 있는 그대로 제공. 200 OK, Content-Type: text/plain, 리디렉션 없음, 로그인 없음, robots.txt에서 차단하지 않음.

따라서 해야 할 일은 이것입니다. 바뀌지 않을 주소 하나가 텍스트 파일 하나를 몇 년 동안 올바르게 제공하는 것. 아래 세 가지 방법은 모두 이를 해내며, 유지 관리 부담이 얼마나 되는지가 다릅니다.

방법 1: Firebase Hosting

AdMob이 명시하는 방법입니다. 무료 Firebase 프로젝트를 만들면 your-project.web.app 같은 호스트 이름을 받습니다.

  1. Firebase 콘솔에서 프로젝트를 만들고 Firebase CLI를 설치합니다.
  2. 빈 폴더에서 firebase init hosting을 실행하고 기본 public 디렉터리를 그대로 둡니다.
  3. 생성된 index.html 옆, public/에 app-ads.txt를 넣습니다.
  4. firebase deploy --only hosting을 실행합니다.
  5. 각 스토어 등록정보에서 https://your-project.web.app을 개발자 웹사이트로 설정합니다.

함정: 나중에 커스텀 도메인을 연결하면서 web.app 주소를 그 도메인으로 리디렉션하도록 선택하면, 등록정보에 있는 주소가 이제 리디렉션으로 응답합니다. 등록정보를 파일을 직접 제공하는 주소로 유지하거나, 등록정보를 새 도메인으로 업데이트하세요.

방법 2: GitHub Pages 또는 다른 정적 호스트

선언한 호스트 이름의 루트에 파일이 놓이기만 하면 어떤 정적 호스트든 됩니다.

GitHub Pages에서는 이 세부 사항이 중요합니다. 프로젝트 사이트는 username.github.io/repo/에 있지만, 크롤러는 username.github.io/app-ads.txt만 확인합니다. 파일은 사용자 사이트, 즉 username.github.io라는 이름의 저장소에 있어야 하며, 그렇지 않으면 프로젝트에 자체 커스텀 도메인이 필요합니다.

같은 리디렉션 함정이 적용됩니다. 커스텀 도메인을 구성하면 GitHub Pages는 github.io 주소를 그 도메인으로 리디렉션합니다. 중간 단계 없이 파일을 제공하는 주소를 선언하세요.

방법 3: 호스팅된 규정 준수 페이지

개인정보처리방침, 지원 페이지, 계정 삭제 URL도 필요하다면(광고가 있는 앱에는 거의 항상 첫 번째가 필요합니다) 같은 호스트에서 모두 제공할 수 있습니다. AppFoyer가 하는 일이 바로 이것입니다. 각 앱은 스토어가 요구하는 페이지와 함께 app-ads.txt를 리디렉션 없이 일반 텍스트로 제공하는 자체 서브도메인을 받습니다. 개발자 웹사이트가 AppFoyer 주소인 두 스토어의 앱에 대해 AdMob은 “app-ads.txt file found and verified” (app-ads.txt 파일을 찾아 확인함)라고 보고합니다(2026년 10월 확인). 다른 광고 네트워크에 대해서는 아직 자체적으로 확보한 크롤링 결과가 없습니다.

크롤러보다 먼저 확인하기

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

원하는 결과는 HTTP/2 200(또는 HTTP/1.1 200 OK), content-type: text/plain, location: 헤더 없음, 그리고 본문에 있는 여러분의 줄입니다. 여기서 301이나 302가 보이면 그것이 가장 흔한 눈에 보이지 않는 실패 원인입니다.

그런 다음 기다리세요. AdMob은 “it can take up to 24 hours for AdMob to crawl and verify your app-ads.txt files”(번역: AdMob이 app-ads.txt 파일을 크롤링하고 확인하는 데 최대 24시간이 걸릴 수 있습니다)라고 말합니다. 상태는 Apps → View all apps → app-ads.txt에 있습니다. 하루가 지나도 여전히 not found라면 not found 가이드에서 원인을 순서대로 살펴보세요.

공식 출처