-
[Swift iOS] Lite 버전 배포 - 이미 유료로 개발 및 판매중인 앱을 일반 버전, Lite 버전으로 나눠서 앱스토어에 배포하는 방법공부/Swift(프로그래밍 언어) 2026. 5. 8. 18:25반응형
iOS 앱을 일반 버전과 Lite 버전으로 나누어 앱스토어에 배포하려면 다음과 같은 방식으로 진행하면 됩니다.
- 앱 ID 및 번들 ID 분리
- Xcode에서 타겟을 분리하거나 빌드 설정을 분기
- Build Configuration 분리
- Lite 버전에만 사용할 SPM 추가
- Lite 전용 Info.plist 설정
- Lite 버전에서 특정 기능 제한 및 광고 추가
- 앱 아이콘 및 UI 차별화
- App Store Connect에 별도의 앱으로 등록
- 앱 내부, App Store 설명 등에 사용 가능 표현 등
- 빌드 및 배포
[1] 앱 ID 및 번들 ID 구성
일반 버전과 Lite 버전은 각각 별도의 앱으로 취급되므로 고유한 번들 ID가 필요합니다.
- 일반 버전: com.company.app
- Lite 버전: com.company.app.lite
앱스토어에 두 개의 앱을 등록하려면 각각 별도의 App ID를 생성해야 합니다.
[2] Xcode에서 타겟 분리 or 빌드 설정 분기
Xcode에서 여러 타겟(Target) 생성
- Xcode > 프로젝트 설정 > Targets 에서 기존 타겟을 복제 (Duplicate)
- 복제한 타겟의 Target Name, Bundle Identifier 변경
- 각 타겟별로 필요한 설정을 조정 (예: Lite 버전에서 특정 기능 비활성화 또는 광고 추가)

Lite 용 타깃 생성 
새로운 타깃에 Lite용 Bundle Identifier 생성 빌드 설정을 분기
- Scheme 또는 xcconfig 파일을 활용하여 LITE_VERSION 플래그를 설정
- #if LITE_VERSION 전처리기를 사용하여 기능 분기
#if LITE_VERSION // Lite 버전 전용 코드 #else // 일반 버전 코드 #endifScheme 또는 .xcconfig 파일을 활용하여 LITE_VERSION 플래그를 설정하는 방법
Build Configuration 분리: Xcode에서 Build Configuration 추가
- Xcode > 프로젝트 설정 (Project) > Info 탭으로 이동
- Debug와 Release 아래에 새로운 Configuration을 추가
- Lite-Debug, Lite-Release 등의 이름으로 복사하여 생성
xcconfig 파일 추가
- Xcode > File > New > File > Configuration Settings File 선택
- Lite.xcconfig 파일을 생성
LITE_VERSION 플래그 추가
Lite.xcconfig 파일에 아래 내용을 추가합니다.
LITE_VERSION = 1.xcconfig 파일을 Build Configuration에 연결
- Xcode > 프로젝트 설정 > Info 탭으로 이동
- Lite-Debug, Lite-Release에 Lite.xcconfig 파일을 지정
이제 Lite 빌드를 할 때 LITE_VERSION 값이 1로 설정됩니다.

Lite.xcconfig 연결 새로운 Scheme 생성
- Xcode > Product > Scheme > Manage Schemes…
- 기존 Scheme을 복제 (Duplicate Scheme)하여 MyApp Lite로 변경

LITE_VERSION Preprocessor Macro 설정
- Xcode > 프로젝트 설정 > Build Settings
- Preprocessor Macros 항목에서 Lite-Debug, Lite-Release에 LITE_VERSION=1 추가

Swift 코드에서 사용
이제 LITE_VERSION을 코드에서 사용할 수 있습니다.
#if LITE_VERSION print("Lite 버전 실행 중") #else print("일반 버전 실행 중") #endifLite 버전에만 사용할 SPM 추가
Lite 타겟에서만 사용할 Swift Package Manager(SPM) 의존성을 추가하려면 패키지는 프로젝트에 추가하되, 연결(Link)은 Lite 타겟에만 하면 됩니다.
1. SPM 패키지 추가
- Xcode → File → Add Packages…
- 원하는 패키지 추가
이 단계에서는 모든 타겟에 자동 연결될 수 있습니다.
2. Lite 타겟에만 연결
Xcode → Lite 타겟 선택 → General 탭 → Frameworks, Libraries, and Embedded Content
- Lite 타겟에는 패키지 추가
- 일반 타겟에서는 제거

Lite 타깃에는 GoogleMobileAds 가 있음 
일반 타깃에는 GoogleMobileAds 없음 코드 사용 시 주의
Lite에서만 import 가능하므로 반드시 조건 분기 필요:
#if LITE_VERSION import MyPackage #endif또는 canImport 방식이 더 안전합니다 (타겟 의존성 기준으로 판단)
#if canImport(MyPackage) import MyPackage #endifInfo.plist 별도로 설정하는 방법
- 기존 Info.plist 복사 및 이름 변경
- Lite 타깃에 연결: Xcode → Lite 타겟 → Build Settings → 검색: Info.plist File

