맥 없이 앱스토어에 게임 출시하기: 클라우드 빌드 방법
Capacitor, Codemagic, TestFlight로 윈도우 PC에서 HTML5 게임을 앱스토어 심사까지 가져간 과정과, 빌드를 날리게 만든 실수들을 정리했습니다.

네, 맥 없이도 앱스토어에 게임을 출시할 수 있습니다. 맥은 여전히 필요하지만 빌려 쓰면 됩니다. HTML5 게임을 PC에서 Capacitor로 감싸고, Codemagic 같은 클라우드 서비스가 자체 맥 장비에서 컴파일과 서명을 하고, 빌드는 App Store Connect와 TestFlight로 넘어가며, 등록 정보와 개인정보 항목, 제출은 브라우저에서 마무리합니다. 건너뛸 수 없는 것은 아이폰입니다. 애플보다 먼저 누군가 빌드를 직접 플레이해 봐야 하니까요.
저희는 윈도우에서 자체 액션 게임 Little Ninja Dash로 이 과정을 거쳤습니다. 첫 클라우드 빌드 성공까지 약 6분이 걸렸고, 앱은 2026년 10월 19일 App Review에 제출되어 저희 기록상 심사 대기 중 상태입니다. 이 가이드는 심사 결과를 다루지 않습니다. 애플과 Codemagic에 관한 사실은 2026년 10월 30일에 확인한 공식 페이지에서 가져왔습니다. 나머지는 잘못된 부분까지 포함해 저희 기록에 남은 실제 과정입니다.
맥 없이 앱스토어에 출시하려면 필요한 것
- Apple Developer Program 멤버십: 멤버십 1년당 99달러. 개인과 조직 모두 가입할 수 있습니다. 조직은 D-U-N-S 번호와 공개 웹사이트가 필요합니다.
- Codemagic 계정. 무료 개인 플랜은 매월 macOS M2 빌드 500분과 동시 빌드 1개를 제공하며, 그 이후에는 Mac mini M2 1분당 US$0.095입니다. 무료 시간은 개인 사용자용이며 팀용이 아닙니다.
- 프로젝트가 담긴 비공개 Git 저장소. Codemagic은 연결한 저장소에서 빌드합니다. 저희 템플릿은 비공개 저장소가 필수입니다. 공개 저장소는 소스코드를 재배포하는 것이 되며, 라이선스가 금지합니다.
- 실제 빌드를 테스트할 TestFlight 앱이 설치된 아이폰.
- 자체 폴더에서 오프라인으로 실행되고 Capacitor로 감싼 게임.
애플은 2026년 4월 28일부터 App Store Connect에 올리는 앱을 Xcode 26 이상과 iOS 26 SDK로 빌드하도록 요구합니다. Capacitor의 iOS 페이지도 Xcode 26.0 이상을 요구하며 iOS 15 이상을 지원합니다. Xcode는 macOS에서만 돌아가기 때문에 빌드는 내 PC가 아니라 Codemagic 장비에서 이루어집니다.
저희 템플릿 에디션은 브라우저 게임입니다. 모든 에디션 페이지에 네이티브 앱 빌드는 포함되지 않는다고 적혀 있습니다. 라이선스 하나가 최종 제품 하나에 적용되며, 그 게임을 앱스토어와 구글 플레이를 포함해 원하는 곳 어디에나 출시할 수 있습니다. 템플릿 자체는 재판매할 수 없습니다. 유료 앱이나 인앱 결제로 플레이어에게 돈을 받을 계획이라면 먼저 문의해 주세요.
1단계: 윈도우에서 iOS 프로젝트 추가하기
이미 안드로이드용 Capacitor 프로젝트가 있다면 @capacitor/ios를 설치하고 npx cap add ios를 실행하세요. 윈도우에서도 ios/ 폴더가 만들어집니다. 로컬에서 Xcode로 열 수는 없으므로, 네이티브 프로젝트의 변경은 모두 파일을 직접 수정하고 다음 클라우드 빌드에서 확인하는 방식입니다.
- 아이콘: 투명도 없는 1024×1024 PNG 한 장.
- 기기와 방향: 저희 게임은 아이폰 전용, 가로 모드 전용입니다. 아이패드를 지원하면 아이패드 스크린샷과 테스트할 레이아웃이 늘어납니다.
- 암호화: 애플의 수출 규정 준수 도움말은 제출할 때마다 암호화 질문에 답하지 않도록 앱의 Info.plist를 수정하라고 안내합니다. 저희 게임은 시스템 HTTPS만 쓰므로 ITSAppUsesNonExemptEncryption을 false로 설정했습니다.
- 포함된 파일만 사용: 게임은 앱 안에 들어 있고 저희 웹사이트를 불러오지 않습니다. 애플 가이드라인 4.2는 웹사이트를 다시 포장한 수준을 넘어서는 앱을 요구합니다.
템플릿으로 시작하시나요? Velvet Pool은 저희가 구글 플레이용으로 Capacitor로 감싼 템플릿이라, 게임 폴더가 안드로이드에서 이미 이 단계를 거쳤습니다. 아직 앱스토어 심사를 거친 템플릿은 없습니다.
이미 Capacitor로 감싼 템플릿 Velvet Pool 보기
2단계: 맥과 키체인 없이 서명하기
서명은 예전에는 맥이 꼭 필요한 부분이었습니다. App Store Connect API 키가 있으면 Codemagic이 클라우드에서 처리할 수 있습니다.
- Apple Developer 사이트에서 게임용 App ID(번들 식별자)를 만듭니다. 게임 안에서 무언가를 판매한다면 In-App Purchase를 함께 켭니다.
- App Store Connect에서 그 번들 ID, SKU, 기본 언어로 앱 레코드를 만듭니다.
- App Store Connect API 키를 생성합니다. Codemagic 문서는 Codemagic 전용 키를 권장합니다. Codemagic 연동 설정에 추가하고, 키 파일은 절대 저장소에 넣지 마세요.
- Codemagic이 키로 배포 인증서를 생성하고 프로비저닝 프로파일을 가져오게 합니다. 이전에 생성한 인증서와 Apple Developer 포털의 프로파일을 가져올 수 있습니다.
저희가 겪은 실수
- 첫 두 빌드는 번들 ID에 프로비저닝 프로파일이 아직 설정되지 않아 실패했습니다. 첫 빌드 전에 인증서와 프로파일을 준비하세요.
- Codemagic에 참조 이름 없이 가져온 프로파일은 작동하지 않았고, 버튼은 아무 메시지 없이 실패했습니다. 이름은 반드시 입력하세요.
- 첫 API 키 설정은 Issuer ID를 잘못 입력해서 실패했습니다. 애플 키 페이지에서 복사해 붙여 넣으세요.
- 빌드 번호는 항상 올라가야 합니다. 이전 업로드가 처리 중일 때 애플에 마지막 번호를 묻는 방식이 실패해서, 시각에서 계산한 번호로 바꿨습니다.
3단계: Codemagic에서 빌드하고 TestFlight로 테스트하기
빌드 레시피는 저장소의 codemagic.yaml 파일에 있습니다. 저희 레시피는 의존성을 설치하고, 게임 파일을 준비하고, npx cap sync ios로 iOS 프로젝트에 동기화하고, 프로파일을 적용한 뒤 Mac mini M2 장비에서 IPA를 빌드합니다. 그다음 Codemagic이 빌드를 App Store Connect에 올립니다. 첫 빌드 성공까지 약 6분, 이후 프로덕션 빌드는 4분이 채 걸리지 않았습니다.
예상 밖의 일도 있었습니다. submit_to_testflight를 false로 설정했는데도 Codemagic이 빌드를 App Store Connect에 올렸습니다. Codemagic 문서는 이 옵션을 베타 그룹 배포에 필요한 옵션으로 설명합니다.
TestFlight 제한
- 내부 테스터: 팀의 App Store Connect 사용자 최대 100명.
- 외부 테스터: 외부 테스트용 첫 빌드가 App Review 승인을 받은 뒤 최대 10,000명.
- 빌드는 최대 90일 동안 테스터에게 제공됩니다.
내부 테스터 초대는 TestFlight 이메일에서 수락할 때까지 대기 상태로 남고, 그전에는 TestFlight에 앱이 보이지 않습니다. 스팸함도 확인하세요.
윈도우에서는 못 찾고 아이폰이 찾아낸 문제
- 녹음된 오디오 파일이 로드되지 않았습니다. 앱 안에서 fetch가 올바른 바이트와 함께 상태 0을 반환했는데, 저희 코드가 이를 오류로 처리했습니다. 로컬 파일에 상태 0을 허용해 해결했습니다.
- 가로 모드에서 노치 근처 버튼이 잘렸습니다. 결과 화면 레이아웃을 다시 만들고 모든 모서리를 테스트했습니다.
- 안드로이드와 공유하는 구매 화면에 여전히 Google Play라고 적혀 있었습니다. 이제 iOS에서는 App Store로 표시됩니다.
- TestFlight에서 한 테스트 구매는 초기화할 수 없어서, 테스트 빌드에 미구매 상태를 흉내 내는 버튼을 넣었습니다. 스토어 빌드에는 이 버튼이 없습니다.
4단계: App Store Connect 등록 정보, 개인정보, 연령 등급
나머지는 브라우저에서 진행합니다. 저희에게 효과가 있었던 순서입니다.
- 앱 정보: 부제, 카테고리, 연령 등급 설문. 게임이 실제로 보여 주는 내용 기준으로 정직하게 답하세요.
- 가격 및 사용 가능 여부: 가격과 국가. Mac과 Apple Vision Pro 제공이 기본으로 켜져 있었습니다. 저희 게임은 터치용이라 껐습니다.
- 앱 개인정보 보호: 애플은 신규 앱과 업데이트에 이 항목을 요구하며, 광고 네트워크와 SDK처럼 앱 안에 코드가 들어간 서드파티 파트너의 관행도 포함해야 합니다. 공개된 개인정보처리방침 URL이 필수입니다.
- 인앱 구매가 있다면: 이름, 설명, 심사용 스크린샷, 심사자 메모.
- 버전 페이지: 설명, 키워드, 지원 및 마케팅 URL, 저작권, 빌드, 심사 메모, 출시 옵션. 저희는 수동 출시를 골랐습니다.
- 스크린샷, 그다음 추가 언어별로 각자의 텍스트와 캡처.
- 스크린샷: 가이드라인 2.3.3은 타이틀 아트나 스플래시 화면만이 아니라 앱을 사용하는 모습을 보여야 한다고 말합니다. 저희 스크린샷은 실제 게임 캡처입니다.
- 앱 이름: 저희가 원한 이름 하나는 앱스토어에서 이미 쓰이고 있었습니다. 두 번째 이름이나 짧은 설명이 붙은 이름을 준비해 두세요.
- 심사 메모: 게임이 앱 안에 완전히 들어 있고, 오프라인으로 작동하며, 로그인이 필요 없다는 점과 구매 및 복원 버튼의 위치를 적었습니다.
5단계: 제출, 그리고 애플이 확인하는 것
제출하려면 앱 개인정보 보호 답변을 게시하고 사실임을 확인한 뒤 제출 초안을 보냅니다. 저희는 2026년 10월 19일에 앱 버전과 1회성 구매 항목을 함께 제출했고, 상태가 심사 대기 중으로 바뀌었습니다. 심사에서 거절되면 무작정 다시 제출하지 말고 Resolution Center에서 사실을 근거로 답변하세요.
템플릿으로 만든 게임이라면 세 가지 가이드라인이 가장 중요합니다. 4.2는 웹사이트를 다시 포장한 것 이상을 요구하므로 게임을 앱 안에 두세요. 4.3(a)는 같은 앱의 번들 ID를 여러 개 만들지 말라고 합니다. 4.3(b)는 이미 널리 나와 있는 것과 구별되지 않는 앱을 원하지 않는다고 말합니다. 리스킨은 그래픽만이 아니라 규칙, 콘텐츠, 인터페이스를 바꿔야 합니다.
저희 템플릿에 포함된 것과 저희가 대신할 수 있는 부분
모든 템플릿에는 바로 호스팅할 수 있는 게임 폴더, 읽기 쉬운 소스코드, 매뉴얼, 6개월 지원(연장 시 12개월)이 포함됩니다. 지원 범위는 제공한 파일의 설치와 사용, 재현 가능한 결함 수정입니다. iOS 래퍼, 네이티브 광고, 인앱 결제, 클라우드 빌드 설정, 앱스토어 등록 정보는 별도 서비스입니다.
서명과 Codemagic 설정을 직접 하고 싶지 않다면 템플릿, 애플 계정 계획, 마감일을 보내 주세요. 작업 시작 전에 범위, 가격, 일정을 회신해 드립니다. 맞춤 작업의 가격표는 공개하지 않습니다.
자주 묻는 질문
맥이 없어도 아이폰 게임을 출시할 수 있나요?
네. 빌드에는 여전히 macOS와 Xcode가 필요하지만 Codemagic 같은 클라우드 서비스가 제공합니다. App Store Connect부터 TestFlight까지 나머지는 모두 브라우저와 아이폰에서 할 수 있습니다.
앱스토어 출시 비용은 얼마인가요?
Apple Developer Program은 멤버십 1년당 99달러입니다. Codemagic 무료 개인 플랜에는 매월 macOS M2 500분이 포함되고, 추가 시간은 분 단위로 청구됩니다. 여기에 게임 라이선스와 스토어 이미지 비용이 더해집니다.
아이폰이 꼭 필요한가요?
제대로 테스트하려면 그렇습니다. 저희 아이폰은 윈도우 빌드와 브라우저 테스트에서 보이지 않던 오디오 누락, 잘린 버튼, 잘못된 스토어 이름을 찾아냈습니다.
애플이 앱으로 감싼 HTML5 게임을 승인할까요?
결과를 약속할 수는 없습니다. 가이드라인 4.2가 웹사이트를 다시 포장한 것 이상을 요구하므로, 저희는 게임 전체를 앱 안에 넣고 오프라인으로 작동하게 하며 네이티브 기능을 더합니다. 가이드라인 4.3도 리스킨에 적용됩니다.
템플릿에 iOS 빌드가 포함되나요?
아니요. 저희 에디션은 브라우저 게임이며, 상품 페이지에 네이티브 앱 빌드는 포함되지 않는다고 적혀 있습니다. 이 방법을 직접 따라 하시거나 견적을 받아 저희에게 맡기실 수 있습니다.
