-
[iOS] App Store에 나의 어플리케이션을 배포해보자Mobile/iOS 2024. 10. 24. 17:06728x90
지난번에 capacitor를 활용하여 iOS로 React 어플리케이션을 변환하는 과정을 알아보았다.
오늘은 지난 시간에 미처 다 설명하지 못했던 Bundle Identifier 설정과 프로비저닝 파일 설정에 대해 알아보겠다.
배포 과정을 살펴보자면 크게 다음과 같다.
- Bundle Identifier 설정
- Certificate 설정
- Provisioning Profile 설정
- App Store Connect에 앱 추가
Apple Developer Program의 프로그램 리소스 살펴보기
Apple Developer 사이트에서 우리가 돈을 지불하면서 사용할 수 있는 여러 기능들이 나타난다.
번들 ID를 넣기 위해서는 Apple Developer 사이트에서 번들 ID를 먼저 등록해야 하며, 인증서와 프로필 설정을 확인한 후에야 해당 ID를 배포하는 데 사용할 수 있다.
정리하자면 앱을
app store
에 배포하기 위해서는 번들ID가 필수적이며, 이는애플 디벨로퍼
에서 만들 수 있다.만약
apple developer program
에 가입되어 있지 않다면 다음과 같이 나올 것이다.하지만 우리는 이미 13만원이라는 거금을 지불하였다.
이제는 다음과 같은 화면들을 볼 수 있을 것이다.Apple Developer의
계정
에 들어가보면 다음과 같은 항목들이 나와있다.
여기서 인증서, ID 및 프로파일 부분으로 들어가보자.뭐가 많다. 하지만 하나씩 살펴보자.
- Certificates (인증서)
개발자가 iOS 및 macOS 애플리케이션을 안전하게 배포하고 실행할 수 있도록 신뢰를 부여하는 디지털 서명- 개발 인증서
앱을 개발하고 테스트할 때 사용된다. 개발자가 자신의 기기에서 앱을 실행하려면 개발 인증서가 필요하다. - 배포 인증서
앱을 App Store에 배포할 때 사용된다. Apple이 해당 앱이 신뢰할 수 있다는 것을 확인하는 데 필요한 디지털 서명에 사용된다.
- 개발 인증서
- Identifiers (식별자)
앱의 고유한 이름이나 패턴.
앱이 어떤 애플리케이션인지 구분하는 중요한 역할을 한다.
번들 ID 외에도 앱 그룹, iCloud, 푸시 알림과 같은 다양한 식별자 유형이 존재한다.
이는 각 서비스 또는 기능에 대해 고유한 식별자를 부여하여 앱이 해당 기능을 사용하도록 설정한다. - Devices (기기)
개발자가 개발용으로 등록한 실제 iOS 기기 목록
Apple은 개발자가 자신의 앱을 물리적인 기기에서 테스트할 수 있도록 기기 등록 기능을 제공한다.
테스트를 위해 사용되는 모든 iPhone, iPad 등의 기기를 등록하여 해당 기기에서 앱을 실행할 수 있다.
이를 통해 개발 단계에서 시뮬레이터가 아닌 실제 환경에서 앱을 테스트할 수 있다. - Profiles (프로파일)
프로비저닝 프로파일은 앱이 개발 또는 배포될 때 기기와 인증서를 연결하는 역할을 한다.- Development Provisioning Profile
개발용 프로파일로, 특정 기기에서 개발 중인 앱을 실행할 수 있도록 한다. - Distribution Provisioning Profile
배포용 프로파일로, 앱을 App Store나 Ad Hoc 방식으로 배포할 때 사용된다.
- Development Provisioning Profile
여기서 우리는 먼저 ID를 만들 것이다.
1. Bundle Idendifier 설정
이곳에서는 여러가지 ID를 생성할 수 있는데, 그 설명들은 다음과 같다.
- App IDs
앱, 앱 확장, 또는 App Clip이 서비스에 접근하고 앱을 식별.
앱을 프로비저닝 프로파일에 등록할 때 이 App ID를 사용한다.
이후 앱 서비스(예: 푸시 알림, 게임 센터, iCloud 등)를 활성화할 때도 사용할 수 있다. - Services IDs
애플의 Sign in with Apple 기능을 사용하는 서비스에 대한 서비스 식별자를 등록.
이 식별자를 통해 도메인과 반환 URL을 설정하고, 연관된 개인 키를 생성할 수 있다.
주로 웹사이트에서 애플 계정으로 로그인할 수 있도록 지원할 때 사용된다. - Pass Type IDs
패스북/지갑(Wallet)에서 사용되는 기프트 카드, 탑승권, 영화 티켓과 같은 다양한 종류의 패스를 식별하기 위한 ID.
이 Pass Type ID는 애플에서 발급하는 인증서를 사용하여 패스를 디지털 서명하고, 패스를 업데이트하거나 애플 지갑에서 인식할 수 있도록 한다. - Order Type IDs
Apple Wallet 및 Apple Pay에서 주문과 관련된 번들을 지원하고 배포하기 위한 ID.
이 ID를 사용하여 주문과 관련된 데이터를 서명하고, 업데이트된 정보를 애플 지갑에서 확인할 수 있게 한다. - Website Push IDs
웹사이트에서 푸시 알림을 전송할 수 있도록 도와주는 ID.
애플에서 발급한 인증서를 통해 푸시 알림을 디지털 서명하고, macOS에서 해당 알림을 받을 수 있도록 한다.
주로 Safari에서 지원되는 웹 푸시 알림에 사용된다. - iCloud Containers
iCloud 스토리지 API를 사용하여 데이터를 저장하고 동기화할 수 있도록 도와주는 ID.
이를 통해 앱은 문서나 데이터를 iCloud에 저장하고, 기기 간에 동기화할 수 있다.
앱이 iCloud 서비스를 활용하려면 이 컨테이너를 등록해야 한다. - App Groups
관련된 앱이 공유 컨테이너에 접근할 수 있도록 하는 기능.
예를 들어, 여러 앱 간의 데이터 공유 또는 프로세스 간 통신을 가능하게 한다.
앱 간의 데이터 통합을 위해 사용되며, 동일한 개발자가 만든 앱에서 주로 사용된다. - Merchant IDs
Merchant ID는 애플 페이 결제를 지원하기 위한 ID.
이를 통해 앱이나 웹사이트에서 실제 상품 및 서비스 거래를 처리할 수 있다.
결제 시 Merchant ID를 사용하여 Apple Pay 결제 처리 인증서를 생성하고, 애플 페이로 결제를 검증할 수 있다. - Media IDs
애플 뮤직 API, ShazamKit, 또는 애플 뮤직 피드를 사용하는 각 앱에 대한 미디어 ID.
이 식별자를 통해 관련 API를 안전하게 사용할 수 있도록 하고, 개인 키를 생성한다. - Maps IDs
웹사이트가 MapKit JS를 사용하는 ID. 웹사이트에 대한 지도 식별자를 생성하고, 연관된 개인 키를 만든다.
이를 통해 해당 웹사이트는 애플 지도 서비스를 사용하여 지도를 표시하고 사용할 수 있다.
모두기상은 현재 수익을 추구하는 모델이 아니기 때문에, 현재로서는 가장 상위의
App ID
만을 생성하면 된다.
앞으로의 ID는App ID
기준으로 설명될 것이다.타입을 고를 수 있는데,
App
은 전체 앱을 설치하고, 다양한 기능을 포함하며, 지속적으로 사용 가능하지만App Clip
은 특정 작업을 빠르게 처리하기 위한 경량 버전으로, 설치 없이 일시적으로 사용되며 제한된 기능만 제공한다.우리는
App
을 선택한다.또 설정해야할 것들이 엄청나게 많다.
자세히 살펴보자면 각각의 항목들은 다음을 의미한다.- Platform
앱이 지원할 플랫폼을 선택하는 부분이다.
iOS, iPadOS, macOS, tvOS, watchOS, visionOS 등이 포함되며, 앱이 어떤 환경에서 실행될지 결정된다. - App ID Prefix (Team ID)
App ID의 접두사로, 일반적으로 개발자의 팀 ID 또는 기업 ID가 사용된다.
이 접두사는 App Store Connect에서 해당 팀이나 계정과 관련된 앱을 구분하는 데 사용된다. - Description
앱의 간단한 설명을 입력하는 항목이다. 앱의 내부용 식별을 위해 사용되며, 사용자에게 보이지 않는다. - Bundle ID
앱의 고유 식별자이다. Explicit과 Wildcard 중에서 선택할 수 있다.- Explicit
명확한 고유 번들 ID를 사용할 때 선택한다.
예를 들어 com.company.appname처럼 앱마다 구체적인 ID를 설정한다. - Wildcard
와일드카드 번들 ID를 사용할 때 선택하며, com.company.* 형식으로 여러 앱을 위한 범용 ID를 지정할 수 있다.
일반적으로 앱 배포용으로는 Explicit 번들 ID를 사용한다.
- Explicit
우리가 여기서 설정해줘야 하는 것은 Description과 Bundle ID인데, 이제서야 비로소 우리가 필요로 하는 Bundle ID 설정을 직접 하게 된다.
설명에서도 말했듯, explicit과 wildcard로 나뉘어 있으며 우리는 배포를 할 것 이기 때문에 explicit으로 설정할 것이다.하단의 Capabilities, App Servicies 부분은 앱이 사용할 수 있는 기능과 서비스들을 설정할 수 있다.
여기서 선택한 항목은 앱에서 사용하려는 애플 서비스 또는 API에 대한 권한을 부여하는 기능이다. 이들은 본인의 어플리케이션이 사용될 서비스와 API에 맞게 선택하면 된다.여기까지 하면, App bundle ID 생성이 완료 된다!
2. Certificate 설정
앞서 말했듯 certificate는 개발자가 iOS 및 macOS 애플리케이션을 안전하게 배포하고 실행할 수 있도록 신뢰를 부여하는 디지털 서명이다.
2-1. 키체인에 접근하기
Spotlight에서 '키체인 접근'을 검색하면 쉽게 접근할 수 있다.
2-2. 인증서 요청 저장
다음으로 인증서를 만들고 저장을 하면 된다.
이 인증서는 Developer Certificate을 생성할 때 필요하다.2-3. developer certificates 접속 및 추가
우리는 배포가 목적이므로
Apple Distribution
을 선택해주면 된다.2-4. 인증서 선택
저장했던 CSR(인증서)를 추가하고 진행하면 된다.
2-5. 인증서 저장
이를 다운로드 받아서 keychain에 추가해준다.
3. Provisioning Profile 설정
앞서 말했듯, 프로비저닝 프로파일은 앱이 개발 또는 배포될 때 기기와 인증서를 연결하는 역할을 한다.
3-1. Apple developer에서 profile 선택
프로비저닝 프로파일을 만들어보자
3-2. Register a New Provisioning Profile
배포가 목적이므로
Distribution
의App Store
을 선택해주자.3-3. App ID 선택
첫 번째로 만들었던 App ID를 선택해 준다.
3-4. Certificate 선택
두 번째로 만들었던 Certificate를 선택한다.
3-5. Profile의 이름 설정
프로필의 이름을 설정해준다.
3-6. 등록 완료 후 다운로드 받기
이전과 마찬가지로 다운로드 받아둔다.
4. App Store Connect에 앱 추가
이름과, 기본 언어와 번들 ID, SKU 등을 입력하면 되는데 여기서 번들 ID와 SKU는 다음과 같다.
- 번들 ID
- 앱을 식별하기 위한 고유한 식별자
- 개발자가 Apple 개발자 계정을 통해 미리 생성해야 하며, 하나의 번들 ID는 하나의 앱에만 사용될 수 있다.
- 앱의 구조와 관련이 있으며, 앱스토어에 등록할 때 필요하다.
- Apple Developer 계정의 'Certificates, Identifiers & Profiles' 섹션에서 생성할 수 있다.
- SKU(Stock Keeping Unit)
- 개발자가 앱을 식별하기 위해 사용하는 고유한 문자열
- 앱스토어 내부에서 사용되는 것이 아니라 개발자가 관리 목적으로 지정하는 값이다.
- SKU는 각 앱마다 다르게 설정할 수 있으며, 중복되지 않도록 설정하는 것이 중요하다.
SKU도 적절하게 설정하고, 앱을 생성하면 App Store Connect에 등록을 할 수 있다.
이제 마지막 단계다.
다음 시간에 실제 배포는 어떻게 이뤄지는지에 대해서 알아보겠다.
Reference
'Mobile > iOS' 카테고리의 다른 글
[iOS] capacitor를 이용하여 React 웹 앱을 iOS app으로 변환하기 (3) 2024.09.14