ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Swift iOS] Lite 버전 배포 - 이미 유료로 개발 및 판매중인 앱을 일반 버전, Lite 버전으로 나눠서 앱스토어에 배포하는 방법
    공부/Swift(프로그래밍 언어) 2026. 5. 8. 18:25
    반응형

    iOS 앱을 일반 버전과 Lite 버전으로 나누어 앱스토어에 배포하려면 다음과 같은 방식으로 진행하면 됩니다.

    1. 앱 ID 및 번들 ID 분리
    2. Xcode에서 타겟을 분리하거나 빌드 설정을 분기
      1. Build Configuration 분리
      2. Lite 버전에만 사용할 SPM 추가
      3. Lite 전용 Info.plist 설정
    3. Lite 버전에서 특정 기능 제한 및 광고 추가
    4. 앱 아이콘 및 UI 차별화
    5. App Store Connect에 별도의 앱으로 등록
      1. 앱 내부, App Store 설명 등에 사용 가능 표현 등 
    6. 빌드 및 배포

     

    [1] 앱 ID 및 번들 ID 구성

    일반 버전과 Lite 버전은 각각 별도의 앱으로 취급되므로 고유한 번들 ID가 필요합니다.

    • 일반 버전: com.company.app
    • Lite 버전: com.company.app.lite

    앱스토어에 두 개의 앱을 등록하려면 각각 별도의 App ID를 생성해야 합니다.

     

    [2] Xcode에서 타겟 분리 or 빌드 설정 분기

    Xcode에서 여러 타겟(Target) 생성 

    1. Xcode > 프로젝트 설정 > Targets 에서 기존 타겟을 복제 (Duplicate)
    2. 복제한 타겟의 Target Name, Bundle Identifier 변경
    3. 각 타겟별로 필요한 설정을 조정 (예: Lite 버전에서 특정 기능 비활성화 또는 광고 추가)

    Lite 용 타깃 생성

     

    새로운 타깃에 Lite용 Bundle Identifier 생성

     

    빌드 설정을 분기

    • Scheme 또는 xcconfig 파일을 활용하여 LITE_VERSION 플래그를 설정
    • #if LITE_VERSION 전처리기를 사용하여 기능 분기
    #if LITE_VERSION
      // Lite 버전 전용 코드
    #else
      // 일반 버전 코드
    #endif

     

    Scheme 또는 .xcconfig 파일을 활용하여 LITE_VERSION 플래그를 설정하는 방법

    Build Configuration 분리: Xcode에서 Build Configuration 추가

    1. Xcode > 프로젝트 설정 (Project) > Info 탭으로 이동
    2. Debug와 Release 아래에 새로운 Configuration을 추가
      • Lite-Debug, Lite-Release 등의 이름으로 복사하여 생성

     

    xcconfig 파일 추가

    1. Xcode > File > New > File > Configuration Settings File 선택
    2. Lite.xcconfig 파일을 생성

     

    LITE_VERSION 래그 추가

    Lite.xcconfig 파일에 아래 내용을 추가합니다.

    LITE_VERSION = 1

     

    .xcconfig 파일을 Build Configuration에 연결

    1. Xcode > 프로젝트 설정 > Info 탭으로 이동
    2. Lite-Debug, Lite-Release에 Lite.xcconfig 파일을 지정

    이제 Lite 빌드를 할 때 LITE_VERSION 값이 1로 설정됩니다.

    Lite.xcconfig 연결

     

    새로운 Scheme 생성

    1. Xcode > Product > Scheme > Manage Schemes…
    2. 기존 Scheme을 복제 (Duplicate Scheme)하여 MyApp Lite로 변경

     

    LITE_VERSION Preprocessor Macro 설정

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

     

    Swift 코드에서 사용

    이제 LITE_VERSION을 코드에서 사용할 수 있습니다.

    #if LITE_VERSION
    print("Lite 버전 실행 중")
    #else
    print("일반 버전 실행 중")
    #endif

     

    Lite 버전에만 사용할 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
    #endif

     

    Info.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 버전 무료 설치하기

    눌러서 다운로드

     

    반응형
Designed by Tistory.