-
Notifications
You must be signed in to change notification settings - Fork 0
Native Promo
Unity IAP는 플레이스먼트를 통해서 IAP 프로모션 에셋을 표시할 수 있는 간편한 웹 보기 인터페이스를 제공합니다. 네이티브 Promo를 이용해 커스텀 프로모션 디스플레이를 구현하는 방법으로 이 에셋의 렌더링 프로세스를 제어할 수 있습니다.
네이티브 Promo를 사용하려면, 에셋 스토어에서 최신 SDK(3.0+)를 다운로드해야 합니다.
다음 지침을 따라 IAP 플레이스먼트, 제품 및 Promo를 설정하십시오. 참고로 IAP 제품을 구성할 때 Creative 에셋을 업로드해서는 안 됩니다.
SDK는 네이티브 Promo 어댑터 인터페이스와 프로모션 에셋 상호작용을 핸들링할 수 있는 메서드를 제공합니다. 커스텀 스크립트에서 이 메서드를 사용하여 Promo 시작, 완료, 구매 플로 초기화 시점을 SDK에 알릴 수 있습니다.
개발자마다 네이티브 Promo 구현 방식은 각양각색입니다. 다음의 추상 샘플 코드는 구현 내용을 설명합니다.
using UnityEngine.Monetization;
public class NativePromoDisplay : MonoBehaviour {
PlacementContent placementContent = Monetization.GetPlacementContent (placementId);
PromoAdPlacementContent promoContent = placementContent as PromoAdPlacementContent;
INativePromoAdapter adapter = Monetization.CreateNativePromoAdapter (promoContent);
void ShowPromo () {
LogPromoInfo ();
// Use promoContent’s associated Product ID (e.g. adapter.metadata.premiumProduct.productID) to determine which assets to show
// Call adapter.OnShown () to tell the SDK the Promo has started, then execute your custom display for those assets
// Call adapter.OnClicked () to tell the SDK the player clicked the purchase button and to initiate the purchase flow
// Call adapter.OnClosed () to tell the SDK the Promo has ended
}
void LogPromoInfo () {
Debug.LogFormat ("Product ID: \t{0}", adapter.metadata.premiumProduct.productId);
Debug.LogFormat ("Localized Title: \t{0}", adapter.metadata.premiumProduct.localizedTitle);
Debug.LogFormat ("Localized Description: \t{0}", adapter.metadata.premiumProduct.localizedDescription);
Debug.LogFormat ("ISO Currency Code: \t{0}", adapter.metadata.premiumProduct.isoCurrencyCode);
Debug.LogFormat ("Localized Price: \t{0}", adapter.metadata.premiumProduct.localizedPrice);
Debug.LogFormat ("Localized Price String: \t{0}", adapter.metadata.premiumProduct.localizedPriceString);
}
}
ShowAdPlacementContent
클래스를 확장하여 IAP Promo 콘텐츠에 대한 기능을 제공합니다.
Product
Unity IAP 제품 오브젝트
프로퍼티 | 가져오기 메서드 | 설명 |
---|---|---|
string productId |
GetProductId () |
제품의 내부 레퍼런스 ID입니다. |
string localizedTitle |
GetlocalizedTitle () |
소비자가 스토어 UI에서 보는 제품 이름입니다. |
string localizedPriceString |
GetLocalizedPriceString () |
소비자가 스토어 UI에서 보는 가격 문자열이며 화폐 기호가 포함됩니다. |
double localizedPrice |
GetLocalizedPrice () |
제품 가격의 내부 시스템 값입니다. |
string isoCurrencyCode |
GetIsoCurrencyCode () |
제품의 현지 화폐의 ISO 코드입니다. |
string localizedDescription |
GetLocalizedDescription () |
소비자가 스토어 UI에서 보는 제품 설명입니다. |
string productType |
GetProductType () |
Unity는 “Consumable(소모품)”과 “Non-Consumable(비소모품)”, 그리고 “Subscription(구독)” 제품 유형을 지원합니다. |
제품 속성에 대한 자세한 내용은 제품 정의 참고 문서를 참조하세요.
이 함수를 통해서 PromoAdPlacementContent
오브젝트를 전달하여 새로운 INativePromoAdapter
를 생성합니다. 예를 들면 다음과 같습니다.
INativePromoAdapter adapter = Monetization.CreateNativePromoAdapter (promoContent);
이 인터페이스는 사용자의 프로모션 에셋 상호작용을 위한 액세스 메서드를 제공합니다. 이 메서드를 사용하여 커스텀 메서드에서 전달하고 예상 행동을 정의할 수 있습니다.
PromoMetadata
이 프로퍼티는 어댑터를 통해서 전달되는 PromoAdPlacementContent
오브젝트에 대한 정보를 포함합니다.
public struct PromoMetadata {
public Product premiumProduct;
}
public PromoMetadata metadata { get; };
예를 들면 다음과 같습니다.
string cc = nativePromoAdapter.metadata.premiumProduct.isoCurrencyCode;
Promo가 표시될 때 이 함수를 호출합니다. 프로모션 에셋을 표시하는 커스텀 메서드가 포함되어야 합니다.
void OnShown ();
플레이어가 Promo 상품을 닫을 때 이 함수를 호출합니다.
void OnClosed ();
플레이어가 버튼을 클릭하여 제품을 구매할 때 이 함수를 호출합니다. 이를 통해 구매 플로가 시작됩니다.
void OnClicked ();
개발자마다 네이티브 Promo 구현 방식은 각양각색입니다. 다음의 추상 샘플 코드는 구현 내용을 설명합니다.
@interface ViewController: UIViewController <USRVUnityPurchasingDelegate>
-(void) showPromo: (UMONPromoAdPlacementContent *) placementContent {
self.nativePromoAdapter = [[UMONNativePromoAdapter alloc] initWithPromo: placementContent];
UMONPromoMetaData *metaData = placementContent.metadata;
UPURProduct *product = metaData.premiumProduct;
NSString *price = (product == nil || product.localizedPriceString == nil) ? @"$0.99": product.localizedPriceString;
self.nativePromoView.hidden = NO;
NSString *title = [NSString stringWithFormat: @"Buy for only %@", price];
[self.purchaseButton setTitle: title forState: UIControlStateNormal];
[self.nativePromoAdapter promoDidShow];
}
// If the player clicked the purchase button:
(IBAction) purchaseButtonTapped: (id) sender {
[self.nativePromoAdapter promoDidClick];
[self.nativePromoAdapter promoDidClose];
self.nativePromoView.hidden = YES;
}
// If the player closed the promotional asset:
-(IBAction) promoCloseButtonTapped: (id) sender {
self.nativePromoView.hidden = YES;
[self.nativePromoAdapter promoDidClose];
}
- (void) loadProducts: (UnityPurchasingLoadProductsCompletionHandler) completionHandler {
// Retrieve your Products list (see purchasing integration docs)
}
- (void) purchaseProduct: (NSString *) productId
// Insert logic for successful or failed product purchase (see purchasing integration docs)
}
여기에서 참조한 USRVUnityPurchasingDelegate
클래스에 대한 자세한 내용은 iOS 구매 통합 참고 문서에서 확인할 수 있습니다.
UMONShowAdPlacementContent 클래스를 확장하여, IAP Promo 콘텐츠에 대한 기능을 제공합니다.
UMONPromoProduct
Unity IAP 제품 오브젝트
프로퍼티 | 설명
@property (strong, nonatomic, readonly) NSString *productId
| 제품의 내부 레퍼런스 ID입니다.
@property (strong, nonatomic, readonly) NSString *localizedTitle
| 소비자가 스토어 UI에서 보는 제품 이름입니다.
@property (strong, nonatomic, readonly) NSString *localizedPriceString
| 소비자가 스토어 UI에서 보는 가격 문자열이며 화폐 기호가 포함됩니다.
@property (nonatomic, readonly) double *localizedPrice
| 제품 가격의 내부 시스템 값입니다.
@property (strong, nonatomic, readonly) NSString *isoCurrencyCode
| 제품의 현지 화폐의 ISO 코드입니다.
@property (strong, nonatomic, readonly) NSString *localizedDescription
| 소비자가 스토어 UI에서 보는 제품 설명입니다.
@property (strong, nonatomic, readonly) NSString *productType` | Unity는 “Consumable(소모품)”과 “Non-Consumable(비소모품)”, 그리고 “Subscription(구독)” 제품 유형을 지원합니다.
제품 속성에 대한 자세한 내용은 제품 정의 참고 문서를 참조하세요.
이 함수를 통해서 UMONPromoAdPlacementContent
오브젝트를 전달하여 새로운 UMONNativePromoAdapter
를 생성합니다.
-(instancetype) initWithPromo: (UMONPromoAdPlacementContent *) promo;
이 델리게이트는 사용자의 프로모션 에셋 상호작용을 위한 액세스 메서드를 제공합니다. 이 메서드를 사용하여 커스텀 메서드에서 전달하고 예상 행동을 정의할 수 있습니다.
UMONPromoMetaData
이 프로퍼티는 어댑터를 통해서 전달되는 UMONPromoAdPlacementContent
오브젝트에 대한 정보를 포함합니다.
@interface UMONPromoAdPlacementContent: UMONShowAdPlacementContent
-(instancetype) initWithPlacementId: (NSString *) placementId withParams: (NSDictionary *) params;
@property (nonatomic, strong, readonly) UMONPromoMetaData *metadata;
@end
Promo가 표시될 때 이 함수를 호출합니다. 프로모션 에셋을 표시하는 커스텀 메서드가 포함되어야 합니다.
-(void) promoDidShow;
-(void) promoDidShow: (UMONNativePromoShowType) showType;
UMONNativePromoShowType
enum 값을 전달하여 Promo 에셋의 미리보기 유형을 참조할 수 있습니다. kNativePromoShowTypeFull
은 전체 프로모션 view를 나타내며 kNativePromoShowTypePreview
는 확장하여 전체 Promo를 표시할 수 있는 최소화된 view를 나타냅니다.
플레이어가 Promo 상품을 닫을 때 이 함수를 호출합니다.
-(void) promoDidClose;
플레이어가 버튼을 클릭하여 제품을 구매할 때 이 함수를 호출합니다. 이를 통해 구매 플로가 시작됩니다.
-(void) promoDidClick;
개발자마다 네이티브 Promo 구현 방식은 각양각색입니다. 다음의 추상 샘플 코드는 구현 내용을 설명합니다.
UnityPurchasing.setAdapter (new UnityPurchasingAdapter ());
private class UnityPurchasingAdapter implements IPurchasingAdapter {
@Override
public void retrieveProducts (IRetrieveProductsListener listener) {
// Retrieve your Products list (see purchasing integration docs)
}
@Override
public void onPurchase (String productID, ITransactionListener listener, Map<String, Object> extras) {
// Insert logic for successful or failed product purchase (see purchasing integration docs)
}
private void showPromo (final PromoAdPlacementContent placementContent) {
final NativePromoAdapter nativePromoAdapter = new NativePromoAdapter (placementContent);
PromoMetadata metadata = placementContent.getMetadata ();
Product product = metadata.getPremiumProduct ();
String price = product == null ? "$0.99": product.getLocalizedPriceString ();
final View root = getLayoutInflater ().inflate (R.layout.unitymonetization_native_promo, (ViewGroup) findViewById (R.id.unityads_example_layout_root));
Button buyButton = root.findViewById(R.id.native_promo_buy_button);
Button closeButton = root.findViewById (R.id.native_promo_close_button);
buyButton.setText ("Buy now for only " + price + "!");
nativePromoAdapter.onShown();
buyButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick (View v) {
// Do purchase then call
nativePromoAdapter.onClosed ();
((ViewGroup)root).removeView (findViewById (R.id.native_promo_root));
}
});
closeButton.setOnClickListener (new View.OnClickListener () {
@Override
public void onClick(View v) {
nativePromoAdapter.onClosed ();
((ViewGroup)root).removeView (findViewById (R.id.native_promo_root));
}
});
}
여기에서 참조한 UnityPurchasingAdapter
클래스에 대한 자세한 내용은 Android 구매 통합 참고 문서에서 확인할 수 있습니다.
ShowAdPlacementContent
클래스를 확장하여 IAP Promo 콘텐츠에 대한 기능을 제공합니다.
Product
Unity IAP 제품 오브젝트
프로퍼티 | 가져오기 메서드 | 설명
String productId
| getProductId ()
| 제품의 내부 레퍼런스 ID입니다.
String localizedTitle
| getlocalizedTitle ()
| 소비자가 스토어 UI에서 보는 제품 이름입니다.
String localizedPriceString
| getLocalizedPriceString ()
| 소비자가 스토어 UI에서 보는 가격 문자열이며 화폐 기호가 포함됩니다.
Double localizedPrice
| getLocalizedPrice ()
| 제품 가격의 내부 시스템 값입니다.
String isoCurrencyCode
| getIsoCurrencyCode ()
| 제품의 현지 화폐의 ISO 코드입니다.
String localizedDescription
| getLocalizedDescription ()
| 소비자가 스토어 UI에서 보는 제품 설명입니다.
String productType
| getProductType ()
| Unity는 “Consumable(소모품)”과 “Non-Consumable(비소모품)”, 그리고 “Subscription(구독)” 제품 유형을 지원합니다.
제품 속성에 대한 자세한 내용은 제품 정의 참고 문서를 참조하세요.
이 델리게이트는 사용자의 프로모션 에셋 상호작용을 위한 액세스 메서드를 제공합니다. 이 메서드를 사용하여 커스텀 메서드에서 전달하고 예상 행동을 정의할 수 있습니다. PromoAdPlacementContent
오브젝트를 NativePromoAdapter
함수를 통해 전달하여 새로운 어댑터를 생성합니다. 예를 들면 다음과 같습니다.
final NativePromoAdapter nativePromoAdapter = new NativePromoAdapter (placementContent);
PromoMetaData
이 프로퍼티는 어댑터를 통해서 전달되는 PromoAdPlacementContent
오브젝트에 대한 정보를 포함합니다.
public PromoMetadata getMetadata ();
Promo가 표시될 때 이 함수를 호출합니다. 프로모션 에셋을 표시하는 커스텀 메서드가 포함되어야 합니다.
public void onShown (NativePromoShowType type);
NativePromoShowType
열거형 값을 전달하여 Promo 에셋의 미리보기 유형을 참조할 수 있습니다. FULL
은 전체 프로모션 view를 나타내며 PREVIEW
는 확장하여 전체 Promo를 표시할 수 있는 최소화된 view를 나타냅니다.
플레이어가 Promo 상품을 닫을 때 이 함수를 호출합니다.
public void onClicked
플레이어가 버튼을 클릭하여 제품을 구매할 때 이 함수를 호출합니다. 이를 통해 구매 플로가 시작됩니다.
public void promoClicked;