광고를 붙이는 길

애드몹 · 보상형 둘 · 2026년 11월 13일 고침

사람이 오기 전에 붙인다. 나중에 붙이면 있던 것을 뺏는 꼴이 된다. 넣는 것은 보상형 하나뿐이고, 그 자리는 이미 코드에 나 있다.

때

왜 지금인가

지금 설치 수가 0이다. 광고를 붙여도 오늘 버는 돈은 0원이다. 그런데도 지금이 맞다.

사람이 천 명 들어온 뒤에 광고를 붙이면, 그 천 명에게는 없던 것이 생긴 것이다. 평점 한 줄이 「광고 생김」으로 내려간다. 지금 붙이면 들어오는 모두에게 원래 그런 게임이다.

다만 스토어의 「광고 포함」 딱지는 다시 붙는다. 어제 그걸 뗐으니 설치율이 조금 깎인다. 그 값을 치르고 사는 것이 「나중에 안 미안해도 되는 것」이다.

고르기

보상형 하나만

안 넣는다
배너

화면 아래에 늘 붙어 있는 띠. 40~60대 손가락에 오조작을 부른다. 낱말을 누르려다 광고를 누르면 그 판이 통째로 날아간다.

안 넣는다
전면

판 사이에 화면을 덮는 것. 가장 돈이 되지만 가장 많이 떠난다. 하루 한 판 게임에서 한 판마다 덮으면 다음 날이 없다.

넣는다
보상형

사람이 스스로 고른다. 막혀서 답답한 그 자리에서 「한 번 더」를 누르는 것이지, 당하는 것이 아니다.

넣는다
하루 상한

보상형도 무제한이면 게임이 광고 보는 일이 된다. 하루 여섯 편까지. 그 위로는 돈이 아니라 사람이 깎인다.

자리

자리는 이미 나 있다

진 판의 결과표에 「이 판 다시」가 셋 있다. 그것들이 먹는 것은 하루 열 걸음이고, 그 걸음은 완전 격파로 찬다.

TIERS = [
  { ads: 1, 이 판 다시                      }
  { ads: 2, 이 판 다시 · 시간 +20초          }
  { ads: 4, 이 판 다시 · 시간 +20초 · 기세 -20% }
]

ADS_LIVE 를 1로 올리면 말이 통째로 돌아온다 — 「오늘 몫에서 1번」이 「광고 1편」이 된다. 보상도 밸런스도 건드리지 않는다. 고칠 곳은 그 한 줄과 native.js 의 AD_UNIT 뿐이다.

2026-11-13 고침. 걸음표도 광고로 찬다. 완전 격파에 매달아 두었던 것은 광고를 못 붙이던 동안의 대안이었고, 광고가 붙었으니 원래 자리로 돌려놓았다 — 광고 한 편에 한 걸음, 하루 열 걸음까지. 광고가 없는 자리(웹)에서는 전처럼 완전 격파가 찬다.

주머니는 여전히 갈라 둔다. 걸음표 하루 열 편, 「이 판 다시」 하루 여섯 편, 서로 깎지 않는다. 한 주머니로 묶으면 막혀서 다시 하려던 사람이 선물을 포기해야 하고, 그러면 둘 중 하나는 아무도 안 쓴다.

숫자

옥이 얼마나 나가는가

걸음표가 내는 옥은 하루 최대 4알이다 — 이것은 전과 같다. 1·3·5·9걸음에 한 알씩이고, 7걸음은 보물함(냥과 장비만, 옥은 없다), 짝수 걸음은 보급품이다. 상한이 칸 수로 걸려 있으므로 광고를 아무리 봐도 4알 위로는 안 나간다.

바뀐 것은 닿는 사람 수다. 전에는 완전 격파를 하루 일곱 번 해야 보물함에 닿았고, 그건 어렵다 — 실제로는 두세 칸에서 멈춘다. 이제 광고 열 편이면 닿는다. 그래서 하루 1~2알이던 것이 4알이 된다 — 들어오는 19.7알 기준으로 10~15%가 더 풀린다.

치르기로 한 값이다. 완전 격파는 냥으로 갚는다 (PERFECT_PAY) — 걸음을 잃을 뿐 빈손이 되지는 않는다. 그리고 설치 0명인 지금이 이 셈을 바꾸는 가장 싼 때다.

걸음표  하루 열 편   광고 한 편에 한 걸음 · 상 (옥 · 보급품 · 보물함)
                     웹에서는 완전 격파가 찬다
다시하기 하루 여섯 편  「이 판 다시」의 값 · 상은 없다
                     두 주머니는 서로 깎지 않는다

옥 유출   최대 4알 / 일   1·3·5·9걸음 (7걸음은 보물함 — 옥 없음)
          실질 +2~3알     전에는 완전 격파 문턱에 막혀 1~2알에서 멈췄다
                          들어오는 19.7알의 10~15%

버는 쪽 (한국 보상형 eCPM 3~10달러)
  하루 쓰는 사람 1,000명 · 1인 2~5편  →  2,000~5,000노출
  →  하루 6 ~ 50달러  ·  달 18만 ~ 150만 원

  지금(사람 0명)                      →  0원
