콘텐츠로 이동

마켓 선택

'마켓 선택'은 마켓이 여러 개 존재하는 서비스 환경(예: App Store + Hive Store)에서 사용자가 구매에 사용할 마켓을 지정하는 기능입니다.

동작 방식

'마켓 선택' 기능 동작에 필요한 API(setMarketSelection, getSelectedMarket 등)와 API 호출 순서 및 호출 방식을 설명합니다.

우선 IAP v4 초기화 시에 marketConnect API를 호출하면 사용자 기기에서 이용 가능한 마켓 목록이 반환됩니다. 이용 가능한 마켓이 여러 개인 경우, setMarketSelection API를 호출하여 마켓을 선택합니다. 이후 getSelectedMarket API 호출하여 반환된 마켓 타입으로 구매를 진행합니다.

'마켓 선택' 기능을 구현 시 권장되는 API 호출 순서는 아래와 같습니다.

flowchart TD
    A(["marketConnect"])
    B(["getProductInfo"])
    C{"사용자가<br/>결제 수단(마켓)<br/>변경?"}
    D(["setMarketSelection"])
    E(["getSelectedMarket"])
    F(["purchase / restore"])
    G{"다른 마켓으로<br/>추가 구매?"}
    H([완료])

    A -- "앱 실행 시 1회" --> B
    B -- "마켓별 최초 1회" --> C
    C -- "예" --> D
    C -- "아니오" --> F
    D --> E --> F
    F --> G
    G -- "예" --> D
    G -- "아니오" --> H

getProductInfo 호출

위 API 호출 순서 중 getProductInfo API는 마켓별로 최초 1회만 호출 하세요.

  • 한 번 호출에 성공한 마켓의 상품 정보는 SDK 내부에 캐싱되므로, 이후 setMarketSelection으로 마켓을 변경하더라도 해당 마켓의 getProductInfo를 다시 호출하지 않아도 됩니다.
    • 예를 들어, App Store와 Hive Store를 모두 지원하는 앱에서 각각 getProductInfo를 1회씩 호출하면, 이후 마켓 전환 시 setMarketSelectionpurchase 순서로 호출합니다.


setMarketSelection

setMarketSelection API는 IAPV4Type 값을 전달받아 이후 구매 플로우에서 사용할 마켓을 설정합니다. setMarketSelection API는 구매 플로우에서 사용할 마켓을 선택하기 위해 호출하며, 호출 시 IAPV4Type 값을 전달합니다.

setMarketSelection API 호출 시점

marketConnect API 호출 이후 에 호출해야 하며, purchase API 또는 restore API 호출 전 에 호출해야 합니다.

  • 사용자가 게임 내 상점에서 결제 수단(마켓)을 변경하는 시점에 호출합니다.
  • 마켓 변경 후 purchase, restore 호출 시 변경된 마켓 기준으로 동작합니다.

IAPV4Type

IAPV4Type은 IAP v4에서 지원하는 마켓 종류를 나타내는 열거형(enum)입니다.

Value Name Description
0 notSelected 선택되지 않음
1 appStore Apple App Store
2 google Google Play Store
3 lebi Lebi Market
4 oneStore ONE Store
5 amazon Amazon Appstore
6 samsung Samsung Galaxy Store
7 huawei Huawei AppGallery
8 funtap Funtap
9 oppoAppMarket OPPO App Market
10 vivoAppStore vivo App Store
11 tencentMyapp Tencent Myapp
12 xiaomiAppStore Xiaomi App Store
13 huaweiAppGalleryChina Huawei AppGallery China
14 facebookCloudGame Facebook Cloud Game
15 hiveStore Hive Store
16 steam Steam
17 nowgg now.gg

예제 코드

setMarketSelection API를 사용하는 예제 코드는 아래와 같습니다.

using hive;
IAPV4.setMarketSelection(IAPV4Type.HIVESTORE);
#include "HiveIAPV4.h"

FHiveIAPV4::SetMarketSelection(EHiveIAPV4Type::HIVESTORE);
#include <HIVE_SDK_Plugin/HIVE_CPP.h>
using namespace std;
using namespace hive;
IAPV4::setMarketSelection(IAPV4Type::HIVESTORE);
import com.hive.IAPV4
IAPV4.setMarketSelection(IAPV4.IAPV4Type.HIVESTORE)
import com.hive.IAPV4;
IAPV4.INSTANCE.setMarketSelection(IAPV4.IAPV4Type.HIVESTORE);
import HIVEService
IAPV4Interface.setMarketSelection(.HIVESTORE)
#import <HIVEService/HIVEService-Swift.h>
[HIVEIAPV4 setMarketSelection:HIVEIAPV4TypeHIVESTORE];


getSelectedMarket

getSelectedMarket API는 현재 선택된 마켓 타입을 받기 위해 호출하며, 호출 이후 반환되는 마켓 타입으로 구매를 진행할 수 있습니다.

getSelectedMarket 호출 시점

getSelectedMarket API는 구매 요청 전에 현재 선택된 마켓을 확인 하는 용도로 사용합니다. setMarketSelection API 호출 후 의도한 마켓으로 정상 변경되었는지 검증할 때 사용합니다.

예제 코드

getSelectedMarket API를 사용하는 예제 코드는 아래와 같습니다.

using hive;
IAPV4Type marketType = IAPV4.getSelectedMarket();
#include "HiveIAPV4.h"

EHiveIAPV4Type MarketType = FHiveIAPV4::GetSelectedMarket();
#include <HIVE_SDK_Plugin/HIVE_CPP.h>
using namespace std;
using namespace hive;
IAPV4Type marketType = IAPV4::getSelectedMarket();
import com.hive.IAPV4
val marketType: IAPV4.IAPV4Type = IAPV4.getSelectedMarket()
import com.hive.IAPV4;
IAPV4.IAPV4Type marketType = IAPV4.INSTANCE.getSelectedMarket();
import HIVEService
let marketType = HIVEIAPV4.getSelectedMarket()
#import <HIVEService/HIVEService-Swift.h>
HIVEIAPV4Type marketType = [HIVEIAPV4 getSelectedMarket];