본문 바로가기
사원 모아 사장

애플 앱스토어 리젝 사유 정리

by samosa 2024. 8. 15.

최종 승인이 나기까지 총 4번의 리젝이 있었다. 그래서 예상보다 몇 주 출시가 늦어졌다.

오늘은 이후 시행착오를 줄이기 위해 그 사유들을 정리해본다.

사유별 제목은 그냥 내가 결론을 정리해서 붙였다!

1. "베타"라는 표현을 모든 곳에서 제거하세요.

Guideline 2.2 - Performance - Beta Testing


Your app appears to be a pre-release, test, or trial version with a limited feature set. Apps that are created for test or trial purposes are not appropriate for the App Store.

Specifically, your app includes "베타" in the App's name displayed on the device.

Next Steps

To resolve this issue, please complete, remove, or fully configure any partially implemented features. If your app is not ready for public distribution, use TestFlight to test your app.

베타라는 표현이 어디에 있었는고 하니, 포스트 프로세스 빌드 시 추가했던  info.plist에 숨어있었다.

 

2. 디버그용 콘솔 창을 제거하세요.

Guideline 2.1 - Performance - App Completeness

(a) Submissions to App Review, including apps you make available for pre-order, should be final versions with all necessary metadata and fully functional URLs included; placeholder text, empty websites, and other temporary content should be scrubbed before submission. Make sure your app has been tested on-device for bugs and stability before you submit it, and include demo account info (and turn on your back-end service!) if your app includes a login. If you are unable to provide a demo account due to legal or security obligations, you may include a built-in demo mode in lieu of a demo account with prior approval by Apple. Ensure the demo mode exhibits your app’s full features and functionality. We will reject incomplete app bundles and binaries that crash or exhibit obvious technical problems.

Issue Description

The app exhibited one or more bugs that would negatively impact App Store users.

Bug description: The app showed debug screen when screen was tapped with three fingers.

Review device details:

- Device type: iPad Air (5th generation)
- OS version: iOS 17.6

Next Steps

Test the app on supported devices to identify and resolve bugs and stability issues before submitting for review.

If you are unable to reproduce the bug, try the following:

- For new apps, uninstall all previous versions of your app from a device, then install and follow the steps to reproduce.
- For app updates, install the new version as an update to the previous version, then follow the steps to reproduce.

ㅎㅎㅎ이걸 찾았군! 손가락 세 개 누르면 디버그 창이 뜨는 개발용 기능이 있었는데, 이걸 제거하라는 내용이다.

 

3. 타사의 개인정보제공동의 요청을 제거하세요.

Guideline 5.1.1 - Legal - Privacy - Data Collection and Storage


You collect data to track after the user selects "Ask App Not to Track" on the App Tracking Transparency permission request.

Specifically, we noticed the app accesses web content you own and collects cookies for tracking after the user asked you not to track them.

Next Steps

To resolve this issue, please revise the app so that you do not collect data for tracking purposes if the user does not give permission for tracking.

Alternatively, if you do not collect cookies for tracking purposes, revise the cookie prompts that appear in the app to clarify you do not track users.

Note that if the app behaves differently in different countries or regions, you should provide a way for App Review to review these variations in the app submission. Additionally, these differences should be documented in the Review Notes section of App Store Connect.

처음에는 이게 뭔고 했다. 왜냐면 개인정보활용동의 여부를 처음에 체크하라는대로 했기 때문. 알고 보니 그것 말고, 뒤에 유니티 광고를 초기화할 때 유니티 Ads 자체가 개인정보활용동의를 묻는 팝업이 또 떴던 모양이다. 내가 테스트할 때는 한 번도 안 떴는데, 국가마다 뜨는 것이 다를 수 있다는 애플의 팁. 어쨌든 이건 관련 포스팅에서 따로 다루었다.

 

4. 인앱결제 구매가 되는지 확인하세요.

Guideline 2.1 - Performance - App Completeness


We found that your in-app purchase products exhibited one or more bugs which create a poor user experience. Specifically, your app did not respond when we tapped on the in-app purchases. Please review the details and resources below and complete the next steps.

Review device details:

- Device type: iPhone 13 mini and iPad Air (5th generation)
- OS version: iOS 17.6

Next Steps

When validating receipts on your server, your server needs to be able to handle a production-signed app getting its receipts from Apple’s test environment. The recommended approach is for your production server to always validate receipts against the production App Store first. If validation fails with the error code "Sandbox receipt used in production," you should validate against the test environment instead.

이건 그냥 뭐 결제 버튼을 눌러도 반응이 안 된다는 명백한 버그라...

왜 버그가 있는 채로 심사에 올렸냐 할 수 있지만, 당시에는 이렇게 생각했다. "왜 결제가 안 되지? 아, 아직 테스트 앱이라 네이티브 결제 창이 안 뜨는 가보다."

알고보니 sandbox 계정을 만들고 그 계정으로 결제 테스트도 다 할 수 있는데, 그냥 몰랐던 거다 내가. ㅎㅎ

 

지금은 무사히 출시 후, 심사 통과에 자신이 더 붙었다 :)