Skip to content

Native Promo

pineglobal edited this page Jan 7, 2019 · 5 revisions

네이티브 Promo

개요

Unity IAP는 플레이스먼트를 통해서 IAP 프로모션 에셋을 표시할 수 있는 간편한 웹 보기 인터페이스를 제공합니다. 네이티브 Promo를 이용해 커스텀 프로모션 디스플레이를 구현하는 방법으로 이 에셋의 렌더링 프로세스를 제어할 수 있습니다.

요구 사항

네이티브 Promo를 사용하려면, 에셋 스토어에서 최신 SDK(3.0+)를 다운로드해야 합니다.

IAP Promo 구성

다음 지침을 따라 IAP 플레이스먼트, 제품Promo를 설정하십시오. 참고로 IAP 제품을 구성할 때 Creative 에셋을 업로드해서는 안 됩니다.

네이티브 Promo 어댑터 사용

SDK는 네이티브 Promo 어댑터 인터페이스와 프로모션 에셋 상호작용을 핸들링할 수 있는 메서드를 제공합니다. 커스텀 스크립트에서 이 메서드를 사용하여 Promo 시작, 완료, 구매 플로 초기화 시점을 SDK에 알릴 수 있습니다.

Unity(C#)

구현

개발자마다 네이티브 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);

    }
}

API 레퍼런스

PromoAdPlacementContent

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(구독)” 제품 유형을 지원합니다.

제품 속성에 대한 자세한 내용은 제품 정의 참고 문서를 참조하세요.

CreateNativePromoAdapter

이 함수를 통해서 PromoAdPlacementContent 오브젝트를 전달하여 새로운 INativePromoAdapter를 생성합니다. 예를 들면 다음과 같습니다.

INativePromoAdapter adapter = Monetization.CreateNativePromoAdapter (promoContent);

INativePromoAdapter

이 인터페이스는 사용자의 프로모션 에셋 상호작용을 위한 액세스 메서드를 제공합니다. 이 메서드를 사용하여 커스텀 메서드에서 전달하고 예상 행동을 정의할 수 있습니다.

PromoMetadata 이 프로퍼티는 어댑터를 통해서 전달되는 PromoAdPlacementContent 오브젝트에 대한 정보를 포함합니다.

public struct PromoMetadata {
    public Product premiumProduct;
}

public PromoMetadata metadata { get; };

예를 들면 다음과 같습니다.

string cc = nativePromoAdapter.metadata.premiumProduct.isoCurrencyCode;

OnShown

Promo가 표시될 때 이 함수를 호출합니다. 프로모션 에셋을 표시하는 커스텀 메서드가 포함되어야 합니다.

void OnShown ();

OnClosed

플레이어가 Promo 상품을 닫을 때 이 함수를 호출합니다.

void OnClosed ();

OnClicked

플레이어가 버튼을 클릭하여 제품을 구매할 때 이 함수를 호출합니다. 이를 통해 구매 플로가 시작됩니다.

void OnClicked ();

맨 위로

iOS 개발자(Objective-C)

구현

개발자마다 네이티브 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 구매 통합 참고 문서에서 확인할 수 있습니다.

API 레퍼런스

UMONPromoAdPlacementContent

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(구독)” 제품 유형을 지원합니다.

제품 속성에 대한 자세한 내용은 제품 정의 참고 문서를 참조하세요.

initWithPromo

이 함수를 통해서 UMONPromoAdPlacementContent 오브젝트를 전달하여 새로운 UMONNativePromoAdapter를 생성합니다.

-(instancetype) initWithPromo: (UMONPromoAdPlacementContent *) promo;

UMONNativePromoAdapter

이 델리게이트는 사용자의 프로모션 에셋 상호작용을 위한 액세스 메서드를 제공합니다. 이 메서드를 사용하여 커스텀 메서드에서 전달하고 예상 행동을 정의할 수 있습니다.

UMONPromoMetaData 이 프로퍼티는 어댑터를 통해서 전달되는 UMONPromoAdPlacementContent 오브젝트에 대한 정보를 포함합니다.

@interface UMONPromoAdPlacementContent: UMONShowAdPlacementContent

-(instancetype) initWithPlacementId: (NSString *) placementId withParams: (NSDictionary *) params;

@property (nonatomic, strong, readonly) UMONPromoMetaData *metadata;

@end

promoDidShow

Promo가 표시될 때 이 함수를 호출합니다. 프로모션 에셋을 표시하는 커스텀 메서드가 포함되어야 합니다.

-(void) promoDidShow;

-(void) promoDidShow: (UMONNativePromoShowType) showType;

UMONNativePromoShowType enum 값을 전달하여 Promo 에셋의 미리보기 유형을 참조할 수 있습니다. kNativePromoShowTypeFull은 전체 프로모션 view를 나타내며 kNativePromoShowTypePreview는 확장하여 전체 Promo를 표시할 수 있는 최소화된 view를 나타냅니다.

promoDidClose

플레이어가 Promo 상품을 닫을 때 이 함수를 호출합니다.

-(void) promoDidClose;

promoDidClick

플레이어가 버튼을 클릭하여 제품을 구매할 때 이 함수를 호출합니다. 이를 통해 구매 플로가 시작됩니다.

-(void) promoDidClick;

맨 위로

Android(Java)

구현

개발자마다 네이티브 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 구매 통합 참고 문서에서 확인할 수 있습니다.

API 레퍼런스

PromoAdPlacementContent

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(구독)” 제품 유형을 지원합니다.

제품 속성에 대한 자세한 내용은 제품 정의 참고 문서를 참조하세요.

NativePromoAdapter

이 델리게이트는 사용자의 프로모션 에셋 상호작용을 위한 액세스 메서드를 제공합니다. 이 메서드를 사용하여 커스텀 메서드에서 전달하고 예상 행동을 정의할 수 있습니다. PromoAdPlacementContent 오브젝트를 NativePromoAdapter 함수를 통해 전달하여 새로운 어댑터를 생성합니다. 예를 들면 다음과 같습니다.

final NativePromoAdapter nativePromoAdapter = new NativePromoAdapter (placementContent);

PromoMetaData 이 프로퍼티는 어댑터를 통해서 전달되는 PromoAdPlacementContent 오브젝트에 대한 정보를 포함합니다.

public PromoMetadata getMetadata ();

onShown

Promo가 표시될 때 이 함수를 호출합니다. 프로모션 에셋을 표시하는 커스텀 메서드가 포함되어야 합니다.

public void onShown (NativePromoShowType type);

NativePromoShowType 열거형 값을 전달하여 Promo 에셋의 미리보기 유형을 참조할 수 있습니다. FULL은 전체 프로모션 view를 나타내며 PREVIEW는 확장하여 전체 Promo를 표시할 수 있는 최소화된 view를 나타냅니다.

onClosed

플레이어가 Promo 상품을 닫을 때 이 함수를 호출합니다.

public void onClicked

onClicked

플레이어가 버튼을 클릭하여 제품을 구매할 때 이 함수를 호출합니다. 이를 통해 구매 플로가 시작됩니다.

public void promoClicked;

맨 위로

Clone this wiki locally