해당 글에서는 AppStore 심사 중 발생한 App Completeness, Data Collection and Storage 해결 방법에 대해 알아봅니다.
1) Guideline 2.1 - Performance - App Completeness
1. 문제점
💡 가이드라인 2.1 - 성능 - 앱 완성도 앱이 실행 즉시 크래시(강제 종료)되어 심사를 진행할 수 없었습니다.
- 문제 해결에 도움이 될 수 있도록 상세한 크래시 로그를 첨부하였습니다.
리뷰에 사용된 기기 정보: - 기기 종류: iPhone 13 및 iPad Air (5세대) - iOS 버전: iOS 18.5 ---
다음 단계 앱의 크래시 문제를 해결하려면 다음 단계를 따라주세요: 1. 크래시 리포트를 완전히 심볼리케이션(symbolicate) 하세요. - 심볼리케이션 과정에 대한 설명은 [심볼 이름 추가하기](https://developer.apple.com/documentation/xcode/adding-identifiable-symbol-names-to-a-crash-report)를 참고하세요.
2. 크래시 리포트에서 일반적인 패턴을 파악 하세요. - 해당 패턴을 기반으로 원인을 추가로 조사하세요. - 참고: [일반적인 크래시 원인 파악하기](https://developer.apple.com/documentation/xcode/identifying-the-cause-of-common-crashes)
3. 앱을 실제 기기에서 테스트하여 크래시가 해결되었는지 확인하세요.
4. 문제가 해결된 후 새로운 빌드를 생성하여 제출 하세요.
---
참고 자료 - [크래시 리포트 및 디바이스 로그를 사용한 문제 진단](https://developer.apple.com/documentation/xcode/diagnosing-issues-using-crash-reports-and-device-logs)
---
지원
- 원하시는 언어로 이 메시지에 회신하실 수 있습니다. - 추가 지원이 필요한 경우, Contact Us 모듈을 이용하세요. - Apple Developer Forums에서 다른 개발자 및 Apple 엔지니어와 논의할 수 있습니다. - 심사 경험에 대한 의견은 간단한 설문을 통해 전달해 주세요.
2. 해결방법
💡 해결방법
- 하단에 심사 거절에 대한 .ips 파일을 다운로드 받아서 크래시로그를 확인합니다. - 실제 앱을 실행해 보았을경우, 크래시 로그로 튕김이 발생함을 확인할 수 있습니다.
2.1. 심볼리케이션 (Symbolicate) 하기
💡Xcode에서 다음과 같이 심볼리케이션합니다
1. Xcode > Window > Organizer 메뉴 진입 2. 해당 빌드 선택 → Crashes 탭에서 심사 기기와 crash 로그 확인 3. 또는 .crash 파일을 Xcode에 직접 드래그해도 분석 가능 4. dSYM 파일이 정확히 연결돼야 전체 심볼이 해독됩니다(.dSYM 누락 시: Archive 재빌드 필요)
2) Guideline 5.1.1 - Legal - Privacy - Data Collection and Storage
1. 문제점
💡 가이드라인 5.1.1 - 법률 - 개인정보 보호 - 데이터 수집 및 저장
문제 설명 - 앱 내 하나 이상의 퍼포스 스트링(purpose string, 권한 요청 이유 설명)이 보호된 리소스 사용에 대해 충분히 설명하지 않았습니다. - 퍼포스 스트링은 앱이 데이터를 어떻게 사용하는지 명확하고 구체적으로 설명해야 하며, 대부분의 경우 해당 데이터가 어떻게 사용되는지 예시도 제공해야 합니다. ---
다음 단계 카메라 접근 권한 설명(purpose string) 을 업데이트하여 앱이 해당 정보를 어떻게 사용할지 설명하고, 구체적인 사용 예시를 포함해 주세요.
첨부된 스크린샷을 참고해 주세요. ---
- 참고 자료 퍼포스 스트링은 앱이 해당 기능이나 데이터, 리소스를 어떻게 사용하는지 명확하게 설명해야 합니다. - 리뷰에 통과하지 못하는 모호한 예시는 다음과 같습니다: - "앱이 연락처에 접근하려고 합니다" - "앱이 마이크 접근 권한이 필요합니다" 자세한 예시는 아래 문서를 참고하세요: [명확한 퍼포스 스트링 예시 보기](https://developer.apple.com/documentation/bundleresources/information_property_list/nscamerausagedescription) ---
지원 - 필요하신 경우, 이 메시지에 원하시는 언어로 회신하실 수 있습니다. - 추가 지원이 필요하다면 Contact Us 모듈을 이용해 주세요. - Apple Developer Forums에서 다른 개발자 및 Apple 엔지니어와 논의할 수 있습니다. - 앱 심사 경험에 대한 의견은 간단한 설문을 통해 전달해 주세요.
---
※ 예: 카메라 권한 퍼포스 스트링 예시 “프로필 사진을 찍기 위해 카메라 접근 권한이 필요합니다. 촬영된 사진은 사용자 프로필에 표시됩니다.”
2. 해결 방법
💡 기존의 권한 요청
<key>NSCameraUsageDescription</key>
<string>사진 촬영을 위해 카메라 접근 권한이 필요합니다.</string>
<key>NSRemindersFullAccessUsageDescription</key>
<string>알림 설정을 위해 미리 알림 접근 권한이 필요합니다.</string>
💡 변경 권한 요청 : 구체적으로 변경
<key>NSCameraUsageDescription</key>
<string>로또 당첨 여부를 확인하기 위해 QR 코드를 스캔할 때 카메라 접근이 필요합니다.</string>
<key>NSRemindersFullAccessUsageDescription</key>
<string>로또 추첨일 및 구매 시간을 사용자에게 알리기 위해 알림 권한이 필요합니다.</string>