옥을 안 건드리는 것이 요점이다

광고로 받는 것은 다시 한 판이지 옥이 아니다. 그래서 옥에 붙은 값이 흔들리지 않는다 — 막혀서 그만두던 사람은 한 판 더 하고, 옥을 사는 사람은 손해 보지 않는다.

광고를 보는 사람과 옥을 사는 사람은 대개 겹치지 않는다. 둘을 한 주머니에 두면 한쪽이 다른 쪽을 깎는다.

절차

애드몹 신청 — 걸음별

  1. admob.google.com 에서 가입한다. 쓰던 구글 계정 그대로. Play Console 과 같은 계정이어야 앱이 저절로 이어진다.
  2. 결제 정보를 넣는다. 이름·주소·사업자등록번호(있으면). 여기서 주소 확인 PIN이 우편으로 온다 — 2~4주 걸린다. 수익이 10달러를 넘으면 그때 보내 주므로, 먼저 시작해 두는 것이 낫다.
  3. 앱 추가 → 「앱이 지원되는 앱 스토어에 등록되어 있나요?」 예 → kr.natmalsan.app 으로 검색 → 고른다. 이러면 Play 와 이어져 수치가 한자리에서 보인다.
  4. 광고 단위 만들기 → 보상형 둘. 이름은 「다시 하기」와 「선물 걸음」. 보상은 1 · step 으로 둔다(이름은 아무거나, 수를 우리가 안 쓴다).
    하나만 만들어도 돌아간다 — native.js 의 AD_GIFT 가 비어 있으면 「다시 하기」 단위로 간다. 둘로 두는 까닭은 어느 자리가 버는지 갈라 보기 위함이다.
  5. 앱 ID(ca-app-pub-…~…)와 광고 단위 ID(ca-app-pub-…/…)를 받아 적는다. 둘은 생김새가 비슷하니 헷갈리지 말 것 — 사이가 ~ 면 앱, / 면 단위다.
  6. app-ads.txt 를 올린다. 애드몹이 주는 한 줄을 wordgamebest.vercel.app/app-ads.txt 에 둔다. 안 올리면 광고 단가가 깎인다 — 공짜로 손해 보는 자리다. Play 등록정보의 「개발자 웹사이트」가 그 주소여야 짝이 맞는다.

코드

앱에 붙이기

받아 둔 것 (2026-11-08)

애드몹에 앱과 보상형 단위를 만들어 두었다. 둘 다 비밀이 아니다 — APK 안에 그대로 박혀 나가고 구글 공식 예제에도 적혀 있다.

앱 ID     ca-app-pub-6024243250449718~9053750478   ← 물결(~) · AndroidManifest
단위 ID   ca-app-pub-6024243250449718/1217678394   ← 빗금(/) · native.js 의 AD_RETRY
          ca-app-pub-6024243250449718/1964510209   ← native.js 의 AD_GIFT · 선물 걸음
게시자 ID pub-6024243250449718                     ← app-ads.txt 에 들어간 그 번호

광고 단위 이름   다시 하기 (보상형) · 선물 걸음 (보상형)
리워드          step 1   ※ 코드는 이 값을 읽지 않는다. 끝까지 봤는가만 본다
파트너 입찰      쓰지 않음 (되돌릴 수 없는 칸이라 비워 두었다)

app-ads.txt     https://wordgamebest.vercel.app/app-ads.txt  (HTTP 200 확인)
Play 개발자 웹사이트  https://wordgamebest.vercel.app        (같은 주소 확인)
인증 상태        「검토 필요」 — 구글이 긁어 갈 때까지 광고 게재가 제한된다

시험은 구글 시험용 단위로만 한다 — ca-app-pub-3940256099942544/5224354917. 위의 진짜 단위로 제 광고를 제가 누르면 계정이 정지되고 되돌릴 길이 거의 없다.

게임 쪽(index.html)은 이미 다 되어 있다. 손댈 곳은 앱 껍데기 넷뿐이고, 그중 하나는 한 줄이다.

  1. app/src/native.js 의 AD_UNIT 에 광고 단위 ID. 이 한 줄이 전부다 — ADS_LIVE 가 여기에 매달려 있어 채우는 순간 게임의 말과 자리가 통째로 광고로 돌아온다.
  2. app/android/app/build.gradle 의 dependencies 에 implementation 'com.google.android.gms:play-services-ads:23.6.0'
  3. AndroidManifest.xml 의 <application> 안에 앱 ID 를 meta-data 로, 그리고 AD_ID 권한. 앱 ID 를 빠뜨리면 앱이 켜자마자 죽는다 — 애드몹이 일부러 그렇게 해 두었다.
  4. MainActivity.java 의 Natmal 클래스에 showAd(String unitId) 를 더한다. 끝나면 webView.evaluateJavascript("window.__nmAdDone(true)"). 공유 때와 같은 길이다 — Capacitor 플러그인을 쓰지 않는다.

