이번 편의 목표: 배포용 아카이브를 만들고, 검사를 통과한 파일을 App Store Connect에 올립니다.

실행 대상을 My Mac으로 두고 앱이 창을 정상적으로 띄우는지 먼저 확인합니다. 디버그 실행이 죽는 빌드는 아카이브해도 심사에서 거절됩니다. 경고를 남긴 채 진행하지 않습니다.

메뉴 Product에서 Archive를 선택합니다. 아카이브는 배포 서명으로 앱을 묶습니다. 성공하면 Organizer 창이 열립니다. 창이 안 보이면 Window 메뉴의 Organizer를 엽니다. 방금 만든 아카이브를 선택하고 Distribute App을 누릅니다.

배포 방식은 App Store Connect입니다. 다음 화면에서 Upload를 고릅니다. 서명은 Automatically manage signing으로 둡니다. 업로드 전에 심볼을 함께 보내 두면 심사 쪽 충돌 로그를 나중에 읽을 수 있습니다. 예제에는 난독화할 비밀이 없으므로 심볼 업로드를 켜 둡니다.

Upload를 누르면 Xcode가 서명, 샌드박스, 아이콘, 번들 식별자를 검사합니다. 오류가 있으면 파일을 보내지 않습니다. 샌드박스 키가 없거나 식별자가 레코드와 다르면 이 단계에서 멈춥니다. 오류 문장을 고친 뒤 빌드 번호를 올리고 아카이브를 다시 만듭니다. 실패한 번호는 다시 쓰지 않습니다.

업로드가 끝나도 곧바로 심사 제출 단추에 빌드가 보이지 않을 수 있습니다. 애플이 바이너리를 처리하는 동안 상태가 비어 있습니다. 처리가 끝나면 계정 메일로 알림이 오고, 앱 레코드의 빌드 목록에 1.0.0 (1)이 나타납니다. 처리 실패 메일이 오면 메일 안의 사유를 고치고 빌드 2로 다시 올립니다.

터미널로 올릴 수도 있습니다. Xcode에 포함된 altool 또는 Transporter를 씁니다. 처음 한 번은 Organizer의 오류 문장이 더 읽기 쉬우므로 예제는 Xcode 업로드를 기준으로 합니다. 공식 업로드 설명은 여기에 있습니다.

TestFlight로 본인 맥에 먼저 설치해 볼 수 있습니다. 팀의 내부 테스터는 베타 심사 없이 처리가 끝난 빌드를 설치합니다. 외부 테스터에게 나누려면 베타 심사가 따로 있습니다. 예제는 내부 확인만 하고 스토어 심사로 넘어갑니다.

직접 해 보기

업로드가 끝난 뒤 App Store Connect의 해당 맥 앱에서 빌드 1이 나타날 때까지 새로 고칩니다. 처리 중이면 메일을 기다립니다. 실패 메일이 없으면 다음 편의 문장을 준비합니다.

해설

빌드가 보이는 시점은 업로드 완료가 아니라 처리 완료입니다. 1.0.0 (1)이 목록에 있으면 06편의 상품 페이지에 그 빌드를 연결할 수 있습니다.