> ## Documentation Index
> Fetch the complete documentation index at: https://docs.replit.com/llms.txt
> Use this file to discover all available pages before exploring further.

# 앱을 App Store Connect에 업로드하기

> Replit의 Launch 기능을 사용해 앱을 빌드하고, 서명하고, App Store Connect에 업로드하세요.

업로드하면 앱이 App Store Connect 안에 배치됩니다. 이 시점 이전의 작업은 Apple에 보이지 않으며,
이후의 작업, 즉 TestFlight나 심사 제출은 업로드가 완료되어야만 진행할 수 있습니다.

먼저 [Apple Developer 계정](/build/mobile-apple-account)이 필요합니다.

## 업로드되는 내용

**빌드**란 실제로 설치 가능한 앱의 복사본입니다. App Store에서 받는 것과 동일한 종류의
파일이지만 아직 게시되지 않았을 뿐입니다. Expo Go는 공용 프리뷰 앱 안에서 코드를 실행하지만,
빌드는 앱을 단독으로 실행하므로 푸시 알림이나 인앱 결제 같은 기능은 이 상태에서만 동작합니다.

Replit의 **Launch** 기능이 해당 빌드를 생성하고, 서명하고,
[Publishing](/features/publishing/overview) 탭에서 업로드합니다.

<Steps>
  <Step title="먼저 웹 앱을 게시하기">
    PixelGames의 백엔드는 App Store 출시 전에 라이브 상태여야 합니다. 워크스페이스 상단에서
    **Publish**를 선택해 게시하세요.

    <Frame caption="PixelGames의 웹 앱과 API 서버를 먼저 게시하기.">
      <img src="https://mintcdn.com/replit/wpDFPJulnZRpqmW6/images/pixelgames/mobile/publish-step0.png?fit=max&auto=format&n=wpDFPJulnZRpqmW6&q=85&s=8649996b14285d251725e88fa510cf48" alt="Publish 버튼이 강조 표시된 Replit 편집기" data-path="images/pixelgames/mobile/publish-step0.png" width="1920" height="992" data-path="images/pixelgames/mobile/publish-step0.png" />
    </Frame>
  </Step>

  <Step title="App Store 게시 시작하기">
    웹 앱이 게시되면 **Publishing** 아래에 **Start publishing to the App Store** 버튼이
    나타납니다. 이를 선택해 Launch 마법사를 여세요.

    <Frame caption="Replit의 Publishing 탭에서 App Store 출시를 시작하기.">
      <img src="https://mintcdn.com/replit/wpDFPJulnZRpqmW6/images/pixelgames/mobile/publish-step1.png?fit=max&auto=format&n=wpDFPJulnZRpqmW6&q=85&s=9f7741ffeee02d92322bc8760a53b322" alt="Start publishing to the App Store 버튼이 있는 Replit Publishing 탭" data-path="images/pixelgames/mobile/publish-step1.png" width="1424" height="683" data-path="images/pixelgames/mobile/publish-step1.png" />
    </Frame>
  </Step>

  <Step title="Expo 프로젝트 선택하기">
    프로젝트 이름과 슬러그를 확인하거나, PixelGames에 이미 프로젝트가 있다면
    **Use existing**을 선택하세요.

    <Frame caption="출시할 Expo 프로젝트 선택하기.">
      <img src="https://mintcdn.com/replit/wpDFPJulnZRpqmW6/images/pixelgames/mobile/publish-step2.png?fit=max&auto=format&n=wpDFPJulnZRpqmW6&q=85&s=12091ccccb5b62910f941d8435fde3bb" alt="프로젝트 이름과 슬러그 필드가 있는 Launch 마법사의 Choose Expo project 단계" data-path="images/pixelgames/mobile/publish-step2.png" width="1710" height="985" data-path="images/pixelgames/mobile/publish-step2.png" />
    </Frame>
  </Step>

  <Step title="Apple로 로그인하기">
    Apple Developer Program에 등록된 동일한 Apple 계정을 사용하세요. Replit은 이 자격 증명을
    Apple과 인증하는 데만 사용하며 비밀번호를 저장하지 않습니다.

    <Frame caption="Expo 프로젝트를 연결하기 위해 Apple로 로그인하기.">
      <img src="https://mintcdn.com/replit/wpDFPJulnZRpqmW6/images/pixelgames/mobile/publish-step4.png?fit=max&auto=format&n=wpDFPJulnZRpqmW6&q=85&s=5fdf6a70851c6b2d8dc92b8580952b63" alt="이메일과 비밀번호 필드가 있는 Launch 마법사의 Sign in with Apple 단계" data-path="images/pixelgames/mobile/publish-step4.png" width="1205" height="883" data-path="images/pixelgames/mobile/publish-step4.png" />
    </Frame>
  </Step>

  <Step title="Apple 앱 선택하기">
    앱 이름과 번들 ID를 확인하거나, App Store Connect에 이미 만들어둔 것이 있다면
    **Use existing**을 선택하세요.

    <Warning>
      **모바일 앱 번들 ID는 게시한 후에는 영구적입니다**

      첫 게시에 사용한 번들 ID는 Replit 프로젝트에 연결됩니다. 이후 이를 변경하면 다음
      App Store 게시가 실패합니다.

      다른 번들 ID로 게시하려면 프로젝트를 리믹스하거나 새로 만드세요. 새 App Store Connect
      앱은 기존 목록, TestFlight 빌드, 리뷰 없이 새로 시작됩니다.
    </Warning>

    <Frame caption="앱 이름과 번들 ID 확인하기.">
      <img src="https://mintcdn.com/replit/wpDFPJulnZRpqmW6/images/pixelgames/mobile/publish-step5.png?fit=max&auto=format&n=wpDFPJulnZRpqmW6&q=85&s=12d9fc538428a2bc11688fbf26aa93b9" alt="앱 이름과 번들 식별자 필드가 있는 Launch 마법사의 Choose Apple app 단계" data-path="images/pixelgames/mobile/publish-step5.png" width="1199" height="880" data-path="images/pixelgames/mobile/publish-step5.png" />
    </Frame>
  </Step>

  <Step title="Apple 인증서 구성하기">
    Launch가 유효한 배포 인증서와 프로비저닝 프로파일을 자동으로 선택하거나, 아직 없다면
    새로 생성합니다.

    <Frame caption="Launch가 Apple의 배포 인증서와 프로비저닝 프로파일을 구성하는 모습.">
      <img src="https://mintcdn.com/replit/wpDFPJulnZRpqmW6/images/pixelgames/mobile/publish-step6.png?fit=max&auto=format&n=wpDFPJulnZRpqmW6&q=85&s=c239bed35a8bc200631bf7d93f07e157" alt="Launch 마법사의 Configure Apple certificates 단계" data-path="images/pixelgames/mobile/publish-step6.png" width="1200" height="883" data-path="images/pixelgames/mobile/publish-step6.png" />
    </Frame>
  </Step>

  <Step title="App Store로 출시하기">
    위 단계가 모두 완료되면 **Launch to App Store**를 선택하세요. 빌드가 Expo의 서버에서
    컴파일된 다음 App Store Connect에 도착합니다.

    <Frame caption="모든 단계가 완료되어 App Store로 출시할 준비가 된 모습.">
      <img src="https://mintcdn.com/replit/wpDFPJulnZRpqmW6/images/pixelgames/mobile/publish-step7.png?fit=max&auto=format&n=wpDFPJulnZRpqmW6&q=85&s=5731fe06230c3945b25a28c974b50195" alt="Launch to App Store 버튼이 있는 Launch 마법사의 Ready for launch 단계" data-path="images/pixelgames/mobile/publish-step7.png" width="1202" height="877" data-path="images/pixelgames/mobile/publish-step7.png" />
    </Frame>
  </Step>

  <Step title="게시가 끝날 때까지 기다리기">
    게시에는 최대 45분이 걸릴 수 있습니다. 진행되는 동안 Agent로 계속 빌드할 수 있으며,
    Replit 앱을 설치해두면 완료 시 알림을 받을 수 있습니다.

    <Frame caption="Publishing 탭에서 추적되는, 진행 중인 App Store 게시.">
      <img src="https://mintcdn.com/replit/wpDFPJulnZRpqmW6/images/pixelgames/mobile/publish-step9.png?fit=max&auto=format&n=wpDFPJulnZRpqmW6&q=85&s=97e26725b6a51cd6ad8e367c339337d2" alt="App Store 게시가 진행 중임을 보여주는 Replit Publishing 탭" data-path="images/pixelgames/mobile/publish-step9.png" width="1420" height="658" data-path="images/pixelgames/mobile/publish-step9.png" />
    </Frame>
  </Step>

  <Step title="TestFlight에서 열기">
    게시가 완료되면 \*\*"\[Your name] has invited you to test PixelGames"\*\*라는 제목의
    이메일을 받게 됩니다. **View in TestFlight**를 선택해 앱을 열고 폰에 설치하세요.
  </Step>
