고양이와 마법상점은 처음부터 구글 플레이와 앱스토어에 동시 출시를 할 생각을 하고 개발을 진행했습니다.
9월 15일에 안드로이드 버전을 출시한 뒤 바로 아이폰 버전으로 빌드하고 앱스토어에 업로드 하면서 지난 8개월 가량의 고생이 끝나는 것처럼 보였지요. 그랬던 아이폰 버전 앱이 세 번이나 리젝되고 일주일동안 절 고생 시킬 것이라고는 상상하지 못했습니다.
앱스토어에 앱을 등록할 때 요구하는 각종 리소스(앱 설명, 스크린샷 등...)들은 구글 플레이와 미묘하게 다르기 때문에 모두 새로 준비를 해야해서 여간 번거로운 일이 아닙니다. 예를 들어 스크린샷의 경우 6.5인치와 5.5인치 디스플레이에 맞는 스크린샷을 각각 준비해야 하며 해상도는 각각 2688x1242와 2208x1242로서 기존의 구글 플레이서 사용했던 스크린샷을 사용할 수 없는 해상도를 가지고 있지요. 이런 사소한 것들을 하나씩 모두 대응을 하고 출시를 위해 심사에 제출했습니다.
어느 정도는 예상했던 첫 번째 리젝
'한 번에 통과하면 대박이고 웬만하면 한 번쯤은 리젝을 당하겠지' 싶은 마음을 가지고 있었습니다. 출시 후 하루 정도 지나니 바로 심사가 됐네요. 역시나 리젝을 당했습니다.
Guideline 2.1 Performance App Completeness 항목에서 설명하는 것은, 앱결제 상품이 있는데 심사를 위해 해당 상품을 제출하지 않았다는 뜻입니다. 인앱 결제가 구현 되어 있다면 첫 번째 앱 심사 시 '앱 내 구입을 함께 제출'해야 합니다. 이게 무슨 소리인가 하니 새로운 인앱결제 상품이 등록 될 땐 해당 상품에 대해 '이러한 인입결제 상품이 있으니 함께 심사해주세요'라고 애플에게 알려줘야 한다는 것입니다. 예전에는 이런 절차가 없었던것 같은데 뭔가 낯설다는 생각이 드네요. 앱 내 구입 제출에 대한 자세한 사항은 App Store Connect 도움말에 잘 나와 있습니다. 클릭 몇 번으로 끝나는 절차이니 바로 처리 해줬습니다.
Guideline 2.3.3 Performance Accurate Metadata는 앱 미리보기 스크린샷이 충분한 정보를 가지고 있지 않다는 뜻입니다. 충분한 정보라는 말이 상당히 모호하네요. 추가 내용을 더 읽어보니 실제 기기에서 구동 시킨것과 같은 인게임 화면이 보여야 한다는 것입니다. UI가 포함 되지 않은 것도 리젝 사유에 한 몫을 하는 것 같네요. 기껏 스크린샷을 다 만들어놨더니 귀찮은 일이 생겼네요. 모든 스크린샷을 다 바꾸기엔 시간이 많이 걸려서 하나의 스크린샷만 UI를 추가해서 다시 촬영했습니다.
몇 시간만에 날라온 두 번째 리젝
앱을 업로드 하고 잠시 여유를 가지고 있었는데 순식간에 두 번째 리젝이 날아왔습니다. 한 번 앱을 올리면 일주일씩 심사를 하던 예전의 애플이 아니네요. 이번엔 친절하게 몇 자를 더 적어 줬습니다.
위반 항목은 같은데 세부 내용이 조금 달라졌습니다.
다시 날아온 Guideline 2.1 Performance App Completeness에서는 인앱 결제 버튼을 눌렀을때 정상적으로 동작을 하지 않는다는 내용이었습니다. 인앱 결제를 테스트해보니 정상적으로 동작해서 도대체 뭐가 문제인지 알 수가 없더라구요. 다시 테스트를 해보니 인앱결제 시 모든 결제 프로세스를 완료한 뒤에 3초정도 시간이 지나야 결제가 반영 되더라구요. 설마 이것 때문인가 싶어서 아래와 같이 진행 아이콘을 추가했습니다.
Guideline 2.3.3 Performance Accurate Metadata는 같은 내용으로 날아왔는데 도통 왜 그런지 모르겠더라구요. 실제 UI가 들어간 스크린샷을 추가했는데 왜??? UI가 포함된 스크린샷을 하나 더 추가했습니다.
그리고 못 보던 위반 항목인 Guideline 3.1.1 - Budiness - Payments - In-App Purchase가 생겼습니다. 내용을 살펴보니 '구매 복원 버튼이 없다' 라는 것이 주된 이유였습니다. 이 점은 구글 플레이와 가장 큰 차이점입니다. 구글 플레이는 앱을 삭제했다가 다시 설치해도 별도의 처리 없이 구글 플레이 계정을 이용하여 이전에 구매했던 내용을 자동으로 복원해줍니다. 하지만 앱스토어의 경우 사용자가 '구매 복원' 버튼을 눌러서 별도의 구매 복원 프로세스를 진행해야합니다. 이로 인해 구매 복원 버튼을 요구하는 것이지요.
구매 복원 기능은 Unity 공식 문서를 참고해서 구현할 수 있습니다. 이 부분에 대해서는 별도로 포스팅을 올리도록 할게요.
오늘도 '리젝 사유들을 제발 좀 한번에 알려주지...'라는 불평불만을 하면서 내용들을 수정했습니다. 본업을 하느라 바빠서 대응 시간이 일주일이나 더 걸렸습니다. 수정이 완료 된 뒤에는 제발 좀 통과하자는 마음으로 다시 심사에 올렸습니다.
슬슬 열받게 했던 세 번째 리젝
세 번째 심사는 출근 직전에 올렸는데 회사에 도착해보니 리젝이 되었다는 메시지를 받았습니다. 애플 답지 않게 정말 빠르네요. 리젝 사유는 다음과 같습니다.
또 Guideline 2.3.3 Performance Accurate Metadata 항목을 위반했다는 내용이었습니다. 구체적으로 뭐가 위반을 했는지는 안 알려주네요. 위반 사항이 포함됐다고 하는 스크린샷만 몇개 추가해줬는데 제 눈에는 도대체 뭐가 문제인지 모르겠습니다. 이쯤되니 저도 열받아서 문의를 넣었습니다.
앱스토어에 올라간 다른 게임들을 예시로 들면서 '저 게임들이랑 나랑 무슨 차이가 있냐' 라는 질문을 했습니다. 대부분의 유명 게임들은 컨셉아트 위주로 있거나 UI가 없는 게임 화면을 미리보기 스크린샷으로 많이 사용했습니다. 도대체 뭐라고 답변을 할지, 의미있는 답은 들을 수 있는지 궁금해하면서 질문을 넣었네요.
두 시간만에 답변이 왔습니다! 사실 거의 비슷한 내용이 대부분이라 읽으면서 속으로 욕을 했는데요, 한 문장이 눈에 들어왔습니다.
Specifically, majority of the screenshots display zoomed in images of the game versus the actual UI.
그러고보니 스크린샷을 만들때 시간 단축을 위해서 한 장의 스크린샷을 촬영하고 포토샵으로 크롭을 해서 6.5인치와 5.5인치 스크린샷을 만들었습니다.
앱스토어에 올라가는 스크린샷은 '실제 기기에서 동작하는 모습'이 반드시 하나 이상을 포함이 되어야 한다는 것입니다. 그런데 5.5인치 스크린샷의 경우 UI가 없는것은 물론이고, 만일 실제 기기에서 동작하는 모습이라면 저렇게 완벽하게 같은 두 장면이 나올 수가 없을 것입니다. 애플 측에서도 제가 올린 스크린샷이 6.5인치에서 촬영한 것을 단순 확대한 것으로 보인다고 지적을 한 것입니다.
그래서 UI와 함께 실제 기기와 동일한 환경의 시뮬레이터 상에서 동작을 시킨 뒤 스크린샷을 촬영했습니다. 모든 스크린샷 생성을 마치고 다시 심사를 위해 제출했습니다.
드디어 심사 통과!
이렇게 모든 수정사항을 거치니 심사를 통과하고 앱이 스토어에 업로드 되었습니다.
https://apps.apple.com/us/app/cats-magic-shop-idle-clicker/id1644780936
다 거치고 보니 별로 어려운 일들이 아닌데, 애플 심사 특성상 규정이 까다롭고 리젝 사유를 굉장히 불분명하게 말해주기 때문에 핑퐁을 자주 해서 시간 소모가 많이 됩니다. 그 때문에 앱스토어에 앱을 올리는건 더 피곤하고 힘든 일인 것 같다는 생각이 드네요.
과거 전설의 용병단 때 앱스토어에 업로드 하면서 이렇게 힘든 과정을 거쳤는데 2년만에 다시 업로드를 하다보니 똑같은 삽질을 또 하면서 고생한것 같네요. 그래도 이번에 이렇게 고생을 했으니 다음에는 한 번에 심사를 통과시킬 수 있지 않을까 하는 자신감이 생깁니다.
이제는 앱을 출시할때마다 반드시 안드로이드랑 아이폰을 함께 출시하면서 꾸준이 앱스토어 출시 감각을 유지해야 할 것 같습니다.