코드리스 IAP(Codeless IAP)
구독 제품 지원

상품 정의

인앱 구매를 사용하려면 앱에서 판매용 제품 리스트를 제공해야 합니다. 이 작업은 스크립팅을 사용하거나, Codeless IAP Catalog (Window > Unity IAP > IAP Catalog)를 사용하여 수행할 수 있습니다. 어느 쪽 방법을 선택하든 각 제품에 대해 적절한 속성의 정의해야 합니다. 이 페이지는 이러한 속성을 자세히 설명합니다.

Unity 에디터의 IAP Catalog GUI
Unity 에디터의 IAP Catalog GUI

제품 ID

앱 스토어와 커뮤니케이션할 때 제품의 기본 ID로 사용할 크로스 플랫폼 고유 식별자를 입력합니다.

중요: 이 ID는 소문자, 숫자, 밑줄 또는 마침표만 포함할 수 있습니다.

제품 타입

각 제품은 다음 타입 중 하나여야 합니다.

Type 설명 예제
Consumable 사용자가 제품을 반복적으로 구매할 수 있습니다. 소모용 제품은 복원할 수 없습니다. * 가상 통화
* HP 포션
* 일시적인 파워업 효과
Non-Consumable 사용자가 제품을 한 번만 구매할 수 있습니다. 비소모용 제품은 복원할 수 있습니다. * 무기 또는 방어구
* 추가 콘텐츠 이용
Subscription 사용자가 한정 기간 동안 제품에 액세스할 수 있습니다. 구독 제품은 복원할 수 있습니다. * 온라인 게임 월간 구독
* VIP 상태를 부여하는 일일 보너스
* 무료 평가판

참고: 구독 타입 지원에 대한 자세한 정보는 Subscription Product support를 참조하십시오.

고급

이 섹션에서는 게임 내 상점에서 사용할 제품과 연결된 메타데이터에 관해 설명합니다.

설명

다음 필드를 사용하여 제품에 대한 설명 텍스트를 추가하십시오.

필드 데이터 타입 설명 예제
Product Locale 열거형 지역에서 이용 가능한 앱 스토어를 결정합니다. 영어(미국) (Google Play, Apple)
Product Title String 앱 스토어에 표시되는 제품 이름입니다. “HP 포션”
Product Description String 앱 스토어에 표시되는 제품의 설명 텍스트로, 대개 제품에 대한 기능을 안내합니다. “HP를 50만큼 회복합니다.”

더하기(+) 아이콘을 클릭하고 추가 로케일을 선택하여 TitleDescription 필드에 대한 Translations 를 추가하십시오. 변역을 원하는 만큼 추가할 수 있습니다.

IAP Catalog GUI에서 제품에 대한 Descriptions 필드 채우기
IAP Catalog GUI에서 제품에 대한 Descriptions 필드 채우기

지급

이 섹션에서 구매자에게 지급할 콘텐츠에 대한 로컬 고정 정의를 추가하십시오. 지급을 이용하면 게임 내 월렛 또는 인벤토리를 쉽게 관리할 수 있습니다. 개발자들은 제품에 이름과 수량 레이블을 지정하여 구매 시 특정 아이템 타입(예: 코인, 보석 등)의 게임 내 개수를 빠르게 조정할 수 있습니다.

참고: 이 기능은 Unity 2017.2 이상에서만 이용할 수 있습니다.

필드 데이터 타입 설명 예제
Payout Type 열거형 구매자가 받는 콘텐츠 카테고리를 정의합니다. 다음의 네 가지 타입이 있습니다. * 통화
* 아이템
* 자원
* 기타
Payout Subtype String 콘텐츠 카테고리에 세분화 레벨을 제공합니다. * Currency 타입의 “골드” 및 “실버” 서브타입
* Item 타입의 “포션” 및 “부스트” 서브타입
Quantity Int 구매자가 지급을 통해 받게 되는 아이템, 통화 등의 수량을 지정합니다. * 1
* >25
* 100
Data 이 필드는 코드에서 참조할 프로퍼티로 사용할 수 있습니다. * UI 요소용 플래그
* 아이템 희귀도
IAP Catalog GUI에서 제품에 대한 Payouts 필드 채우기
IAP Catalog GUI에서 제품에 대한 Payouts 필드 채우기

참고: 단일 제품에 대한 여러 개의 지급을 추가할 수 있습니다.