게임 쪽에 이미 서 있는 것들 — 고칠 일이 없고, 어디 있는지만 알아 두면 된다.

index.html:2762   ADS_LIVE       AD_UNIT 에 매달려 있다. 손대지 말 것
index.html:2789   AD_T           「선물」 ↔ 「광고」 말을 가르는 표
index.html:5750   AD_WATCH_DAY   하루 여섯 편
index.html:6944   watchAds()     광고 N편을 이어서 틀고, 다 본 뒤에만 돌려준다
index.html:2778   NOADS_SKU = 0  ← 이것만은 따로. 값을 다시 매기기 전에 열지 말 것

app/src/native.js:552  AD_UNIT        ★ 여기 한 줄
app/src/native.js:555  __nmAdDone()   자바가 부를 자리
app/src/native.js:560  NativeAds      available() · rewarded()
시험할 때는 반드시 시험용 ID 로

제 광고를 제가 누르면 계정이 정지된다. 되돌릴 길이 거의 없다. 구글이 주는 시험용 단위 ID(ca-app-pub-3940256099942544/5224354917)로 먼저 돌리고, 올리기 직전에만 진짜 ID 로 바꾼다.

되돌릴 것

Play 에 다시 알려야 하는 것 넷

그 자리를 찾는 데 네 번 헤맸다 — 적어 둔다

「앱 콘텐츠」는 「Google Play로 보호됨」 아래가 아니다. 왼쪽 메뉴를 한참 내려가 「모니터링 및 개선」 묶음 안에 있다.

왼쪽 메뉴 → 모니터링 및 개선 → 정책 및 프로그램 → 앱 콘텐츠
                                                   └ 「조치됨」 탭

이미 선언을 마친 항목은 「해야 할 일」이 아니라 「조치됨」 쪽에 들어가 있다.
거기서 줄마다 「관리」를 눌러 고친다.

    개인정보처리방침 · 앱 액세스 권한 · 광고 · 콘텐츠 등급
    타겟층 및 콘텐츠 · 데이터 보안 · 광고 ID

바로 가는 주소 (확인됨)

    https://play.google.com/console/u/0/developers/6811852006816293218
        /app/4972558265923936224/app-content/overview

조각은 app-content 가 아니라 app-content/overview 다. 뒤의 overview 를
빼면 /home 으로 튕긴다 — 그래서 세 번 헛다리를 짚었다.

    developerId  6811852006816293218
    appId        4972558265923936224

어제 광고가 없다고 선언했다. 붙이는 날 같은 판에 되돌려야 한다. 코드만 바꾸고 선언을 안 바꾸면 거짓 선언이고, 그건 앱 정지 사유다.

①
앱 콘텐츠 → 광고

「예, 앱에 광고가 있습니다」로. 스토어에 「광고 포함」 딱지가 다시 붙는다.

②
앱 콘텐츠 → 광고 ID

「예」로. 그리고 매니페스트에 com.google.android.gms.permission.AD_ID 권한이 있어야 한다.

③
개인정보처리방침

docs/privacy.html 에 광고 식별자를 수집한다는 문구를 더한다. 안 적으면 심사에서 걸린다.

④
데이터 보안

「기기 또는 기타 ID」를 수집함 · 광고 목적으로 고친다.

미리 아는 것

덫

덫 하나
「광고 없애기」 상품을 그대로 열면 안 된다
지금 적혀 있는 것
광고로 받던 옥을 하루 세 알씩 영영 대신 준다.
셈
한 해면 1,095알이다. 옥 한 자루(55알)가 5,500원이니 11만 원어치를 한 번 내고 영영 받는다. 어떤 값을 매겨도 안 맞는다.
어떻게
광고를 붙이는 날 값과 기간을 같이 정한다. 영구가 아니라 한 해로 끊거나, 옥을 얹지 말고 광고만 없애거나.
덫 둘
아동 대상으로 잘못 표시하면 단가가 반이 된다
무엇
낱말산은 전체이용가지만 아동 대상 앱은 아니다. 대상은 한글을 읽는 어른이다.
왜
아동 대상으로 표시하면 맞춤 광고가 꺼져 단가가 크게 떨어진다. Play 의 「타겟층 및 콘텐츠」에서 13세 이상이 들어가 있는지 본다.
덫 셋
제 광고를 제가 누르면 끝이다
무엇
개발자가 제 앱 광고를 누르는 것. 시험이라도 안 된다.
결과
계정 정지. 그동안 쌓인 수익도 사라지고, 같은 사람 이름으로는 다시 못 만든다. 되돌린 사례가 거의 없다.
막는 법
시험용 단위 ID 로만 돌린다. 네 폰을 애드몹의 테스트 기기로 등록해 둔다.
덫 넷
첫 돈은 두 달 뒤에 온다
차례
주소 확인 PIN 우편 2~4주 → 10달러 넘으면 지급 대상 → 그달 수익은 다음 달 21일경 지급 → 최소 지급액 100달러.
뜻
오늘 붙여도 손에 쥐는 것은 빨라야 두 달 뒤다. 그래서 지금 시작하는 것이다.