인앱 구매를 사용하려면 앱에서 판매할 제품 리스트를 제공해야 합니다. 스크립팅 또는 코드리스 IAP 카탈로그(Window > Unity IAP > IAP Catalog)를 통해 이를 수행할 수 있습니다. 어떤 구현을 사용하든 각 제품에 적절한 속성을 정의해야 합니다. 이 페이지에서는 이러한 속성에 대해 자세하게 설명합니다.
앱 스토어와 커뮤니케이션할 때 제품의 기본 ID로 사용할 크로스 플랫폼 고유 식별자를 입력합니다.
중요: 이 ID에는 소문자, 숫자, 밑줄 또는 마침표만 포함할 수 있습니다.
각 제품은 다음 유형 중 하나여야 합니다.
| 유형 | 설명 | 예제 |
|---|---|---|
| Consumable | 사용자가 제품을 반복 구매할 수 있습니다. 소모성 제품은 복원할 수 없습니다. | * 가상 화폐 * 체력 포션 * 임시 파워업 |
| Non-Consumable | 사용자가 제품을 한 번만 구매할 수 있습니다. 비소모성 제품은 복원할 수 있습니다. | * 무기 또는 갑옷 * 추가 콘텐츠에 대한 액세스 |
| Subscription | 사용자가 한정된 기간 동안 제품에 액세스할 수 있습니다. 구독 제품은 복원할 수 있습니다. | * 월간 온라인 게임 액세스 * 일일 보너스를 부여하는 VIP 상태 * 무료 체험 |
참고: 구독 유형 지원에 대한 자세한 정보는 구독 제품 지원 섹션을 참조하십시오.
이 섹션에서는 게임 내 상점에서 사용할 제품과 연결된 메타데이터에 관해 설명합니다.
다음 필드를 사용하여 제품에 대한 설명 텍스트를 추가하십시오.
| 필드 | 데이터 유형 | 설명 | 예제 |
|---|---|---|---|
| Product Locale | 열거형 | 지역에서 이용 가능한 앱 스토어를 결정합니다. | 영어(미국)(Google Play, Apple) |
| Product Title | 문자열 | 앱 스토어에 표시되는 제품 이름입니다. | ‘HP 포션’ |
| Product Description | 문자열 | 앱 스토어에 표시되는 제품의 설명 텍스트로, 대개 제품에 대한 기능을 안내합니다. | ‘HP를 50만큼 회복합니다.’ |
더하기(+) 아이콘을 클릭하고 추가 로케일을 선택하여 Title 및 Description 필드에 대한 Translations 를 추가하십시오. 번역을 원하는 만큼 추가할 수 있습니다.
이 섹션을 사용하여 구매자에게 지불하는 콘텐츠에 대한 로컬 고정 정의를 추가합니다. 지불을 통해 게임 내 지갑이나 인벤토리를 더 쉽게 관리할 수 있습니다. 개발자는 제품에 이름과 수량에 대한 레이블을 지정하여 구매 시 특정 아이템 유형(예: 동전 또는 보석)의 게임 내 개수를 빠르게 조정할 수 있습니다.
참고: 이 기능은 Unity 2017.2 이상에서만 이용할 수 있습니다.
| 필드 | 데이터 유형 | 설명 | 예제 |
|---|---|---|---|
| Payout Type | 열거형 | 구매자가 받는 콘텐츠 카테고리를 정의합니다. 네 가지 유형이 있습니다 | * 화폐 * 아이템 * 리소스 * 기타 |
| Payout Subtype | 문자열 | 콘텐츠 카테고리에 세분화 레벨을 제공합니다. | * 화폐 유형의 ‘금’ 및 ‘은’ 하위 유형 * 아이템 유형의 ‘포션’ 및 ‘부스트’ 하위 유형 |
| Quantity | Int | 구매자가 지급을 통해 받게 되는 아이템, 통화 등의 수량을 지정합니다. | * 1 * >25 * 100 |
| Data | |||
| 이 필드는 코드에서 참조할 프로퍼티로 사용할 수 있습니다. | * UI 요소용 플래그 * 아이템 희귀도 |
참고: 단일 제품에 여러 개의 Payouts를 추가할 수 있습니다.
PayoutDefinition 클래스에 대한 자세한 내용은 스크립팅 레퍼런스를 참조하십시오. 이 클래스를 사용하여 스크립트의 제품에 언제든지 지불 정보를 추가할 수 있습니다. 예시:
using UnityEngine.Purchasing;
new PayoutDefinition (PayoutType.Currency, "Gold", 100)
IAP 카탈로그는 인벤토리 관리자가 아닌 제품 카탈로그 사전 역할을 합니다. 그래도 구매한 콘텐츠의 전달을 처리하는 코드를 구현해야 합니다.
Unity IAP는 기본적으로 모든 앱 스토어에서 상품의 식별자(위의 ID 필드에 지정됨)가 동일하다고 가정합니다. Unity는 가능한 경우 이를 수행할 것을 권장합니다. 하지만 iOS 스토어와 Mac 스토어 모두에 퍼블리싱하는 경우와 같이 개발자가 두 스토어에서 동일한 제품 ID를 사용할 수 없는 경우가 있습니다.
이러한 경우에는 필드를 오버라이드하여 크로스 플랫폼 ID와 다른 제품 식별자를 정확하게 지정해야 합니다.
이 작업은 다음과 같이 프로그래밍 방식으로 수행할 수 있습니다.
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 Play에서 만든 가격 템플릿의 ID를 입력합니다.
드롭다운 메뉴에서 Pricing Tier를 선택합니다. Unity는 사전 정의된 Apple 기준 가격을 지원하지만 임의 값은 지원하지 않습니다.
Select a screenshot 을 클릭하여 업로드하십시오.
스크린샷 사양에 대한 내용은 Apple의 퍼블리셔 지원 문서를 참조하십시오.
또한 구매 설정 빌더를 사용하여 프로그래밍 방식으로 제품 리스트를 선언할 수도 있습니다. 각 제품에 고유한 크로스 스토어 제품 ID 및 제품 유형 을 입력해야 합니다.
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...
}
}