PayoutDefinition 클래스에 대한 자세한 내용은 스크립팅 레퍼런스를 참조하십시오. 이 클래스를 이용하면 스크립트에 언제든지 지급 정보를 추가할 수 있습니다. 예제:

using UnityEngine.Purchasing;

new PayoutDefinition (PayoutType.Currency, "Gold", 100)

IAP 카탈로그는 인벤토리 관리자가 아니라 제품 카탈로그 사전 역할을 합니다. 구매한 콘텐츠 전달을 처리하는 코드는 여전히 구현해야 합니다.

스토어 ID 오버라이드

기본적으로 Unity IAP는 제품이 모든 앱 스토어에서 동일한 식별자(위의 ID 필드에서 지정됨)를 사용한다고 가정합니다. Unity는 가능한 이렇게 하도록 권장합니다. 하지만 iOS 및 Mac 스토어 모두에 퍼블리시하는 경우(개발자가 두 플랫폼에서 동일한 ID를 사용할 수 없음)와 같이 동일한 식별자를 사용할 수 없을 때도 있습니다.

이러한 경우에는 필드를 오버라이드하여 크로스 플랫폼 ID와 다른 제품 식별자를 정확하게 지정해야 합니다.

IAP Catalog GUI에서 제품에 대한 Sore ID Overrides 필드 채우기
IAP Catalog GUI에서 제품에 대한 Sore ID Overrides 필드 채우기

이 작업은 다음과 같이 프로그래밍 방식으로 수행할 수 있습니다.

using UnityEngine;
using UnityEngine.Purchasing;

public class MyIAPManager {
    public MyIAPManager () {
        var builder = ConfigurationBuilder.Instance(StandardPurchasingModule.Instance());
        builder.AddProduct("100_gold_coins", ProductType.Consumable, new IDs
        {
            {"100_gold_coins_google", GooglePlay.Name},
            {"100_gold_coins_mac", MacAppStore.Name}
        });
        // Initialize Unity IAP...
    }
}

이 예에서 제품 식별자는 Google Play의 경우 “100_gold_coins_google”이고, Apple App Store의 경우 “100_gold_coins_mac”입니다.

참고: 오버라이드는 Unity IAP가 앱 스토어와 커뮤니케이션할 때 사용하는 식별자만 변경합니다. API를 호출할 때는 여전히 제품의 크로스 플랫폼 식별자를 사용해야 합니다.

중요: 이 ID는 소문자, 숫자, 밑줄 또는 마침표만 포함할 수 있습니다.

Google 설정(Google Play 익스포트를 위해 필요함)

가격 정보 또는 Google Play에서 만든 가격 템플릿용 ID를 제공합니다.

IAP Catalog GUI에서 제품에 대한 Google Configuration 필드 채우기
IAP Catalog GUI에서 제품에 대한 Google Configuration 필드 채우기

Apple 설정(Apple 익스포트에 필요함)

드롭다운 메뉴에서 가격 티어를 선택합니다. Unity는 미리 정의된 Apple 기준 가격을 지원하지만, 임의 값은 지원하지 않습니다.

__스크린샷을 선택__하여 업로드하십시오.

스크린샷 사양에 대한 내용은 Apple의 퍼블리셔 지원 문서를 참조하십시오.

IAP Catalog GUI에서 제품에 대한 Apple Configuration 필드 채우기
IAP Catalog GUI에서 제품에 대한 Apple Configuration 필드 채우기

Xiaomi 설정(Xiaomi 익스포트에 필요함)

드롭다운 메뉴에서 가격 티어(중국 위안)를 선택합니다. Unity는 미리 정의된 Xiaomi 가격점을 지원하지만, 임의 값은 지원하지 않습니다. Xiaomi용 IAP 카탈로그 퍼블리싱에 대한 자세한 내용은 Xiaomi 통합에 관한 문서를 참조하십시오.

스크립트에서 제품 정의

구매 설정 빌더를 사용하여 제품 리스트를 프로그래밍 방식으로 선언할 수도 있습니다. 각 제품에 대해 고유한 크로스 스토어 Product IDProduct Type 을 제공해야 합니다.

using UnityEngine;
using UnityEngine.Purchasing;

public class MyIAPManager {
    public MyIAPManager () {
        var builder = ConfigurationBuilder.Instance(StandardPurchasingModule.Instance());
        builder.AddProduct("100_gold_coins", ProductType.Consumable);
        // Initialize Unity IAP...
    }
}

코드리스 IAP(Codeless IAP)
구독 제품 지원