글

Expo 앱을 App Store에 배포하기

Apple Developer 등록부터 App Store 심사까지, Expo 앱을 게시하는 실용적인 가이드입니다.

Expo 앱을 App Store에 배포하기

저는 이미 Expo 앱을 Google Play에 게시하는 과정을 거쳤습니다. 그 글을 읽으셨다면 Google Play와 App Store가 완전히 다른 존재라는 것을 아실 겁니다. Apple에는 자체 생태계, 도구, 심사 과정이 있고, 일을 까다롭게 만드는 고유한 방식도 있습니다.

이 글은 Apple Developer 계정 생성부터 “Submit for Review” 클릭까지, Expo 앱을 iOS App Store에 게시하는 단계별 가이드입니다. 시작 전에 알았더라면 좋았을 모든 것을 담았습니다.

사전 준비

시작하기 전에 다음을 준비하세요.

  • 동작하는 Expo 프로젝트(managed 또는 bare 워크플로)
  • Mac 또는 Mac 사용 환경. Apple은 iOS 앱을 네이티브로 빌드하려면 macOS를 요구하지만, EAS Build로 우회할 수도 있습니다.
  • Xcode 설치(최신 안정 버전)
  • Apple ID

❇️ 1단계: Apple Developer Program 등록

첫 번째 관문입니다. 한 번만 내는 Android의 25달러 수수료와 달리 Apple은 연간 99달러를 청구합니다.

  1. 다음 주소로 이동합니다: developer.apple.com
  2. “Account”를 클릭하고 Apple ID로 로그인합니다
  3. Apple Developer Program에 등록합니다
  4. 개인 또는 조직 정보를 입력합니다
  5. 99달러를 결제합니다

승인되면 이후 모든 작업의 두 가지 핵심 대시보드인 App Store Connect와 Apple Developer Portal에 접근할 수 있습니다.

❇️ 2단계: App Store Connect에서 앱 설정

App Store Connect는 앱 등록 정보, 빌드, 가격, 제출을 관리하는 곳입니다.

  1. 다음 주소로 이동합니다: appstoreconnect.apple.com
  2. “+” 버튼을 클릭한 다음 “New App”을 선택합니다.
  3. 앱 세부 정보를 입력합니다:
    • 플랫폼: iOS
    • 이름: 앱에 표시될 이름(신중히 선택하세요. 변경하기 어렵습니다)
    • Bundle ID: Expo 설정의 값과 정확히 일치해야 합니다
    • SKU: 고유한 내부 식별자
  4. “Create”를 클릭합니다.

이제 App Store Connect에 앱 레코드가 생성되었습니다. 아직 빌드는 없고 앱 컨테이너만 있는 상태입니다.

❇️ 3단계: iOS용 Expo 프로젝트 구성

app.json(또는 app.config.js)을 열고 iOS 섹션이 완전한지 확인합니다.

{
  "expo": {
    "name": "Your App Name",
    "slug": "your-app-slug",
    "version": "1.0.0",
    "ios": {
      "bundleIdentifier": "com.yourname.yourapp",
      "buildNumber": "1",
      "supportsTablet": true,
      "infoPlist": {
        "NSCameraUsageDescription": "We need camera access to...",
        "NSPhotoLibraryUsageDescription": "We need photo access to..."
      }
    }
  }
}

꼭 다시 확인할 사항:

  • bundleIdentifier는 App Store Connect에 등록된 값과 정확히 일치해야 합니다.
  • 버전이 같더라도 업로드할 때마다 buildNumber를 올리세요.
  • 앱이 사용하는 모든 권한을 명확한 설명과 함께 infoPlist에 추가하세요. 설명이 없거나 모호하면 Apple이 앱을 거부할 수 있습니다.

❇️ 4단계: 인증서와 프로비저닝 프로파일 처리

Apple이 Android와 가장 크게 다르고 많은 개발자가 몇 시간씩 허비하는 부분입니다. 두 가지가 필요합니다.

  • Distribution Certificate: 빌드가 본인에게서 나왔음을 증명합니다
  • Provisioning Profile: 앱의 Bundle ID를 인증서와 연결하고 배포를 승인합니다

옵션 A: EAS에 맡기기(권장)

EAS Build를 사용하면 이 모든 것을 자동으로 관리할 수 있습니다:

npx eas-cli credentials

EAS가 Apple 계정에 로그인하라고 안내한 뒤 모든 것을 생성하고 저장해 줍니다.

옵션 B: Xcode 또는 Apple Developer Portal에서 수동으로 진행

  1. Apple Developer Portal에서 Certificates, IDs & Profiles를 엽니다.
  2. 새 iOS Distribution Certificate를 만듭니다.
  3. Bundle Identifier와 일치하는 App ID를 만듭니다.
  4. 두 항목을 연결하는 Distribution Provisioning Profile을 만듭니다.

💡 배운 점: 가능하면 여러 개발자 인증서를 관리하지 마세요. Apple은 계정당 인증서 수를 제한하며, 인증서를 폐기하면 그 인증서를 사용하는 모든 프로비저닝 프로파일이 무효화됩니다.