</Steps>

완료되면 빌드가 App Store Connect의 해당 앱 아래에 나타납니다.

이후 두 가지 방향으로 진행할 수 있습니다: 먼저
[TestFlight의 테스터](/build/mobile-testflight)에게 전달하거나, 곧바로 리스팅으로 이동해
[심사에 제출](/build/mobile-publish-ios)할 수 있습니다. 어느 쪽이든 제출하기 전까지는
빌드가 App Store Connect에만 머물러 있으며 아직 공개되지 않습니다.

## 나중에 다시 업로드하기

PixelGames에서 무언가를 변경했나요? 동일한 흐름을 다시 실행해 새 버전을 올리세요.

두 번째부터는 훨씬 빠르게 진행됩니다. Expo 프로젝트, Apple 계정, 앱, 인증서가 모두 이미
입력되어 있으므로 대부분의 단계는 기존 내용을 확인하는 것으로 끝납니다.

## 문제 해결

* **배포 인증서를 찾을 수 없음:** 첫 출시에서는 정상입니다. **Create new
  certificate**를 선택하면 Launch가 하나를 생성합니다.
* **Apple로 로그인이 실패함:** 계정이 일반 Apple ID가 아니라 Apple Developer
  Program에 등록되어 있는지 확인하세요.
* **게시가 멈춘 것처럼 보임:** 최대 45분이 걸릴 수 있으며, 피크 시간대에는 빌드가
  대기열에 쌓입니다. 문제가 있다고 단정하기 전에 Expo 대시보드의 **Builds**를 확인하세요.

## 다음 단계

<CardGroup cols={2}>
  <Card title="TestFlight로 테스트하기" icon="flask" href="/build/mobile-testflight">
    업로드한 빌드를 먼저 실제 테스터에게 전달해보세요.
  </Card>

  <Card title="App Store에 제출하기" icon="apple" href="/build/mobile-publish-ios">
    리스팅을 완성하고 심사에 제출해보세요.
  </Card>
</CardGroup>
