아이폰 앱을 Apple App Store에 등록하는 과정을 정리했습니다. 아직은 내용이 두서없지만 앱 등록할때마다 계속 개선할려고 합니다.
.
2026. 3. 17 최초작성
.
.
1. Apple Developer Program 가입
앱스토어에 앱을 출시하려면 1년 단위로 99$의 멤버십 비용을 지불하고 Apple Developer Program에 등록해야 합니다. 개인 또는 조직(법인) 계정 중 선택할 수 있으며, 조직 계정의 경우 D-U-N-S 번호가 필요합니다.
.
개인으로 등록해서 광고를 앱에 노출시키닥 추후 앱내결제를 위해 사업자 등록 후, 조직으로 바꾸는 경우도 있어보입니다. 저도 언젠간 이걸 해보려 합니다.
.
애플 계정으로 Apple Developer 사이트에 로그인 한 후, 계정 등록을 하는게 정석같지만 제 경우엔 이렇게 피시에서 하면 필요한 정보를 모두 입력한 후, 알 수없는 오류로 진행이 안되었습니다.
.
그래서 대신 아이폰에 Apple Developer 앱 설치해보니 앱으로 진행이 안된다며 다음 사이트 주소(https://developer.apple.com/kr/programs/enroll/ )로 접속해서 진행하니 피시와 달리 정보 입력없이(피시에서 진행했던 기록이 남았을 수 있습니다.) 결제만 바로 진행하고 오류없이 진행이 가능했습니다. 하지만 결재했으나 완료안되는 현상이 생겨 문의를 남겼지요. 문의 남긴곳의 주소는 다음과 같습니다. https://developer.apple.com/contact/topic/SC1101/subtopic/30007/solution/select .
.
하루 지나서인가 애플에서 메일이 왔는데 주소가 잘못 입력되었다며 영문 메일 주소를 다시 답장으로 보내달라해서 https://www.juso.go.kr/ 에서 확인하여 회신했습니다.
.
다음날 Apple Developer 계정 등록이 완료되면 메일이 왔습니다. App Store Connect 접근 권한이 자동으로 부여됩니다.
애플 개발자 계정은 1년 단위로 갱신해야 합니다.
.
2. 인증서 및 프로비저닝 프로파일
Xcode 또는 Apple Developer 포털에서 배포용 인증서(Distribution Certificate)와 프로비저닝 프로파일(Provisioning Profile)을 생성해야 합니다. 이를 통해 앱에 코드 서명을 할 수 있습니다.
Xcode의 자동 서명(Automatic Signing) 기능을 사용하면 포털에 직접 들어갈 필요 없이 Xcode가 인증서, App ID, 프로비저닝 프로파일을 전부 자동으로 생성하고 관리해줍니다.
.
Xcode 메뉴에서 Settings > Apple Accounts에서 Apple ID를 추가하고 추가한 ID 선택하여 Team을 선택하여 제 개인 계정을 선택했습니다.
프로젝트의 Signing & Capabilities 탭에서 “Automatically manage signing”을 체크합니다.
Team을 선택하고 Bundle Identifier를 입력하면 끝입니다.
.
프로젝트 파일 클릭 → 콤보박스 클릭 후 TARGETS에서 앱이름 선택 → 상단 탭에서 Signing & Capabilities 선택하여 아래 스크린샷처럼 설정하면 됩니다.

.
이렇게만 해두면 Xcode가 알아서 배포 인증서가 없으면 생성하고, App ID를 등록하고, 프로비저닝 프로파일도 만들어서 연결해줍니다. Archive 후 App Store Connect에 업로드할 때도 서명 관련 처리를 자동으로 해줘요.
.
3. 앱 아이콘 준비
1024×1024px 크기의 고해상도 앱 아이콘을 준비해야 합니다. 투명 배경이나 알파 채널은 허용되지 않습니다.
.
제미나이에게 앱스토어에 앱을 등록시 필요한 아이콘을 만들어달라며 앱의 컨셉을 설명하면 1024 x 1024 크기의 png 이미지 파일을 만들어줍니다. 제법 잘 만들어줬습니다.
.
Xcode 프로젝트에서 Assets.xcassets 파일을 열면 기본적으로 AppIcon 항목이 있습니다. 여기에 아이콘 이미지를 드래그 앤 드롭하면 됩니다.
과정은 다음과 같아요:
- Xcode 왼쪽 네비게이터에서 Assets.xcassets를 클릭합니다.
- AppIcon 세트를 선택합니다. (없으면 하단 “+” 버튼 → “App Icon”으로 새로 만들 수 있어요.)
- 준비한 아이콘 이미지를 해당 슬롯에 드래그 앤 드롭합니다.

.
커스텀 아이콘 이미지를 앱 내에서 쓰려면 Assets.xcassets에 “+” → “Image Set”으로 추가한 뒤, 코드에서 이미지 이름으로 참조하면 됩니다.
가장 좋은 방법은 충분히 큰 원본 이미지를 Single Scale로 설정하는 것입니다.
- Assets.xcassets에서 해당 Image Set을 선택
- 오른쪽 Attributes Inspector에서 Scales 항목을 “Single Scale”로 변경
- 제미나이가 만들어준 아이콘 이미지를 추가하면 됩니다.

.
이 상태까지 진행후 프로젝트를 플러터로 변경했습니다. IOS와 Android 양쪽 앱을 만들기 위해서였습니다. 처음부터 플러터로 시작했다면 위 과정대신 클로드 코드에게 이미지 주면서 해달라고 하면될거 같은데 이 부분은 해보고 내용을 업데이트하겠습니다.
플러터로 변경되면서 Xcode에서 ios폴더 열어서 다음처럼 설정했습니다.

.
.
4. 애드몹 준비
우선 테스트 기기를 등록하여 실수로 광고 클릭하여 정지되는 걸 방지합니다.
IDFA를 입력해야 하는데 아이폰에선 바로 확인할 수 없다네요.
.
클로드 코드에게 다음 내용을 주면서 개발중인 앱에서 IDFA를 복사할 수 있게 해달라고 했습니다.
.
현재 Apple에서는 기본적으로 iOS 기기에 IDFA를 표시하지 않습니다. 하지만 타사 앱을 사용하여 가져올 수는 있습니다. App Store에서 광고 ID를 가져올 수 있는 앱을 확인하거나 프로그래매틱 방식으로 IDFA를 찾아보세요.
.
.
앱 실행 후, 개인정보 보호의 추적을 허용해야 제대로된 IDFA를 복사할 수 있습니다. 안그러면 0으로 채워진 것을 얻습니다. IDFA를 얻기위한 앱수정을 한 셈입니다.
.
.
애드몹에 테스트 기기 등록시 특정 동작을 사용하여 광고가 어떻게 표시되는지 확인하는 방법도 제공하네요. 전 흔들기로 설정했습니다.
이제 애드몹 사이트에서 앱을 추가합니다.

.
광고 단위에서 배너를 생성하면 앱 ID와 광고단위 ID를 알려주는데 코드에 넣어주면 됩니다. 클로드 코드가 알아서 잘 해주더군요.
.
.
아이폰에서 앱실행하여 확인시 문제가 생겨서 시뮬레이터에서 실행하여 로그 확인후 해결했습니다.
USB로 연결하고 Xcode에서 메뉴 View > Debug Area > Activate Console 선택 후 확인시 다음 문구가 보이더군요
[AdMob] 광고 로드 실패: Account not approved yet. <https://support.google.com/admob/answer/9905175#1>
.
광고 승인이 아직 안나서 그동안엔 테스트 광고로 확인해야 한다고 합니다.
릴리즈땐 실제 광고 출력하고 디버그땐 테스트 광고를 보여주도록 코드를 수정하면 됩니다.
.
.
클로드 코드에게 현재 구현된 내용을 바탕으로 개인정보 처리방침 작성해달라고 하여 블로그에 저장하고 얻은 다음 링크를 앱에도 추가하고 커넥트의 개인정보 처리방침 URL에도 추가합니다.
.
4. 스크린샷 준비
https://studio.app-mockup.com/ 에서 앱스토어에 등록할 스크린샷 제작할 수 있습니다.
6.9인치인 iPhone 16 Pro Max에 맞춰 만들면 그보다 작은 스크린은 알아서 사용할 수 있게 된다고 합니다.
.
,
5. 앱 소개에 적을 내용을 미리 정리했습니다. 클로드 코드에게 코드를 기반으로 정해달라 했습니다.
.
앱이름과 부제목
.
앱설명도 클로드 코드를 사용하여 구현 내용을 바탕으로 적어달라하고 스토리는 내가 컨셉을 정해서 방향을 정했습니다.
.
키워드 선정도 클로드 코드에게 코드를 바탕으로 정해보라 했습니다. 일상적인 키워드를 만들어주네요.
.
앱에 맞는 카테고리도 클로드 코드가 정해주었습니다.
.
지원 URL이 필요하다해서 블로그에 글을 저장하고 링크를 사용했습니다.
.
프로모션도 클로드 코드와 대화하면 결정했습니다.
.
.
6. App Store Connect 정보 입력
App Store Connect(https://appstoreconnect.apple.com/ )에서 앱을 등록할 때 다음 정보를 준비해야 합니다.

.
미디어 관리에서 모든 크기 보기 선택 후, 6.9 디스플레이에 앞에서 만든 스크린샷을 추가합니다.
.
상단에 있는 제출 준비 중에서 모든 항목을 입력해야 합니다.
.
그외 항목들도 입력해야 하는데 그중에는 개인정보 처리방침(Privacy Policy)도 있습니다. 다른 항목까지 본 글에서 다 다루지는 않습니다.
모든 앱에 개인정보 처리방침 URL이 필수입니다. 앱이 수집하는 데이터 유형, 사용 목적, 제3자 공유 여부 등을 명시해야 합니다. 또한 App Store Connect에서 앱 개인정보 보호 세부 사항(App Privacy Labels)도 작성해야 합니다. 클로드 코드를 사용하여 코드를 기반으로 작성해달라하고 수정을 했습니다.
.
앱에 광고가 포함되어 있다면 커넥트에서 입력시 주의할점입니다.
앱에 ATT(앱 추적 투명성)와 IDFA가 포함되어 있으므로 App Store Connect에서 “데이터 수집하지 않음”이 아닌 실제 데이터 수집 항목을 선언해야 합니다.
.
1. 앱 개인정보 보호 섹션으로 이동
2. 데이터 수집 시작 클릭
3. 다음 항목을 추가:
│ 데이터 유형 │ 항목 │ 용도 │ 사용자 연결 │ 추적 │
│ 식별자 │ 기기 ID │ 광고 또는 마케팅 │ 아니요 │ 예 │
.
.
설정 방법:
– “데이터 유형을 수집합니까?” → 예
– 식별자 선택
– 기기 ID 체크
– 용도: 타사광고 선택
– “사용자 ID에 연결됩니까?” → 아니요
– “추적에 사용됩니까?” → 예 (ATT 사용하므로)
.
이것은 Google AdMob이 IDFA를 통해 맞춤 광고를 제공하기 때문에 필요한 선언입니다.
.
.
7. 빌드 업로드
Xcode를 사용해 아카이브된 빌드(.ipa)를 App Store Connect에 업로드합니다. 빌드에는 올바른 버전 번호와 빌드 번호가 설정되어 있어야 합니다. 한번 업로드가 성공하면 이후 업로드시엔 최소한 빌드번호를 수정해야 합니다.
.
⏺ Xcode에서 App Store Connect로 빌드 업로드하기
1단계: 빌드 설정 확인
– Xcode → 프로젝트 선택 → General 탭
– Version: 1.0.0
– Build: 1
– Bundle Identifier: 고유한 값 확인 (예: com.yourname.DayDiary)
– Supported Destinations에 아이폰만 남겨두고 제거
– Signing & Capabilities → Team이 본인 Apple Developer 계정인지 확인
2단계: Release 스킴 설정
– 상단 메뉴 → Product → Scheme → Edit Scheme
– Run의 Build Configuration이 아닌, Archive의 Build Configuration이 Release인지 확인 (기본값이 Release라 보통 건드릴 필요 없음)
3단계 타겟 설정
– Product Destination을 “Any iOS Device (arm64)” 선택
4단계: Archive 생성- 이 경우는 Xcode로 앱을 작성한 경우이고 플러터를 사용했다면 아래에서 따로 다루는 방식으로 해야 에러가 나지 않습니다.
– Product → Archive
– 빌드 완료되면 Organizer 창이 자동으로 열림
5단계: 업로드
– Organizer에서 방금 만든 Archive 선택
– Distribute App 클릭
– App Store Connect 선택 → Distribute 선택
– 앱이름으로 이름 변경

.
.
– 옵션은 기본값 그대로 → Next → Upload
– Apple Developer 계정 로그인 요구 시 로그인

.
.
Flutter로 작성했다면 Xcode에서 다음 순서로 진행해야 에러가 나지 않습니다.
.
메뉴에서 Product > Archive를 선택합니다.
.
Archive 완료 후 Distribute App 클릭
.
Custom 선택합니다.
.
App Store Connect 선택합니다.

.
Upload 선택합니다.

.
Upload your app’s symbols 체크 해제 합니다. 이 부분이 중요합니다.

.
Automatically manage signing을 선택합니다.

.
Upload를 클릭합니다.
업로드후 다음 메시지 보였지만 무시해도 된다고 합니다.

.
TestFlight 탭에서 처리중이 끝나길 기다려야 합니다.

.
빌드항목에서 기존 등록된게 있다면 제거하고 새로 처리완료된걸 선택하고 저장 후, 심사에 추가를 선택합니다.