❇️ 5단계: 앱 빌드

EAS Build 사용(권장)

npm install -g eas-cli
eas login
eas build:configure

프로덕션용으로 eas.json을 구성합니다:

{
  "build": {
    "production": {
      "ios": {
        "distribution": "store"
      }
    }
  }
}

그런 다음 빌드를 시작합니다:

eas build --platform ios --profile production

EAS는 클라우드에서 앱을 빌드하고 코드 서명을 처리하며 업로드 준비가 된 .ipa 파일을 제공합니다. 이 단계에는 Mac이 필요 없습니다.

Xcode 사용(로컬 빌드)

npx expo run:ios --configuration Release

또는 Xcode에서 ios/ 폴더를 열고 대상으로 “Any iOS Device”를 선택한 뒤 Product → Archive를 선택합니다.

❇️ 6단계: App Store Connect에 빌드 업로드

옵션 A: EAS Submit(가장 쉬움)

eas submit --platform ios --latest

옵션 B: Transporter — Mac App Store에서 다운로드해 로그인하고 .ipa 파일을 추가한 뒤 “Deliver”를 클릭합니다.

옵션 C: Xcode Organizer — 아카이브한 후 Window → Organizer를 열어 아카이브를 찾고 Distribute App → App Store Connect → Upload를 선택합니다.

❇️ 7단계: TestFlight로 테스트

App Store에 제출하기 전에 항상 TestFlight로 테스트하세요.

  1. App Store Connect에서 TestFlight를 엽니다.
  2. 빌드 처리가 끝나면 내부 테스터(팀원 최대 100명)를 추가합니다.
  3. 외부 테스터의 경우 먼저 Beta App Review를 제출합니다(보통 1~2일 소요).

❇️ 8단계: App Store 등록 정보 준비

제출하기 전에 Apple은 다음 항목을 모두 요구합니다.

  • 이름(최대 30자)과 부제(최대 30자)
  • 카테고리(기본 및 선택적 보조)
  • 개인정보 처리방침 URL(필수)
  • 설명(최대 4,000자, 처음 몇 줄이 중요합니다)
  • 키워드(쉼표로 구분, 총 100자 이내)

스크린샷 — Apple은 특정 크기를 요구합니다:

  • iPhone 6.9인치(iPhone 16 Pro Max) — 필수
  • iPhone 6.7인치(iPhone 14 Plus / 15 Plus) — 선택이지만 권장
  • iPad Pro 13인치(M4) — 앱이 iPad를 지원하는 경우 필수

❇️ 9단계: 가격과 제공 지역 설정

  1. Pricing and Availability를 엽니다.
  2. 무료를 선택하거나 가격 등급을 설정합니다.
  3. 앱을 배포할 국가·지역을 선택합니다(기본값은 모든 지역).
  4. 제공 시작일을 설정합니다(선택 사항).

❇️ 10단계: 앱 개인정보 설문 작성

Apple은 데이터 처리 방식을 신고하도록 요구합니다. 이 정보는 App Store 페이지의 개인정보 보호 라벨이 됩니다. App Store Connect에서 App Privacy를 열고 어떤 데이터를 수집하는지, 사용자 신원과 연결되는지, 추적에 사용되는지를 솔직하게 답하세요.

❇️ 11단계: 심사 제출

Review Information에서 Apple 심사자에게 전달할 메모를 남기세요. 앱에 로그인이 필요하다면 여기에 테스트 자격 증명을 제공하세요. 그런 다음 Add for Review → Submit to App Review를 선택합니다.

❇️ 12단계: 출시!

승인되면 앱 상태가 “Ready for Sale”이 됩니다. 제출할 때 다음 옵션 중 하나를 선택합니다.

  • 수동 출시: 앱이 공개되는 시점을 직접 제어합니다.
  • 자동 출시: 승인되는 즉시 앱이 공개됩니다.

🎉 축하합니다. 앱이 App Store에 올라갔습니다.

❇️ 마무리

App Store 과정은 Google Play보다 불투명하지만, 첫 출시 이후의 릴리스는 훨씬 수월해집니다. 시간을 가장 많이 잡아먹는 부분은 다음과 같습니다.

  1. 인증서와 프로비저닝 — EAS에 맡기세요.
  2. 스크린샷 — 실제 디자인 시간을 따로 확보하세요.
  3. 첫 심사 — 1~3일을 예상하고 앱이 중단 없이 동작하는지 확인하세요.

Apple의 생태계는 학습 곡선이 더 가파르지만 App Store 사용자층은 가치가 크며, 일단 진입하면 높은 품질 기준이 오히려 유리하게 작용합니다. 성공적인 출시를 기원합니다! 🚀

이 글이 유용했다면 다음 글도 썼습니다: Expo 앱을 Google Play에 배포하기 — Android를 위한 같은 방식의 단계별 설명입니다. 제 앱은 다음에서도 찾을 수 있습니다: vladsiu.com.