사업자를 미리 낸 게 여기서 쓰였다
토이프로젝트로 만든 핫딜시트를 토스 미니앱으로 옮기고 있다. 인앱 광고를 붙이려니 사업자등록이 선행 조건이었고, 마침 사흘 전에 내둔 참이었다.

토이프로젝트로 만들어 굴리고 있는 핫딜시트를 토스 미니앱으로 옮기는 중이다. 여러 커뮤니티에 흩어진 핫딜을 자동으로 모아 보여주는 사이트인데, 웹은 유입이 SEO 하나뿐이라 아무래도 한계가 있었다.
앱인토스는 토스 앱 안에 들어가는 미니앱이다. URL을 감싸는 방식이 아니라 별도 번들을 만들어 콘솔에 올리는 구조라, 결국 앱을 하나 더 만드는 셈이었다.
수익은 인앱 광고로 잡았다. 그런데 광고를 붙이려면 사업자등록이 선행 조건이더라.
사흘 전에 낸 것이 여기서 쓰였다
AI 구독료 부가세가 아까워서 낸 사업자였다. 구독료에 붙는 10%가 아깝다는 생각 하나로 시작한 일이었고, 미니앱 광고까지 생각하고 낸 것은 아니었다.
그런데 광고 조건을 읽다 보니 사업자등록이 첫 줄에 있었다. 안 냈으면 여기서 며칠을 더 기다렸을 테니 운이 좋았다.
사업자 정보는 콘솔에 넣자마자 인증됐다. 다만 정산 정보는 아직 검토 중이다. 영업일 2~3일이라니 이번 주 안에는 나오지 싶다.
그래서 광고는 아직 테스트 ID다
정산 검토가 끝나야 콘솔에서 광고 그룹을 만들 수 있고 그때 운영 ID가 나온다. 운영 ID로 미리 테스트하면 제재 대상이라 손댈 수도 없다.
그러니 지금은 테스트 ID를 박아둔 채로 개발만 끝내뒀다. 코드에서 바꿀 것은 문자열 두 줄뿐이다.

바닥에 회색으로 비어 있는 저 자리가 배너다. 실제 광고는 실기기에서만 나오고, 로컬에서는 저렇게 자리만 잡힌다.
붙이는 것보다 어디에 붙이냐가 어려웠다
광고 넣는 것 자체는 SDK가 다 해준다. 컨테이너 하나 만들어서 attachBanner에 넘기면 끝이다.
문제는 배치였다. 처음에는 목록 전체에 슬롯을 하나만 뒀는데, 카드를 150장 넘게 내려도 노출이 1회에 그쳤다. 무한 스크롤은 내려간 만큼 이미 지나온 구조라, 붙어 있는 슬롯 하나는 결국 한 번 지나가고 끝이었다.
그래서 8번째 카드 앞부터 20장마다 하나씩 넣었다. 20장이면 배너 사이가 최소 1850px이라 두 배너가 한 화면에 같이 들어오는 일이 물리적으로 없다. 같은 화면에 같은 포맷 두 개는 정책 위반이라 이걸 간격으로 보장한 셈이다.
시트로 덮인 배너를 어떻게 할 것인가
딜을 누르면 상세가 바텀시트로 올라와 목록을 통째로 덮는다. 그 뒤에 가려진 배너가 계속 노출로 잡히는 게 마음에 걸렸다. 사람이 못 본 광고를 봤다고 세는 것이니까.
떼면 되겠다 싶어 떼봤다. 그랬더니 시트를 다섯 번 여닫는 동안 광고 요청이 여섯 번 나가고 노출은 한 번이었다. 여닫을 때마다 새로 붙느라 요청만 늘었다.
결론은 떼지 말고 숨기는 것이었다. 슬롯은 그대로 두고 화면에서만 뺀다.
여기에 함정이 둘 더 있었다. 숨은 채로 부착하면 0×0 박스에 광고가 붙어버리고, 숨기면서 자리까지 없애면 문서가 줄어 목록 스크롤이 밀린다. iOS 웹뷰에는 스크롤 앵커링이 없어 브라우저가 보정해주지도 않는다.
한 줄이면 될 것 같던 게 주석이 스무 줄이 됐다.
검토가 세 가지라는 걸 늦게 알았다
앱정보 검토, 번들 검수, 앱 출시가 각각 다른 단계다. 이걸 하나로 알고 있다가 한 번 헛다리를 짚었다.
앱정보 검토는 이름과 아이콘과 설명을 보는 것이고, 이게 통과해야 코드를 심사하는 번들 검수를 요청할 수 있다. 그 전에는 요청 자체가 막힌다. 출시는 또 그다음이고 콘솔 웹에서만 된다.
앱정보 검토는 오늘 승인이 났다. 번들 검수는 아직 안 냈다.
노출이 될까
여기까지 왔는데 정작 자신이 없는 건 이쪽이다. 초창기에는 미니앱이 몇 개 없어서 올리기만 해도 눈에 띄었다는데, 지금은 앱이 꽤 많아졌다.
핫딜이라는 소재가 토스 안에서 먹힐지도 모르겠다. 아무래도 이미 커뮤니티에서 핫딜을 보는 사람은 굳이 여기까지 오지 않을 것 같고.
여하튼 정산 정보 검토가 끝나면 광고 그룹을 만들고 번들 검수를 넣을 생각이다. 그 뒤는 심사가 얼마나 걸리는지 봐야 알겠지. 떨어지면 그것대로 쓸 글이 하나 생기는 셈이고.