기존: $(SRCROOT)/MyApp/Info.plist 변경 (위치, 이름에 맞게 변경): $(SRCROOT)/MyApp/Info-Lite.plist[3] 앱 기능 제한 및 차별화
Lite 버전에서 특정 기능을 제한하려면 다음 방법을 사용할 수 있습니다.
- UI에서 특정 버튼 숨기기
- 서버에서 Lite 버전 감지 후 특정 API 응답 차단
- 광고 추가 (예: AdMob, Google AdSense)
- In-App Purchase로 일반 버전 기능 해제 옵션 제공
앱 아이콘 및 리소스 차별화
앱스토어에서 혼동을 방지하려면 앱 아이콘 및 UI 요소를 차별화해야 합니다.
- Assets.xcassets에서 타겟별 아이콘 지정 가능
- Info.plist에서 CFBundleDisplayName을 각각 다르게 설정 (또는 프로젝트 타깃 설정에서 Lite 버전 선택 후 General > Display Name 변경)
<key>CFBundleDisplayName</key> <string>MyApp Lite</string>
타깃에서 App Icon을 AppIcon-Lite로 설정 
Asset에 AppIcon-Lite 추가 [4] 앱스토어 등록 (App Store Connect)
각 버전에 대해 별도의 앱 항목(App Entry) 을 생성해야 합니다.
- App Store Connect에서 새로운 앱 추가 (Bundle Identifier가 다르므로 기존 페이지 사용 불가 및 복제 기능 없음)
- com.company.app.lite 번들 ID 사용
- 아이콘, 스크린샷, 설명 등을 차별화
앱 내부 및 App Store 설명에서 사용 가능한 문구
앱 내부
“광고 없이 쾌적한 정식 버전 구입하기” 같은 문구 자체는 사용 가능합니다. 다만 표현 방식과 결제 흐름에서 주의할 점이 있습니다.
허용되는 경우
- Lite 앱에서 **유료 정식 앱(별도 앱)**으로 유도
- “광고 제거”, “전체 기능 제공” 등 차별점 안내
- 버튼 클릭 시 App Store 제품 페이지로 이동
주의 (중요)
- 앱 내부에서 외부 결제(웹 결제 등) 유도 불가
- “더 싸게 구매하세요” 같은 가격 유도 불가
- Apple IAP를 회피하는 구조 불가
“다른 앱으로 이동해서 구매”는 허용, “앱 밖 결제 유도”는 금지입니다.
App Store 설명
“광고 없이 쾌적한 정식 버전 구입하기” 등의 문구 사용 가능합니다. Lite/Full 구조에서 이런 안내는 흔하고, 정책상 문제되지 않습니다. 다만 표현은 약간만 다듬는 것이 좋습니다.
주의 포인트
- 과도한 구매 유도 느낌 불가
- 가격/할인/외부 결제 언급 불가
- 오해 소지 있는 표현 불가
URL 첨부 가능 여부: 가능합니다. (설명란에 URL 넣는 것 자체는 허용)
하면 안 되는 것
- “여기서 더 싸게 구매하세요”
- 외부 결제 페이지 링크
- 결제 유도 문구 + 외부 URL
허용
- App Store 내 다른 앱 링크 (Full 버전)
- 개발자 페이지 링크
[6] 빌드 및 배포
Xcode에서 Lite 스키마를 선택한 후 Archive -> Distribute Apps 로 업로드합니다. 일반 버전과 Lite 버전의 혼동을 방지하기 위해 버전 체계를 다르게 하는 것이 좋습니다.
실제 사례
이 방법을 사용하여 App Store에 등록된 음정퀴즈 (Music Interval Quiz Master) Lite 버전 무료 설치하기
반응형'공부 > Swift(프로그래밍 언어)' 카테고리의 다른 글
[SwiftUI] 목록(List)의 행(row) 및 헤더(header) 높이 변경 / 리스트 섹션 간 높이 간격 조절 (0) 2026.05.30 Embedded Swift: 그림 및 텍스트가 스크롤되는 도트 매트릭스 전광판 만들기 (0) 2026.05.18 Embedded Swift: 핀(GPIO Pin) 제어하기 (3) - 도트 전광판 제어 (MAX7219 32x8 도트 매트릭스 LED 5핀제어) (3) 2026.05.03 Embedded Swift: 핀(GPIO Pin) 제어하기 (2) - 입력 받기 (Input Mode) (1) 2026.04.29 [SwiftUI] SF Symbol에서 계층, 팔레트, 여러 가지 색상 사용하기 (0) 2026.04.28
