광고 없는 앱에 「광고 포함」이 붙어 있었다 — 「오늘 누가 쏘냐?」 스토어에 적는 것들
프로덕션 스토어 페이지에 「광고 포함」이 붙어 있었다. 앱에는 광고 SDK 가 한 줄도 없는데. 앱 콘텐츠 선언, 대상 연령, 앱 이름과 설명, 스크린샷 여덟 장까지, 코드가 아니라 스토어에 적는 말을 앱과 맞춘 이야기다.
애드소프트 기술블로그
애드소프트 박재호입니다. IIS·ASP.NET 웹 서비스와 메일서버를 직접 운영하고, Unity 게임과 데스크톱 앱을 만들며 겪은 문제와 해결 과정을 기록합니다.
프로덕션 스토어 페이지에 「광고 포함」이 붙어 있었다. 앱에는 광고 SDK 가 한 줄도 없는데. 앱 콘텐츠 선언, 대상 연령, 앱 이름과 설명, 스크린샷 여덟 장까지, 코드가 아니라 스토어에 적는 말을 앱과 맞춘 이야기다.
프로덕션에 올릴 AAB 를 다 만들어 놓고 Play Console 출시 전 보고서를 열었더니 권장 조치가 두 개 붙어 있었다. 세로 고정을 풀라는 것과 R8 을 켜라는 것. 둘 다 체크박스 하나면 끝날 것 같았는데, 하나는 게임의 성격과 부딪혔고 다른 하나는 C# 에서 문자열로 부르는 Java 클래스가 걸렸다.
프로덕션 첫 출시용 출시 노트와 신청 답변까지 써 두고 콘솔을 열었더니, 프로덕션에는 이미 1.7 이 나가 있었다. 첫 출시가 업데이트로 바뀌면서 출시 노트를 다시 고르고, 버전 코드 12 를 버리고 13 으로 다시 빌드하고, 개인정보 처리방침을 앱보다 먼저 올리는 스크립트를 만들었다.
렌더러가 죽은 WebView 를 살려 냈더니, 살아난 WebView 가 같은 페이지를 열고 또 죽었다. TWA 시절 Chrome 이 조용히 처리하던 크래시, 인증서 오류, 상태바, 뒤로가기, 쿠키를 앱이 하나씩 떠안게 된 이야기이자 연재의 마지막 편이다.
WebView 로 옮긴 A/S 관리 앱에서 '푸시 알림 받기'를 켜도 아무 일도 일어나지 않았다. 브라우저가 대신 해 주던 웹 푸시가 WebView 에는 없었다. FCM 과 JS 브리지로 웹과 앱 사이에 다리를 놓고 나서야, 그 다리가 내가 부르지 않은 프레임에까지 놓여 있다는 걸 알았다.
A/S 관리 앱에서 엑셀 내보내기 버튼을 눌렀다. 오류도, 알림도, 파일도 없었다. 브라우저에서는 멀쩡히 내려받던 파일이 WebView 안에서는 갈 곳을 잃고 있었고, 그 길을 내다 보니 새 창 링크와 동영상 전체 화면까지 손보게 됐다.
WebView 에 주소만 넣고 띄운 앱에서 사진 올리기를 누르면 아무 일도 일어나지 않는다. TWA 시절에는 Chrome 이 말없이 해 주던 일이었다. 링크를 누가 열지, 파일 선택 창과 카메라를 누가 띄울지, 위치를 누가 물을지 하나씩 앱이 떠맡은 이야기다.
앱은 멀쩡했다. 그런데 Play 비공개 테스트가 TWA 로 만든 앱의 접수를 멈췄다. Chrome 이 대신 그려 주던 앱을 WebView 로 다시 지으면서, 같은 Play 앱으로 업데이트되게 하려고 바꾸지 않은 이름들과 Chrome 이 말없이 해 주던 일들을 정리했다.
Play 검토자는 내 앱을 처음 보는 사람이고, 빈 화면을 보면 기능이 없다고 판단한다. 그래서 검토자가 쓸 계정에 레시피부터 채워 넣었다. 웹 서비스를 스토어에 올리고 나니 도메인 증명, 정책 페이지, 간편가입, 앱 푸시, 배포 자동화까지 '그 바깥'의 일이 줄줄이 따라왔다.
서버에서는 고쳤고 PC 에서도 고쳐졌는데, 폰에서는 호박 수프 카드에 여전히 카야 토스트 그림이 붙어 있었다. 범인은 오프라인을 위해 넣은 서비스 워커였고, 그 서비스 워커를 갱신하려고 만든 장치가 정작 폰에만 닿지 않고 있었다.