반응형
해당 글에서는 이전 글에서 App Store Connect에서 구성한 앱과 Archive 된 파일을 기반으로 실제 App Store에 심사를 요청하는 과정에 대해 알아봅니다.
💡 [참고] Android / iOS에 각각 앱을 배포하는 과정에 대해 궁금하시면 아래의 글을 참고하시면 도움이 됩니다.
플랫폼 | 분류 | 링크 |
Android | React Native Google Play Store 등록 방법 -1 : 초기 환경 설정 | https://adjh54.tistory.com/301 |
Android | React Native Google Play Store 등록 방법 -2 : Google Play Console 설정 | https://adjh54.tistory.com/306 |
Android | React Native Google Play Store 등록 방법 -3 : Google Play Console 프로덕션 설정 | https://adjh54.tistory.com/307 |
iOS | React Native App Store 등록 방법 -1 : 앱 Archive 및 TestFlight 구성 | https://adjh54.tistory.com/537 |
iOS | React Native App Store 등록 방법 -2 : App Store 배포 심사 준비 + 사전 대비 | https://adjh54.tistory.com/543 |
💡 이전에 작성한 글에 이어지는 내용입니다.
1) App Store
💡 App Store
- 애플(Apple)사가 운영하는 디지털 애플리케이션 유통 플랫폼입니다.
- iOS, iPadOS, macOS, watchOS 및 tvOS 애플리케이션을 다운로드하고 설치할 수 있는 공식 마켓입니다.
💡 기본적으로 Apple Developer를 통해서 가입이 되어야 개발을 진행할 수 있기에 가입이 모두 되었다는 전제로 진행을 합니다.
2) [App Store Connect] iOS 앱 설정
1. [iOS 앱 > iOS 앱 버전 1.0 > iOS 미리보기 및 스크린샷] AppStore에 추가될 사진들을 업로드합니다.
💡 [iOS 앱 > 1.0 제출 준비중 탭 > iOS 미리 보기 및 스크린샷] AppStore에 추가될 사진들을 업로드합니다.
- 최신 기기의 스크린샷을 추가하면 App Store에서 앱의 사용자 경험을 더 정확하게 보여 줄 수 있습니다.
- 스크린샷은 모든 iOS 디스플레이 크기 및 현지화에 사용됩니다. 스크린샷은 iOS 앱에만 필요합니다.
iPhone / iPad | 사이즈 | 필요 사항 |
iPhone 6.7 디스플레이 | 1290 x 2796px 또는 2796 x 1290px | 최대 3개의 앱 미리보기와 10개의 스크린샷을 여기로 드래그하십시오. |
iPhone 6.5 디스플레이 | 1242 x 2688px, 2688 x 1242px, 1284 x 2778px 또는 2778 x 1284px |
최대 3개의 앱 미리보기와 10개의 스크린샷을 여기로 드래그하십시오. |
iPhone 5.5 디스플레이 | 1242 x 2208px 또는 2208 x 1242px | 최대 3개의 앱 미리보기와 10개의 스크린샷을 여기로 드래그하십시오. |
iPad13 디스플레이 | 2064 x 2752px, 2752 x 2064px, 2048 x 2732px 또는 2732 x 2048px |
최대 3개의 앱 미리보기와 10개의 스크린샷을 여기로 드래그하십시오. |
iPad Pro(2세대) 12.9 디스플레이 | 2048 x 2732px 또는 2732 x 2048px | 최대 3개의 앱 미리보기와 10개의 스크린샷을 여기로 드래그하십시오. |
💡 App Store에서 아래와 같은 화면 출력되는 영역에 대한 미리보기 및 스크린샷입니다.
💡 [참고] 이전에 심사 과정 중 이와 관련되어서 문제가 발생했던 적이 있습니다.
- 각각의 스크린샷은 iPhone에 대해서는 iPhone 기기에서 촬영되어야 하며, iPad인 경우에 대해서는 iPad에 대해 촬영되어야 한다라고 심사 중 거절이 발생했던 적이 있습니다.
2. [iOS 앱 > iOS 앱 버전 1.0 > iOS 미리 보기 및 스크린샷] App Store 내에 출력될 미리 보기 내용을 작성합니다.
분류 | 설명 | 팁 |
프로모션 텍스트 | 프로모션 텍스트를 사용하면 업데이트된 사항을 제출하지 않고 현재 앱 기능을 App Store 방문자에게 알릴 수 있습니다. 프로모션 텍스트는 iOS 11 이상 또는 macOS 10.13 이상이 설치된 기기를 사용하는 경우 App Store의 앱 설명 위에 표시됩니다. | 더 보기 버튼을 누르지 않은 상태에서 보이는 텍스트들을 의미합니다 |
설명 | 앱의 특징과 기능에 대한 자세한 설명입니다. | 더 보기 버튼을 눌러서 나오는 앱에 대한 설명이 보여지는 텍스트를 의미합니다 |
키워드 | 앱을 설명하는 하나 이상의 키워드를 포함하십시오. 키워드를 사용하면 App Store 검색 결과의 정확도를 높일 수 있습니다. 쉼표, 중국어 쉼표 또는 두 쉼표 모두 사용하여 각 키워드를 구분할 수 있습니다. | 쉼표를 기준으로 앱에 검색 결과로 나타낼 정보들을 입력합니다. |
지원 URL | 앱에 대한 지원 정보가 포함되어 있는 URL입니다. App Store에 앱을 출시한 후 앱 제품 페이지에서 볼 수 있습니다. | 앱의 지원정보가 포함된 사이트 링크 |
마케팅 URL | 앱에 대한 마케팅 정보가 포함되어 있는 URL입니다. 이 URL은 App Store에 표시됩니다. | 앱의 마케팅 정보가 포함된 사이트 링크 |
버전 | 추가 중인 앱의 버전입니다. 번호를 매길 때에는 소프트웨어 버전 관리 규칙을 따라야 합니다. | 시작하려는 버전을 의미하며 일반적으로 시멘틱 버저닝(메이저.마이너.패치)형태로 구성을 합니다. |
저작권 | 앱에 대해 독점 권한을 가진 개인 또는 법인의 이름으로, 앞에 권한을 획득한 연도가 옵니다(예: ‘2008 Acme Inc.’). URL을 제공하지 마십시오. | 개인 혹은 법인의 이름 |
라우팅 앱 적용 범위 파일 | 앱에서 지원하는 대륙별 지역을 지정하십시오. 파일은 .geojson 포맷이어야 하고 하나의 멀티폴리곤 요소만 포함할 수 있습니다. |
💡 [참고] 각각의 영역에 대해서는 공식 사이트 글을 확인하시면 각각에 대해 보이는 곳을 확인할 수 있습니다.
💡 [참고] 이전에 심사 과정 중에 이와 관련되어 문제가 발생했던 적이 있습니다
- 아래의 내용은 '설명' 부분에 안드로이드에 대한 언급 내용이 포함되어 있었고, 이에 대해 불필요한 내용이라고 심사에서 거절을 당했던 적이 있으니 참고하시면 좋을 것 같습니다.
3. [iOS 앱 > iOS 앱 버전 1.0 > 앱 클립, iMessage 앱, Apple Watch] 해당되지 않아 제외하였습니다.
💡 [iOS 앱 > iOS 앱 버전 1.0 > 앱 클립, iMessage 앱, Apple Watch]
- 해당 부분은 포함되지 않아서 제출하지 않았습니다.
4. [iOS 앱 > iOS 앱 버전 1.0 > 빌드] 이전에 올린 빌드 파일을 업로드합니다.
💡 [iOS 앱 > iOS 앱 버전 1.0 > 빌드] 이전에 올린 빌드 파일을 업로드합니다.
- 이전에 XCode 내에서 Archive 한 빌드 파일을 선택하고 업로드해줍니다.
5. [iOS 앱 > iOS 앱 버전 1.0 > 앱 심사 정보] 각각에 항목에 대해 입력합니다.
💡 [iOS 앱 > iOS 앱 버전 1.0 > 앱 심사 정보] 각각에 항목에 대해 입력합니다.
- 심사자가 테스트를 위해 필요한 정보들에 대해서 입력합니다.
앱 심사 정보 | 설명 | 팁 |
로그인 정보 | 로그인 정보는 앱 로그인에 사용할 수 있는 사용자 이름과 암호를 뜻하며 앱의 모든 기능을 심사하기 위해 사용됩니다. 사용자가 소셜 미디어를 사용하여 로그인하는 경우 사용할 수 있는 계정 정보를 제공하십시오. 계정 정보는 심사 기간 내 유효하며 활성화된 상태여야 합니다. | 심사자들을 위한 계정을 제공하기 위해 로그인 정보를 작성합니다. (*실제 로그인이 되는 계정이 전달되어야 합니다) |
연락처 정보 | 앱 심사 팀에서 궁금한 점이 있거나 추가 정보를 필요로 할 경우에 연락할 조직의 담당자입니다. | 심사자들이 궁금한점 혹은 추가 정보가 필요하는 경우 연락을 할 담당자 정보입니다 |
메모 | 심사 과정 중에 도움이 될 만한 앱에 대한 추가 정보입니다. 앱별 설정처럼 앱을 테스트하는 데 필요할 수 있는 정보를 포함하십시오. | 심사자들이 심사를 하는 동안에 추가적인 이해를 돕기위해 제공하는 정보입니다 |
첨부파일 | 앱 심사 과정 중에 지연을 방지하기 위해 특정 앱 문서, 데모 비디오 및 기타 항목을 첨부할 수 있습니다. 확장자가 .pdf, .doc, .docx, .rtf, .pages, .xls, .xlsx, .numbers, .zip, .rar, .plist, .crash, .jpg, .png, .mp4, 또는 .avi인 파일을 사용하십시오. | 심사자들이 좀 더 쉽게 테스터를 할 수 있도록 하기 위해 관련 정보를 전달합니다. |
💡 [참고] 이전에 심사 과정 중에 이와 관련되어 문제가 발생했던 적이 있습니다
- 심사자가 실제 테스트를 하는 과정에서 회원가입을 수행할 때, PASS를 이용하여서 전화번호 인증을 하는 과정이 있었습니다.
- 해당 과정에서는 실제 회원가입을 진행할 수 없기에 회원가입이 처리되는 과정을 영상으로 포함이 되어야 한다라고 이야기를 하고 있습니다.
6. [iOS 앱 > iOS 앱 버전 1.0 > App Store 버전 출시] 버전 출시에 사용할 방법을 지정합니다.
💡 [iOS 앱 > iOS 앱 버전 1.0 > App Store 버전 출시] 버전 출시에 사용할 방법을 지정합니다.
- App Store에서 심사에 대한 승인을 받자마자 바로 출시할 것인지 아니면 나중에 App Store에서 수동으로 선택하여 출시할 것인지에 대한 선택 부분입니다.
출시 방식 | 설명 |
자동 출시 | 앱이 App Store 심사 팀의 승인을 받은 즉시, 자동으로 출시되는 옵션입니다. 승인되면 별도의 조치 없이도 앱이 배포됩니다. |
수동 출시 | 개발자가 앱 심사 팀의 승인을 받은 후, 직접 App Store Connect에서 출시 버튼을 눌러야 하는 방식입니다. |
3) 일반 정보 > 앱 정보 설정
1. [일반 정보 > 앱 정보 > 일반 정보] 설정
분류 | 설명 | 팁 |
이름 | 앱을 다음에 제출할 때 이름을 심사합니다. | 실제 App Store에 노출되는 앱 이름입니다. |
부제 | App Store 제품 페이지의 앱 이름 아래에 표시되는 앱의 요약으로 30자를 넘지 않아야 합니다. | App Store 아래에 출력되는 부제입니다. |
번들 ID(사전 입력) | 번들 ID는 Xcode에 사용한 ID와 일치해야 합니다. 첫 번째 빌드를 업로드한 후에는 변경할 수 없습니다. | 최초 앱을 생성할때 지정하였던 XCode 번들아이디 입니다. |
SKU(사전 입력) | 사용자에게 표시되지 않는 앱의 고유한 ID입니다. | 최초 앱을 생성할때 지정하였던 고유 ID입니다. |
Apple ID(사전 입력) | 자동으로 생성된 해당 앱의 ID입니다. | - |
기본 언어(사전 입력) | 현지화된 앱 정보가 국가 및 지역에서 제공되지 않을 경우 기본 언어의 정보가 대신 사용됩니다. | - |
카테고리 | 이 앱을 가장 잘 설명하는 카테고리입니다. | 앱의 분류를 설정하는 카테고리입니다. |
콘텐츠 권한 | 앱에 타사 콘텐츠가 포함 또는 표시거나 타사 콘텐츠에 액세스하는 경우 해당 콘텐츠에 대한 필요한 권한을 갖고 있거나 콘텐츠 사용이 허가되어 있어야 합니다. | 타사 앱으로 콘텐츠가 액세스 되는 경우가 있으면 선택하시고 아니면 아니요를 선택합니다. |
연령 등급 | 앱의 연령 등급으로 사용자가 앱에 부적절한 콘텐츠가 포함되어 있는지 알 수 있습니다. | 각각 선택지를 선택하여 앱의 연령등급이 지정이 되는 부분입니다. |
💡 [참고] 공식 사이트 내에서 각각의 항목에 대해서 확인이 가능합니다.
💡 콘텐츠 권한을 선택합니다.
- 타사앱과 연동이 되어서 액세스 되는 경우가 있다면 선택을 하고 아니면 아니요를 선택합니다.
💡 [연령 등급] 연령 등급을 판단받기 위해 각각을 선택합니다.
2. [일반 정보 > 앱 정보 > 앱 암호화 문서] 설정
💡 [일반 정보 > 앱 정보 > 앱 암호화 문서] 설정
- Xcode에서 앱의 Info.plist 파일에 App Uses Non-Exempt Encryption 키와 앱의 암호화 사용 여부를 나타내는 불값(Boolean value)을 추가하여 암호화 사용 여부를 명시하십시오.
- 해당 경우에는 별도의 앱 암호화 문서를 사용하지 않기에 사용하지 않음으로 설정하였습니다.
💡 Info.plist 파일로 접근하여 “+”기호를 누르고 아래와 같은 항목을 추가합니다
App Uses Non-Exempt Encryption : No
💡 [참고] 또는 아래와 같이 태그 형태로 추가하셔도 됩니다.
<dict>
<key>ITSAppUsesNonExemptEncryption</key>
<false/>
</dict>
3. [일반 정보 > 앱 정보 > App Store 규정 및 허가] 디지털 서비스법 규정 준수에 따른 선택을 합니다.
4) App Store > 신뢰 및 안전
1. [앱이 수집하는 개인정보] ‘시작하기’ 버튼을 누릅니다.
2. [앱이 수집하는 개인정보 > 데이터 수집] 데이터 수집에 대해 선택합니다.
3. [앱이 수집하는 개인정보 > 데이터 수집] 예, 이 앱에서 데이터를 수집합니다. 의 경우, 수집하는 데이터를 선택합니다
카테고리 | 항목 | 설명 |
연락처 정보 | 이름 | 성 또는 이름 수집 여부 |
이메일 주소 | 해시 처리된 이메일 주소 등 수집 여부 | |
전화번호 | 해시 처리된 전화번호 등 수집 여부 | |
주소 | 예: 집 주소, 거주지 주소 또는 우편 주소 수집 여부 | |
기타 사용자 연락처 정보 | 앱 외부에서 사용자에게 연락하는 데 사용할 수 있는 기타 정보 수집 여부 | |
건강 및 피트니스 | 건강 | 건강 및 의료 데이터 - 임상 건강 기록 API, HealthKit API, 운동 장애 API, 건강 관련 인체 실험 또는 기타 사용자 제공 건강 또는 의료 데이터 등 수집 여부 |
피트니스 | 피트니스 및 운동 데이터 - 동작 및 피트니스 API 등 수집 여부 | |
재무 정보 | 지불 정보 | 지불 형식, 지불 카드 번호 또는 은행 계좌 번호. 귀사의 앱이 지불 서비스를 제공하면서 지불 정보가 앱의 외부에서 입력되고 귀사가 개발자로서 지불 정보에 전혀 접근하지 않는 경우 지불 정보는 수집되지 않으며 명시할 필요가 없습니다. |
신용 정보 | 신용 점수 수집 여부 | |
기타 재무 정보 | 월급, 수입, 자산, 부채 또는 기타 재무 정보 수집 여부 | |
위치 | 정확한 위치 | 소수점 아래 3자리 이상 해상도의 위도 및 경도로 사용자 또는 기기의 위치를 설명하는 정보 수집 여부 |
대략적인 위치 | 소수점 아래 3자리 미만 해상도의 위도 및 경도로 사용자 또는 기기의 위치를 설명하는 정보(예: 위치 추정 서비스) 수집 여부 | |
민감 정보 | 민감 정보 | 인종 또는 민족 데이터, 성적 지향, 임신 또는 출산 정보, 장애, 종교 또는 철학적 신념, 노동조합 가입, 정치적 견해, 유전 정보 또는 생체 데이터 수집 여부 |
연락처 | 연락처 | 사용자의 전화, 주소록 또는 소셜 그래프의 연락처 목록 수집 여부 |
사용자 콘텐츠 | 이메일 또는 문자 메시지 | 이메일 또는 메시지의 제목, 보낸 사람, 받는 사람 및 콘텐츠 포함 수집 여부 |
사진 또는 비디오 | 사용자의 사진 또는 비디오 수집 여부 | |
오디오 데이터 | 사용자의 목소리 또는 사운드 녹음 수집 여부 | |
게임 플레이 콘텐츠 | 게임 내 사용자 생성 콘텐츠 수집 여부 | |
고객 지원 | 고객 지원 요청 시 사용자가 생성한 데이터수집 여부 | |
기타 사용자 콘텐츠 | 사용자 생성 기타 콘텐츠 수집 여부 | |
방문 기록 | 방문 기록 | 사용자가 앱의 일부가 아닌 콘텐츠(예: 웹 사이트)를 본 정보 수집 여부 |
검색 기록 | 검색 기록 | 앱에서 수행된 검색에 대한 정보 |
식별자 | 사용자 ID | 예: 대화명, 핸들, 계정 ID, 배정된 사용자 ID, 고객 번호, 확률적 식별자 또는 특정 사용자 또는 계정을 식별하는 데 사용할 수 있는 기타 사용자 또는 계정 레벨 ID |
기기 ID | 예: 기기의 광고 식별자 또는 기타 기기 레벨 ID 수집 여부 | |
구입 항목 | 구입 항목 | 계정 또는 개인의 구입 항목 또는 구입 경향 수집 여부 |
사용 데이터 | 제품 상호 작용 | 앱 실행, 탭, 클릭, 스크롤 정보, 음악 청취 데이터, 동영상 조회, 게임에서 저장된 장소, 동영상, 노래 또는 사용자가 앱과 상호작용하는 방법에 대한 기타 정보 수집 여부 |
광고 데이터 | 사용자가 본 광고에 대한 정보 수집 여부 | |
기타 사용 데이터 | 앱에서의 사용자 활동에 대한 기타 데이터 수집 여부 | |
진단 | 충돌 데이터 | 충돌 로그 수집 여부 |
실적 데이터 | 실행 시간, 무반응률 또는 에너지 사용 수집 여부 | |
기타 진단 데이터 | 앱과 관련하여 기술 진단 측정을 위하여 수집된 기타 데이터 수집 여부 | |
주변 환경 | 환경 스캐닝 | 메시, 평면, 장면 분류 및/또는 사용자 주변 환경의 이미지 감지 등 수집 여부 |
신체 | 손 | 사용자의 손 구조 및 손 움직임 수집 여부 |
머리 | 사용자의 머리 움직임 수집 여부 | |
기타 데이터 | 기타 데이터 | 언급되지 않은 기타 데이터 유형 수집 여부 |
💡 [참고] 공식사이트에서 확인하는 개인정보 수집 사항
4. [앱이 수집하는 개인정보 > 데이터 유형] 수집되는 데이터에 대해서 상세 정보를 선택합니다.
💡 [앱이 수집하는 개인정보 > 데이터 유형] 수집 되는 데이터에 대해서 상세 정보를 선택합니다.
- 각각 수집하는 항목을 선택한 것에 대해 상세 정보를 선택합니다.
5) App Store Connect > 수익화
1. [App Store Connect > 수익화 > 가격 및 사용 가능 여부 > 가격 변경 일정] 가격 추가 버튼을 누릅니다.
💡 [App Store Connect > 수익화 > 가격 및 사용 가능 여부 > 가격 변경 일정] 가격 추가 버튼을 누릅니다.
💡 앱 가격 설정
- 기준 국가 또는 지역을 선택하고 앱에 대한 가격을 지정합니다.
2. [App Store Connect > 수익화 > 가격 및 사용 가능 여부 > 앱 사용 가능 여부] 사용 가능 여부 설정 버튼을 누릅니다.
💡 [App Store Connect > 수익화 > 가격 및 사용 가능 여부 > 앱 사용 가능 여부] 사용 가능 여부 설정 버튼을 누릅니다.
💡 출시하려는 국가를 지정합니다.
- 국내 출시만 하는 경우 "특정 국가 또는 지역" 체크 박스를 선택하고 "다음" 버튼을 누릅니다.
💡 국내에서만 선택을 하는 경우 "대한민국"을 선택하고 "확인" 버튼을 누릅니다.
6) [App Store Connect] iOS 앱 설정
1. 앱 심사 버튼을 눌러서 심사를 진행하면 과정이 완료가 됩니다.
7) 심사 이전 확인사항
1. [XCode > Supported Destinations] 지원하는 기기를 확인합니다.
💡 지원하는 기기를 확인합니다.
- XCode 내에서 앱의 기준이 되는 기기에 대해서 설정합니다. iPhone, iPad, Mac, Apple TV, Apple Vision이 있는데 이에 대해 기준으로 잡은 기기 외에 다른 것이 있다면 제외를 시켜줍니다.
2. 언어를 설정합니다.
💡 App Store 내에서 아래와 같이 나타나는 부분에 대한 설정을 ‘한국어’로 변경해 줍니다.
- 기본적으로 en(영어)로 되어 있기에 한국어가 기준이 되도록 합니다.
2.1. [info.plist] Default localization 값을 en -> Korea로 바꿔줍니다.
💡 [info.plist] Default localization 값을 en -> Korea로 바꿔줍니다.
- 아래와 같이 파일을 수정하였습니다.
2.2. [프로젝트/ios/xx.xcodeproj] 파일에 접근하여 값을 수정하여 줍니다
💡 xx.xcodeproj 파일을 오른쪽 클릭하고 '패키지 내용 보기'를 선택합니다.
💡 선택하면 아래와 같은 폴더가 출력되고 project.pbxproj를 엽니다.
💡 파일 내에서 "developmentRegion"를 검색하고 en으로 되어 있는 값을 "ko"로 수정하여 저장합니다.
💡 [참고] XCode 내에 Localizations 부분이 Korean으로 변경된것을 확인하였습니다.
💡 [참고] 해당 수정과 관련된 참고 링크
3. [plist.info] 앱 권한에 대한 설명
💡 앱 권한에 대한 설명
- 앱스토어 심사 과정에서 앱에 대한 권한 설명을 구체적으로 작성하는 것이 중요합니다. 이는 사용자가 앱을 설치하고 사용할 때 어떤 권한을 요청하는지 명확히 알 수 있도록 하기 위함입니다.
이전 설명 | 구체적인 설명 |
카메라 권한을 요청합니다 | 학습 기능에 필요한 측정을 위해 카메라 권한이 필요합니다. |
오늘도 감사합니다. 😀
반응형