Skip to content
스토브
마지막 업데이트

PC SDK unity 레퍼런스

SDK 버전 3.5.0 기준이에요. 항목 100개를 이름순으로 모은 통합 문서예요.

Contents

NameKindModule
기본 연동 안내연동 안내Base
EStoveBaseMethodCode열거형Base
EStoveBaseTypeKind열거형Base
EStoveCommonResultCode결과코드Base
EStoveDiscountType열거형IAP
EStoveIAPMethodCode열거형IAP
EStoveIAPTypeKind열거형IAP
EStoveLocale열거형Base
EStoveLogMethodCode열거형Log
EStoveLogTypeKind열거형Log
EStoveOverlayMode열거형Base
EStovePCBangMethodCode열거형PCBang
EStovePCBangPremium열거형PCBang
EStovePCBangTypeKind열거형PCBang
EStoveProductTypeCode열거형IAP
EStovePurchaseLimitTypeCode열거형IAP
EStovePurchaseOperation열거형IAP
EStovePurchaseProgress열거형IAP
EStoveResultCode결과코드Base
EStoveTermsOperation열거형IAP
EStoveViewMethodCode열거형View
EStoveViewTypeKind열거형View
EStoveWebViewMode열거형Base
IStoveAccessToken구조체Base
IStoveCallbackResult구조체Base
IStoveChargeInfo구조체IAP
IStoveConfirmPurchaseOutcome구조체IAP
IStoveConfirmPurchaseParam구조체IAP
IStoveFetchProductsParam구조체IAP
IStoveFetchTermsAgreementParam구조체IAP
IStoveGds구조체Base
IStoveInitializeParam구조체Base
IStoveInventoryItem구조체IAP
IStoveInventoryList구조체IAP
IStoveManualPopupParam구조체View
IStoveOrderProductParam구조체IAP
IStoveOverImmersionInfo구조체Base
IStovePCBangBenefitInfo구조체PCBang
IStovePCBangLoginOutcome구조체PCBang
IStovePCBangStatus구조체PCBang
IStovePopupParam구조체View
IStoveProduct구조체IAP
IStoveProductList구조체IAP
IStovePurchasedProduct구조체IAP
IStovePurchaseParam구조체IAP
IStoveRestartAppIfNecessaryOutcome구조체Base
IStoveRestartAppIfNecessaryParam구조체Base
IStoveResult구조체Base
IStoveSendLogParam구조체Log
IStoveSetGameProfileParam구조체Base
IStoveSetPopupDisallowedParam구조체View
IStoveShopCategory구조체IAP
IStoveShopCategoryList구조체IAP
IStoveShutdownInfo구조체Base
IStoveSignin구조체Base
IStoveStartPurchaseOutcome구조체IAP
IStoveStartPurchaseParam구조체IAP
IStoveTermsAgreementOutcome구조체IAP
IStoveUser구조체Base
IStoveVerifyIdentificationPopupDestroyInfo구조체View
IStoveVerifyIdentificationPopupParam구조체View
IStoveVietnamAgeRatingInfo구조체Base
IStoveVietnamOverimmersionInfo구조체Base
Stove_AccessTokenRenewed함수Base
Stove_AutoPopup함수View
Stove_CloseAllPopups함수Base
Stove_ConfirmPurchase함수IAP
Stove_CouponPopup함수View
Stove_FetchInventory함수IAP
Stove_FetchProducts함수IAP
Stove_FetchShopCategories함수IAP
Stove_FetchTermsAgreement함수IAP
Stove_GetAccessToken함수Base
Stove_GetGds함수Base
Stove_GetSignin함수Base
Stove_GetUser함수Base
Stove_GetVersion함수Base
Stove_Initialize함수Base
Stove_ManualPopup함수View
Stove_NewsPopup함수View
Stove_OpenExternalUrl함수Base
Stove_OverImmersionNotification함수Base
Stove_PCBangCheckStatus함수PCBang
Stove_PCBangLogin함수PCBang
Stove_PCBangLogout함수PCBang
Stove_RestartAppIfNecessary함수Base
Stove_RunCallback함수Base
Stove_RunCallbackWithTimeout함수Base
Stove_SendLog함수Log
Stove_SetGameProfile함수Base
Stove_SetLanguage함수Base
Stove_SetLanguageEx함수Base
Stove_SetPopupDisallowed함수View
Stove_ShutdownNotification함수Base
Stove_StartPurchase함수IAP
Stove_Uninitialize함수Base
Stove_VerifyIdentificationPopup함수View
Stove_VietnamAgeRatingNotification함수Base
Stove_VietnamOverimmersionNotification함수Base
StoveReadOnlyArrayEnumerator구조체Base

기본 연동 안내

종류 연동 안내 · 모듈 Base · 버전 3.5.0

Description

이 가이드의 C# API 는 .NET (Mono / IL2CPP) 환경에서 SDK 의 모든 기능을 호출하기 위한 매니지드 래퍼예요. 내부적으로는 P/Invoke 를 통해 Native DLL 의 C flat 함수를 호출하지만, 호출자는 매니지드 타입(readonly struct, struct, enum, delegate) 만 다루면 돼요.

호환성: C# 7.3 (.NET Framework 4.6, Unity 2019 Mono) 이상.

CategoryForm
SDK API 메서드public static 메서드 (모듈별 static partial class)
결과 / 데이터 타입readonly struct — 불변, get-only property, GC 자동 관리
파라미터 타입일반 struct — get/set property, 호출자가 직접 채워서 전달
열거형enum (값 접두사 k_E...)
콜백delegate (lambda 캡처로 컨텍스트 전달)

Declaration Forms

모든 타입은 Stove.PCSDK.V3 네임스페이스 아래에 정의되며, 모듈마다 static partial class (Base, IAP, Log, PCBang, View) 가 존재해요. 동일 클래스 안에 메서드 · 구조체 · 콜백 delegate · 열거형이 함께 선언돼요. GamingServices 모듈은 신규 인터페이스에서 제공하지 않아요.

csharp
using Stove.PCSDK.V3;

// 또는 모듈별로 정적 import:
using static Stove.PCSDK.V3.Base;
using static Stove.PCSDK.V3.IAP;

using static 을 사용하면 클래스 접두사 없이 Stove_Initialize() 처럼 직접 호출할 수 있어요.

Naming Rules

CategoryPatternExample
SDK 메서드Stove_<Method> (모듈 토큰 없는 메서드. 단 PC방 모듈은 Stove_PCBang<Method> 유지)Stove_Initialize, Stove_StartPurchase, Stove_FetchProducts, Stove_PCBangLogin
결과 / 데이터 구조체IStove<Name>IStoveResult, IStoveCallbackResult, IStoveUser
파라미터 구조체IStove<Name>Param 또는 IStove<Name>ParamsIStoveInitializeParam, IStoveSetGameProfileParam
콜백 delegateOn<Action>CallbackOnRestartAppIfNecessaryCallback, OnAccessTokenRenewedCallback
열거형EStove<Module><Name>EStoveBaseMethodCode, EStoveCommonResultCode, EStoveLocale
열거형 값k_E<Enum><Value>k_EStoveCommonResultCode_Success, k_EStoveLocale_Ko

Memory Lifetime

본 가이드의 모든 타입은 매니지드 (C#) 타입이며 GC 가 관리해요. Native API 처럼 Destroy() 를 명시적으로 호출할 필요가 없어요.

ItemC#Native (ref.)
결과 / 데이터 객체readonly struct 값 복사, GC 관리IStove* 포인터, 호출자 Destroy
파라미터 객체일반 struct 직접 생성 후 값 전달Factory 함수로 생성, 호출자 Destroy
콜백 결과IStoveCallbackResult (struct), 콜백 종료 후 자동 소멸IStoveCallbackResult* SDK 소유
콜백 컨텍스트 전달람다 캡처void* userData 매개변수

본 API 의 비동기 메서드는 별도의 userData 매개변수를 받지 않아요. 콜백 안에서 사용할 게임 측 컨텍스트는 람다 캡처((cr, t) => { myCtx.Apply(t); }) 로 전달하세요.

콜백에 전달된 모든 매개변수는 매니지드 struct (값 복사) 이므로 콜백 종료 후에도 캡처해 두고 안전하게 사용할 수 있어요. Native API 의 "콜백 동안만 유효" 제약은 본 가이드에 적용되지 않아요.

Initialization Order

  1. IStoveRestartAppIfNecessaryParam 구조체를 생성하고 Environment, GameId, AppKey, WaitTimeMilliSec, LaunchStoveLauncher, PlatformName 을 설정해요. (IStoveRestartAppIfNecessaryParam)
  2. Stove_RestartAppIfNecessary(restartParam, onFinished) 를 호출해요 — 비동기. 콜백은 Stove_RunCallback() 이 호출되는 시점에 디스패치돼요.
  3. 게임 메인 루프(메인/UI 스레드)에서 매 프레임 Stove_RunCallback() 을 호출하기 시작해요. Stove_RestartAppIfNecessary() 호출 직후부터 이 루프가 돌아야 위 (2)의 콜백이 디스패치되어 (4)의 초기화로 이어져요.
  4. 콜백의 outcome.IsRestartRequired == false 분기에서 IStoveInitializeParam 구조체를 생성해요. View 를 함께 사용하려면 MainWndHandle, IAP 를 함께 사용하려면 ShopKey 도 설정해요. (IsRestartRequired == true 면 SDK 가 런처를 통해 재실행을 처리하므로 현재 프로세스는 종료됨. IStoveInitializeParam)
  5. 같은 분기에서 Stove_Initialize(initParam) 를 호출해요 — 동기, IStoveResult 를 즉시 반환해요. result.IsSuccessful 로 성공 여부를 확인해요.
  6. 종료 시 Stove_Uninitialize() 를 호출해요.

신규 인터페이스는 모듈별 초기화·종료가 없어요. Stove_Initialize() 한 번으로 결제·팝업·PC방·로그 등 모든 기능이 함께 동작해요.

csharp
using Stove.PCSDK.V3;
using static Stove.PCSDK.V3.Base;

// 1) 런처 확인 / 재실행 파라미터 구조체 생성 및 설정
var restartParam = new IStoveRestartAppIfNecessaryParam
{
    Environment        = "LIVE",          // "QA" / "SANDBOX" / "LIVE"
    GameId             = "my_game_id",
    AppKey             = "my_app_key",
    WaitTimeMilliSec   = 5000,
    LaunchStoveLauncher = true,
    PlatformName       = "stove",
};

// 2) 런처 실행 확인 (비동기). 콜백은 Stove_RunCallback() 이 호출되는 시점에 디스패치됩니다.
Stove_RestartAppIfNecessary(restartParam, (callbackResult, outcome) =>
{
    if (outcome.IsRestartRequired)
        return;  // SDK 가 런처를 통해 재실행 처리, 현재 프로세스는 종료됨

    // 4) SDK 초기화 (동기). initParam 의 MainWndHandle/ShopKey 설정에 따라 View·IAP 도 함께 초기화
    var initParam = new IStoveInitializeParam
    {
        // View 를 함께 사용하려면 MainWndHandle, IAP 를 함께 사용하려면 ShopKey 도 설정
        // MainWndHandle = myWindowHandle,
        // ShopKey       = "my_shop_key",
    };

    var result = Stove_Initialize(initParam);
    if (result.IsSuccessful)
    {
        // 초기화 완료, SDK 사용 가능
    }
    else
    {
        // 실패 처리: result.ResultCode, result.ExceptionMessage
    }
});

// 3) 매 프레임 / 매 tick 에서 콜백 실행 (메인 / UI 스레드)
//    Stove_RestartAppIfNecessary() 호출 직후부터 이 루프가 돌아야 위 (2)의 콜백이 디스패치되어 (4) 초기화로 이어집니다.
void OnUpdate()
{
    Stove_RunCallback();
}

// 5) 종료 시
Stove_Uninitialize();

Callback Execution Rules

  • 모든 비동기 메서드의 콜백은 Stove_RunCallback() 또는 Stove_RunCallbackWithTimeout(timeoutMillisec) 가 호출되는 스레드(메인 / UI 스레드) 에서 실행돼요. SDK 내부 스레드가 아니에요.
  • 콜백 시그니처는 delegate void On<Action>Callback(IStoveCallbackResult callbackResult, ...) 형태이며, 성공 여부는 callbackResult.Result.IsSuccessful 로 판정해요.
  • 1회성 콜백(Stove_VietnamAgeRatingNotification, Stove_VietnamOverimmersionNotification 등) 은 렌더링이 가능한 시점 이후에 호출되어야 해요. 게임 시작 후 첫 프레임이 그려진 뒤 등록 / 호출하세요.
  • 반복 호출 콜백(Stove_AccessTokenRenewed, Stove_OverImmersionNotification 등) 에 등록한 delegate 는 SDK 가 종료되거나 등록이 해제될 때까지 참조돼요. 캡처한 객체의 수명에 주의하세요.
  • 1회성 비동기 메서드의 onFinished 콜백은 필수 매개변수예요. 지정하지 않으면 k_EStoveCommonResultCode_InvalidParam(5) 이 발생해요.

Common Interface

모든 모듈이 공유하는 타입은 각 문서로 링크만 해요. 내용은 각 문서에서 확인하세요.

  • IStoveResult — 동기 메서드의 호출 결과예요. 메서드 코드, 결과 코드, 매니지드 예외 메시지를 담는 불변 구조체예요.
  • IStoveCallbackResult — 비동기 콜백으로 전달되는 결과예요. IStoveResult 와 외부 에러 정보(HTTP 코드 등) 를 함께 담아요.
TypeDocument
IStoveResultIStoveResult
IStoveCallbackResultIStoveCallbackResult

C# 에는 Native 의 IStoveTypeBase 에 대응하는 공개 타입이 없어요. 런타임 타입 식별은 내부 marshaling(네이티브 DLL 과의 상호운용) 과정에서만 쓰이며 API 표면에 노출되지 않아요. 자세한 내용은 EStoveBaseTypeKind 문서를 참고하세요.

Notes

  • Stove_RestartAppIfNecessary() 는 반드시 Stove_Initialize() 보다 먼저 호출해야 하며, 그 콜백을 받으려면 호출 직후부터 Stove_RunCallback() 을 게임 루프에서 돌리고 있어야 해요.
  • Stove_Initialize() 는 동기 메서드라 콜백을 받지 않지만, Stove_RestartAppIfNecessary() 의 콜백 안(outcome.IsRestartRequired == false 분기)에서 호출해야 해요.
  • 본 API 의 비동기 메서드는 userData 매개변수를 받지 않아요. 콜백 안에서 사용할 컨텍스트는 람다 캡처로 전달하세요.

See Also

DocumentContent
IStoveRestartAppIfNecessaryOutcomeStove_RestartAppIfNecessary() 콜백으로 전달되는 결과 (IsRestartRequired)

EStoveBaseMethodCode

종류 열거형 · 모듈 Base · 버전 3.5.0

Description

IStoveResult.MethodCode 로 조회하는 값으로, 어떤 SDK 메서드가 이 결과를 생성했는지 식별해요. 로깅과 오류 라우팅에 사용해요.

Declaration

csharp
public enum EStoveBaseMethodCode
{
    k_EStoveBaseMethodCode_Invalid = -1,
    k_EStoveBaseMethodCode_BaseInitialize = 1,
    // ... 이하 열거값 표 참조
    k_EStoveBaseMethodCode_GetTranslateLanguage = 119,

    k_EStoveBaseMethodCode_Max = 0x7fffffff
}

Enum Values

Lifecycle / Versioning

CodeNameDescription
-1k_EStoveBaseMethodCode_Invalid사용하지 않아요
1k_EStoveBaseMethodCode_BaseInitializeStove_Initialize
2k_EStoveBaseMethodCode_BaseUninitializeStove_Uninitialize
5k_EStoveBaseMethodCode_BaseGetVersionStove_GetVersion
6 ~ 63사용하지 않아요 (예약 구간)

Public APIs

CodeNameDescription
64k_EStoveBaseMethodCode_GetAccessTokenStove_GetAccessToken
65k_EStoveBaseMethodCode_AccessTokenRenewedStove_AccessTokenRenewed
66k_EStoveBaseMethodCode_GetUserStove_GetUser
67k_EStoveBaseMethodCode_SetLanguageStove_SetLanguage / Stove_SetLanguageEx
68k_EStoveBaseMethodCode_OverImmersionNotificationStove_OverImmersionNotification
69k_EStoveBaseMethodCode_ShutdownNotificationStove_ShutdownNotification
70, 71사용하지 않아요 (폐기된 내부 메서드)
72k_EStoveBaseMethodCode_SetGameProfileStove_SetGameProfile
73k_EStoveBaseMethodCode_GetGdsStove_GetGds
74k_EStoveBaseMethodCode_GetSigninStove_GetSignin
75k_EStoveBaseMethodCode_RestartAppIfNecessaryStove_RestartAppIfNecessary(폐기 예정)
76k_EStoveBaseMethodCode_RestartAppIfNecessaryAsyncStove_RestartAppIfNecessary 의 비동기 처리 경로
77k_EStoveBaseMethodCode_OpenExternalUrlStove_OpenExternalUrl
78k_EStoveBaseMethodCode_GetCloudSavingPathStove_GetCloudSavingPath — 스토어인디 전용
79k_EStoveBaseMethodCode_VietnamAgeRatingNotificationStove_VietnamAgeRatingNotification
80k_EStoveBaseMethodCode_VietnamOverimmersionNotificationStove_VietnamOverimmersionNotification
81k_EStoveBaseMethodCode_CloseAllPopupsStove_CloseAllPopups(단일 바이너리 통합 — IAP+View 팝업을 함께 닫아요)
82 ~ 95사용하지 않아요 (예약 구간)

Private getters (다른 SDK 모듈에 노출되는 비공개 게터 — 게임에는 노출되지 않음)

CodeNameDescription
115k_EStoveBaseMethodCode_GetEnvPrivate비공개 게터 — 다른 SDK 모듈 전용, 게임에는 노출되지 않아요
116k_EStoveBaseMethodCode_GetGameIdPrivate비공개 게터 — 다른 SDK 모듈 전용, 게임에는 노출되지 않아요
117k_EStoveBaseMethodCode_GetMemberNoPrivate비공개 게터 — 다른 SDK 모듈 전용, 게임에는 노출되지 않아요
118k_EStoveBaseMethodCode_GetPublicIp비공개 게터 — 다른 SDK 모듈 전용, 게임에는 노출되지 않아요
119k_EStoveBaseMethodCode_GetTranslateLanguage비공개 게터 — 다른 SDK 모듈 전용, 게임에는 노출되지 않아요

기타

CodeNameDescription
120 ~ 0x7ffffffe사용하지 않아요 (예약 구간)
0x7fffffffk_EStoveBaseMethodCode_Max사용하지 않아요

이름에 Internal 이 들어간 값(3, 4, 96 ~ 108, 110 ~ 114)은 표에서 제외해요. 109 는 소스에 이름 없이 "Deprecated" 주석만 있는 예약 번호예요.

Example

csharp
using static Stove.PCSDK.V3.Base;

IStoveResult result = Stove_Initialize();

if (result.MethodCode == (uint)EStoveBaseMethodCode.k_EStoveBaseMethodCode_BaseInitialize)
{
    // 이 결과가 Stove_Initialize() 호출로 생성되었음을 확인하는 로직을 구현해 주세요.
}

Notes

  • 96번대 이후의 Internal 메서드 코드는 재생시간 보고, 서버 설정, 토큰 처리 등 SDK 내부 동작에 사용되며 게임에서 직접 호출하는 API 와 대응하지 않아요.
  • 115~119번의 Private 게터는 이름에 Internal 이 없어 표에 포함했지만, 다른 SDK 모듈에만 노출되는 비공개 API 이며 게임에는 제공되지 않아요.
  • IStoveResult.MethodCodeuint 타입이므로 이 열거형 값과 비교할 때는 (uint)EStoveBaseMethodCode.k_... 로 형변환해요.
  • 이전 형상에서는 값 이름에 밑줄이 없었어요(k_EStoveBaseMethodCodeBaseInitialize). 현재 소스는 k_EStoveBaseMethodCode_BaseInitialize 처럼 열거형 이름과 값 이름 사이에 밑줄이 들어가요.

Changelog

VersionChange
3.5.0최초 제공

See Also


EStoveBaseTypeKind

종류 열거형 · 모듈 Base · 버전 3.5.0

Description

SDK 구조체의 구체적인 타입을 식별하는 값이에요. 신규 flat C 인터페이스에서는 Stove_CreateParam() 에 특정 파라미터 객체를 요청할 때, 그리고 IStoveTypeBase::GetTypeKind() 로 런타임 타입을 식별할 때 사용해요.

C# 인터페이스에는 Stove_CreateParam() 에 대응하는 공개 함수가 없어요. IStoveInitializeParam, IStoveSetGameProfileParam 같은 파라미터 구조체는 게임 코드가 new IStoveXxx { ... } 로 직접 생성하며, 이 열거형은 내부 marshaling(네이티브 DLL 과의 상호운용) 과정에서 SDK 내부적으로만 사용돼요.

값 범위는 0 ~ 999 예요.

Declaration

csharp
public enum EStoveBaseTypeKind
{
    k_EStoveBaseTypeKind_Invalid = -1,
    k_EStoveBaseTypeKind_Base = 0,
    // ... 이하 열거값 표 참조
    k_EStoveBaseTypeKind_SetGameProfileParam = 502,

    k_EStoveBaseTypeKind_Max = 0x7fffffff,
}

Enum Values

Result / Data types (SDK 가 반환하거나 콜백으로 전달)

CodeNameDescription
-1k_EStoveBaseTypeKind_Invalid사용하지 않아요
0k_EStoveBaseTypeKind_Base내부 기준 타입이에요. C# 인터페이스에는 대응하는 공개 구조체가 없어요.
1k_EStoveBaseTypeKind_StoveResultIStoveResult
2k_EStoveBaseTypeKind_StoveCallbackResultIStoveCallbackResult
3k_EStoveBaseTypeKind_StoveUserIStoveUser
4k_EStoveBaseTypeKind_StoveAccessTokenIStoveAccessToken
5k_EStoveBaseTypeKind_StoveGdsIStoveGds
6k_EStoveBaseTypeKind_StoveSigninIStoveSignin
7k_EStoveBaseTypeKind_StoveOverImmersionInfoIStoveOverImmersionInfo
8k_EStoveBaseTypeKind_StoveVietnamAgeRatingInfoIStoveVietnamAgeRatingInfo
9k_EStoveBaseTypeKind_StoveVietnamOverimmersionInfoIStoveVietnamOverimmersionInfo
10k_EStoveBaseTypeKind_StoveShutdownInfoIStoveShutdownInfo
11k_EStoveBaseTypeKind_StoveRestartAppIfNecessaryOutcomeIStoveRestartAppIfNecessaryOutcome
12 ~ 499사용하지 않아요 (결과/데이터 타입과 파라미터 타입 구간 사이의 예약 구간)

Parameter types (내부적으로 파라미터 marshaling 에 사용)

CodeNameDescription
500k_EStoveBaseTypeKind_RestartAppIfNecessaryParamIStoveRestartAppIfNecessaryParam
501k_EStoveBaseTypeKind_InitializeParamIStoveInitializeParam
502k_EStoveBaseTypeKind_SetGameProfileParamIStoveSetGameProfileParam
503 ~ 0x7ffffffe사용하지 않아요 (예약 구간)
0x7fffffffk_EStoveBaseTypeKind_Max사용하지 않아요

Example

csharp
// C# 게임 코드는 이 열거형을 직접 다루지 않습니다.
// 파라미터는 아래와 같이 값 타입을 직접 생성해서 사용합니다.
IStoveSetGameProfileParam gameProfileParam = new IStoveSetGameProfileParam
{
    WorldId = "world_01",
    CharacterNo = 123456789L,
};

Notes

  • 신규 flat C 인터페이스에서는 이 열거형을 Stove_CreateParam() 호출에 직접 사용하지만, C# 인터페이스는 대응하는 공개 생성 함수가 없어 게임 코드에서 이 열거형을 참조할 일이 거의 없어요.
  • 값 500(k_EStoveBaseTypeKind_RestartAppIfNecessaryParam)이 신설되고 InitializeParam / SetGameProfileParam 이 501/502 로 한 칸씩 밀리는 등, 이전 형상(InitializeParam=500, GameProfileParams=501) 과 번호가 달라졌어요.
  • StoveOverImmersionInfo(7), StoveShutdownInfo(10) 는 이전 형상에서 StoveOverImmersion, StoveShutdown 이라는 이름이었어요.

Changelog

VersionChange
3.5.0최초 제공

See Also


EStoveCommonResultCode

종류 결과코드 · 모듈 Base · 버전 3.5.0

Description

모든 Stove SDK 모듈이 공통으로 사용하는 결과 코드예요. IStoveResult.ResultCode 로 조회하며, 0(Success)이면 성공이에요. 값 범위는 0~299 예요.

모듈별 대역으로 재배치된 전용 코드는 EStoveResultCode(300~503)를 참조하세요.

Declaration

csharp
public enum EStoveCommonResultCode
{
    k_EStoveCommonResultCode_Success = 0,
    k_EStoveCommonResultCode_Fail = 1,
    // ... 이하 열거값 표 참조
    k_EStoveCommonResultCode_UnknownError = 255,

    k_EStoveCommonResultCode_Max = 0x7fffffff
}

Enum Values

일반 결과

CodeNameDescriptionShow to UserIn-Game Message
0k_EStoveCommonResultCode_Success성공x
1k_EStoveCommonResultCode_Fail일반 실패 (상세 원인은 로그/ErrorMessage 로 확인)x

설정/파라미터 검증 실패

CodeNameDescriptionShow to UserIn-Game Message
2k_EStoveCommonResultCode_InvalidConfig설정값이 유효하지 않아요 (설정값 확인)x
3k_EStoveCommonResultCode_InvalidLogLevel로그 레벨 값이 유효하지 않아요 (로그 레벨 값 확인)x
4k_EStoveCommonResultCode_InvalidLogPath로그 경로가 유효하지 않아요 (로그 경로 확인)x
5k_EStoveCommonResultCode_InvalidParam파라미터가 유효하지 않아요 (호출부 파라미터 값 확인 후 수정)x
6 ~ 15사용하지 않아요 (예약 구간)x

초기화 상태 오류

CodeNameDescriptionShow to UserIn-Game Message
16k_EStoveCommonResultCode_BaseNotInitializedSDK 가 초기화되지 않았어요 (Stove_Initialize() 선행 호출)x
17k_EStoveCommonResultCode_NotInitialized해당 모듈이 초기화되지 않았어요 (해당 모듈 초기화 선행)x
18k_EStoveCommonResultCode_AlreadyInitialized이미 초기화되어 있어요 (중복 초기화 호출 제거)x

토큰/엔티티 오류

CodeNameDescriptionShow to UserIn-Game Message
19k_EStoveCommonResultCode_InvalidAccessTokenAccessToken 이 유효하지 않아요 (Stove_GetAccessToken() 등으로 토큰 재발급)O로그인 세션이 만료되었습니다. 게임 종료 후 다시 실행해 주세요. [확인]
20k_EStoveCommonResultCode_NullTokenEntity토큰 엔티티가 null 이에요 (토큰 발급 상태 확인)x
21k_EStoveCommonResultCode_NullEntity엔티티가 null 이에요 (응답 객체 null 여부 확인)x

HTTP/응답 오류

CodeNameDescriptionShow to UserIn-Game Message
22k_EStoveCommonResultCode_HttpErrorHTTP 오류가 발생했어요 (네트워크 상태 확인 후 재시도)O네트워크 연결이 원활하지 않습니다. 네트워크 상태를 확인하고 다시 실행해 주세요. [확인]
23k_EStoveCommonResultCode_ResponseError서버 응답 오류예요 (서버 응답 확인)O네트워크 연결이 원활하지 않습니다. 네트워크 상태를 확인하고 다시 실행해 주세요. [확인]
24k_EStoveCommonResultCode_ResponseInvalidCode서버 응답 코드가 유효하지 않아요 (서버 응답 코드 확인)O네트워크 연결이 원활하지 않습니다. 네트워크 상태를 확인하고 다시 실행해 주세요. [확인]
25k_EStoveCommonResultCode_ResponseValueIsNull서버 응답 값이 null 이에요 (서버 응답 값 확인)O네트워크 연결이 원활하지 않습니다. 네트워크 상태를 확인하고 다시 실행해 주세요. [확인]
26k_EStoveCommonResultCode_ResponseInvalidValueFormat서버 응답 값의 형식이 유효하지 않아요 (서버 응답 형식 확인)O네트워크 연결이 원활하지 않습니다. 네트워크 상태를 확인하고 다시 실행해 주세요. [확인]

기타 상태

CodeNameDescriptionShow to UserIn-Game Message
27, 28사용하지 않아요 (폐기된 번호)x
29k_EStoveCommonResultCode_AsyncOperationInProgress비동기 작업이 이미 진행 중이에요 (진행 중인 비동기 작업 완료 후 재호출)x
30k_EStoveCommonResultCode_BaseUninitializedSDK 가 이미 해제(Stove_Uninitialize)되었어요 (Stove_Initialize() 재호출)x
31k_EStoveCommonResultCode_NotSupportedCountry지원하지 않는 국가/지역이에요 (국가/지역 제한 확인 후 호출 중단)x
33k_EStoveCommonResultCode_PopupNotCreated팝업이 생성되지 않고 종료되었어요. 내부 정리 전용 코드로, onDestroy 콜백으로만 전달되며 래퍼가 가로채 사용자 delegate 를 호출하지 않아요(게임 코드에는 전달되지 않아요)x
34k_EStoveCommonResultCode_WebviewClosedBeforeComplete작업이 끝나기 전에 웹뷰가 닫혔어요 (사용자의 취소로 간주하고 재시도 여부 판단)O구매가 정상적으로 완료되지 않았습니다. 다시 시도해 주세요. [확인]
32, 35 ~ 39사용하지 않아요 (예약 구간)x

Local DB 실패 (모든 Stove SDK 모듈 공통)

CodeNameDescriptionShow to UserIn-Game Message
40k_EStoveCommonResultCode_LocalDbCreateWorkingDirectoryFailed로컬 DB 작업 디렉터리 생성에 실패했어요 (디렉터리 권한/경로 확인)x
41k_EStoveCommonResultCode_LocalDbConnectFailed로컬 DB 연결에 실패했어요 (재시도)x
42k_EStoveCommonResultCode_LocalDbCreateTableFailed로컬 DB 테이블 생성에 실패했어요 (재시도)x
43k_EStoveCommonResultCode_LocalDbDisconnectFailed로컬 DB 연결 해제에 실패했어요 (재시도)x
44k_EStoveCommonResultCode_LocalDbWriteFailed로컬 DB 쓰기에 실패했어요 (재시도)x
45 ~ 59사용하지 않아요 (Local DB/페이로드/저장소 대역을 위한 예약 구간)x

웹뷰/팝업 UI 실패 (모듈 공통)

CodeNameDescriptionShow to UserIn-Game Message
60k_EStoveCommonResultCode_ViewUiNotInitialized팝업/웹뷰 UI 서브시스템이 초기화되지 않았어요 (View/IAP 초기화 여부 확인)x
61k_EStoveCommonResultCode_ViewUiUninitFailed팝업/웹뷰 UI 서브시스템 종료에 실패했어요 (로그 확인)x
62k_EStoveCommonResultCode_WebviewCreateFail웹뷰 생성에 실패했어요 (재시도)x
63k_EStoveCommonResultCode_WebviewLoadUrlFail웹뷰에서 URL 로드에 실패했어요 (URL/네트워크 상태 확인)x
64k_EStoveCommonResultCode_WebviewCreateCookieFail웹뷰 쿠키 설정에 실패했어요 (재시도)O(View) 페이지를 불러올 수 없습니다. 다시 시도해 주세요. [확인] (IAP) 구매를 위해서는 약관 동의가 필요합니다. 현재 약관 동의 화면을 불러오지 못했습니다. 다시 시도해 주세요. [확인]
65k_EStoveCommonResultCode_WebviewCloseAllFail모든 웹뷰/팝업 닫기에 실패했어요 (재시도)x
66k_EStoveCommonResultCode_WebviewCloseFail웹뷰/팝업 닫기에 실패했어요 (재시도)x
67k_EStoveCommonResultCode_NoPopupData표시할 팝업 데이터가 없어요 (정상 상태로 처리(팝업 표시 대상 없음))O팝업 설정 정보가 존재하지 않아 표시할 창이 없습니다. [확인]
68k_EStoveCommonResultCode_CloseAllPopupsFailedStove_CloseAllPopups() 가 하나 이상의 팝업을 닫지 못했어요(IAP+View 통합 호출) (재시도)x
69 ~ 79사용하지 않아요 (웹뷰/팝업 UI 코드를 위한 예약 구간)x

파라미터/페이로드 검증 (모듈 공통)

CodeNameDescriptionShow to UserIn-Game Message
80k_EStoveCommonResultCode_ParameterLengthExceeded요청 파라미터가 최대 길이를 초과했어요 (파라미터 길이 확인)O결제 정보가 유효하지 않아 결제를 진행할 수 없습니다. 다시 시도해 주세요. [확인]
81k_EStoveCommonResultCode_InvalidJsonStringJSON 문자열 형식이 유효하지 않아요 (요청 페이로드 확인)O결제 정보가 유효하지 않아 결제를 진행할 수 없습니다. 다시 시도해 주세요. [확인]
82k_EStoveCommonResultCode_PayloadSizeExceeded페이로드가 허용 최대 크기를 초과했어요 (페이로드 크기 확인)x
83 ~ 248사용하지 않아요 (예약 구간)x

네트워크 전송 실패

CodeNameDescriptionShow to UserIn-Game Message
249k_EStoveCommonResultCode_NetworkTransportError네트워크 전송 오류예요. IStoveCallbackResult.ExternalError 로 HTTP 백엔드의 네이티브 오류 코드가 전달돼요(예: WinHTTP 12002/12007/12029) (ExternalError 값을 확인 후 재시도)x
250사용하지 않아요 (예약 구간)x

시스템/런타임 실패

CodeNameDescriptionShow to UserIn-Game Message
251k_EStoveCommonResultCode_PcsdkDllNotFoundPCSDK DLL 을 찾을 수 없어요 (PCSDK DLL 배치 확인)x
252k_EStoveCommonResultCode_NotImplemented구현되지 않은 기능이에요 (호출 제거 또는 대체 API 확인)x
253k_EStoveCommonResultCode_UnmanagedException관리되지 않는(unmanaged) 예외가 발생했어요 (예외 로그 확인)O일시적으로 문제가 발생했습니다. 다시 시도해 주세요. [확인]
254k_EStoveCommonResultCode_ManagedException관리되는(managed) 예외가 발생했어요 (예외 로그 확인)O일시적으로 문제가 발생했습니다. 다시 시도해 주세요. [확인]
255k_EStoveCommonResultCode_UnknownError알 수 없는 오류예요 (상세 로그 확인)x
256 ~ 0x7ffffffe사용하지 않아요 (예약 구간)x
0x7fffffffk_EStoveCommonResultCode_Max사용하지 않아요x

아래 코드를 받으면 반드시 게임을 종료해야 해요. 정상 진행이 불가능한 상태예요.

  • 19 k_EStoveCommonResultCode_InvalidAccessToken — 로그인 세션 만료로 게임 종료 후 재실행이 필요해요

Example

csharp
using static Stove.PCSDK.V3.Base;

IStoveResult result = Stove_Uninitialize();

if (result.IsSuccessful)
{
    // 성공 시 로직을 구현해 주세요.
}
else
{
    // 실패 시 로직을 구현해 주세요.
}

Notes

  • 모든 SDK API 및 다른 SDK 모듈이 공통으로 사용하는 결과 코드예요.
  • 모듈별 대역으로 재배치된 전용 코드는 EStoveResultCode(300~503)로 정의되며, 번호가 이 열거형과 겹치지 않아요.
  • 단일 바이너리 통합으로 대역이 크게 늘었어요. 이전 형상에서는 이 열거형이 32번대까지만 정의되어 있었지만, 현재는 웹뷰/팝업 UI 코드(60 ~ 68), 파라미터/페이로드 검증 코드(80 ~ 82) 등이 새로 이 열거형에 흡수되어 0 ~ 255 전 구간에 값이 분포해요.
  • k_EStoveCommonResultCode_PopupNotCreated(33)는 내부 정리 전용이며 사용자 delegate 로 전달되지 않지만, 이름에 Internal 이 포함되어 있지 않아 표에는 포함했어요.

Changelog

VersionChange
3.5.0최초 제공 (구 형상 대비 웹뷰/팝업 UI, 파라미터/페이로드 검증 코드 흡수)

See Also


EStoveDiscountType

종류 열거형 · 모듈 IAP · 버전 3.5.0

Description

IStoveProduct.DiscountType 으로 반환되는 값이에요. IStoveProduct.DiscountTypeValue 의 값을 퍼센트로 해석할지, 정액으로 해석할지를 결정해요.

Declaration

csharp
public enum EStoveDiscountType
{
    k_EStoveDiscountType_None = 0,
    k_EStoveDiscountType_FixedRate = 1,
    k_EStoveDiscountType_FlatRate = 2,

    k_EStoveDiscountType_Max = 0x7fffffff
}

Enum Values

CodeNameDescription
0k_EStoveDiscountType_None할인 없음
1k_EStoveDiscountType_FixedRate비율 할인 (예: DiscountTypeValue 가 10이면 10% 할인)
2k_EStoveDiscountType_FlatRate정액 할인 (예: DiscountTypeValue 가 상품 화폐 단위의 정액 할인 금액)
0x7fffffffk_EStoveDiscountType_Max사용하지 않아요

Example

csharp
if (product.DiscountType == EStoveDiscountType.k_EStoveDiscountType_FixedRate)
{
    // product.DiscountTypeValue 를 퍼센트로 해석하는 로직을 구현해 주세요.
}

Notes

  • IStoveProduct.IsDiscountedtrue 인 상품에서만 이 값이 유효해요.

See Also


EStoveIAPMethodCode

종류 열거형 · 모듈 IAP · 버전 3.5.0

Description

IStoveResult.MethodCode 로 조회하며, 어떤 결제 API 가 이 결과를 만들었는지 식별해요. 로깅이나 오류 처리 분기에 사용해요.

값은 IAP 모듈 블록(2000번대) 안에서 순번으로 부여돼요.

Declaration

csharp
public enum EStoveIAPMethodCode
{
    k_EStoveIAPMethodCode_Invalid = -1,
    k_EStoveIAPMethodCode_FetchShopCategories = 2000,
    // ... 이하 열거값 표 참조
    k_EStoveIAPMethodCode_Max = 0x7fffffff
}

Enum Values

CodeNameDescription
-1k_EStoveIAPMethodCode_Invalid사용하지 않아요
2000k_EStoveIAPMethodCode_FetchShopCategoriesStove_FetchShopCategories
2001k_EStoveIAPMethodCode_FetchProductsStove_FetchProducts
2002k_EStoveIAPMethodCode_StartPurchaseStove_StartPurchase
2003k_EStoveIAPMethodCode_ConfirmPurchaseStove_ConfirmPurchase
2004k_EStoveIAPMethodCode_FetchInventoryStove_FetchInventory
2005k_EStoveIAPMethodCode_FetchTermsAgreementStove_FetchTermsAgreement
2006k_EStoveIAPMethodCode_WithdrawGameStove_WithdrawGame — 로스트아크모바일 전용
0x7fffffffk_EStoveIAPMethodCode_Max사용하지 않아요

Example

csharp
if (callbackResult.Result.MethodCode == (uint)EStoveIAPMethodCode.k_EStoveIAPMethodCode_StartPurchase)
{
    // Stove_StartPurchase() 호출에서 발생한 결과입니다.
}

Notes

  • 모듈별 EStoveIAPResultCode 는 삭제되었어요. 결과 코드는 공통(EStoveCommonResultCode)과 모듈별(EStoveResultCode) 열거형으로 통합되었어요.
  • IStoveResult.MethodCodeuint 타입이므로 비교 시 형변환이 필요해요.
  • 단일 바이너리 통합 이전에 있던 Initialize / Uninitialize / GetVersion 등 라이프사이클 코드는 Base 쪽 열거형으로 옮겨졌어요.

See Also


EStoveIAPTypeKind

종류 열거형 · 모듈 IAP · 버전 3.5.0

Description

Native(C) 인터페이스에서는 Stove_CreateParam() 에 전달해 원하는 결제 파라미터 객체를 생성하고, IStoveTypeBase::GetTypeKind() 로 객체의 실제 타입을 런타임에 확인하는 용도로 사용해요.

C# 인터페이스에서는 파라미터가 일반 struct(IStoveFetchProductsParam 등)로 제공되므로 호출자가 이 값을 직접 사용할 일은 없어요. Interop 계층이 네이티브 파라미터 객체를 생성할 때 내부적으로 이 값을 사용해요.

값의 범위는 2000~2999 예요. 이 중 2000번대는 SDK 가 콜백으로 전달하는 결과/데이터 타입이고, 2500번대는 파라미터 타입이에요. 값이 20개를 넘어 성격별로 나누어 정리했어요.

Declaration

csharp
public enum EStoveIAPTypeKind
{
    k_EStoveIAPTypeKind_Invalid = -1,
    k_EStoveIAPTypeKind_ShopCategory = 2000,
    // ... 이하 열거값 표 참조
    k_EStoveIAPTypeKind_Max = 0x7fffffff
}

Enum Values

CodeNameDescription
-1k_EStoveIAPTypeKind_Invalid사용하지 않아요

결과 / 데이터 타입 (SDK 가 콜백으로 전달)

CodeNameDescription
2000k_EStoveIAPTypeKind_ShopCategoryIStoveShopCategory — 상점 카테고리 항목
2001k_EStoveIAPTypeKind_ProductIStoveProduct — 상품 항목
2002k_EStoveIAPTypeKind_StartPurchaseOutcomeIStoveStartPurchaseOutcome — 구매 시작 결과 (renamed from PurchaseResult)
2003k_EStoveIAPTypeKind_PurchasedProductIStovePurchasedProduct — 구매 확정된 상품 항목
2004k_EStoveIAPTypeKind_ChargeInfoIStoveChargeInfo — 결제 화폐(차지) 정보
2005k_EStoveIAPTypeKind_InventoryItemIStoveInventoryItem — 인벤토리(구매 내역) 항목
2006사용하지 않아요 (VoidedPurchase — 내부 전용으로 격하)
2007사용하지 않아요 (환불 조회(VoidedPurchasesEx) 기능이 소스에서 삭제되어 예약 번호로 남음)
2008k_EStoveIAPTypeKind_ConfirmPurchaseOutcomeIStoveConfirmPurchaseOutcome — 구매 확정 결과
2009k_EStoveIAPTypeKind_WithdrawGameOutcomeIStoveWithdrawGameOutcome — 게임 탈퇴 결과 (로스트아크모바일 전용)
2010k_EStoveIAPTypeKind_TermsAgreementOutcomeIStoveTermsAgreementOutcome — 약관 동의 조회 결과
2011k_EStoveIAPTypeKind_ShopCategoryListIStoveShopCategoryList — 상점 카테고리 목록
2012k_EStoveIAPTypeKind_ProductListIStoveProductList — 상품 목록
2013k_EStoveIAPTypeKind_InventoryListIStoveInventoryList — 인벤토리(구매 내역) 목록

파라미터 타입 (호출자가 Stove_CreateParam 으로 생성)

CodeNameDescription
2500k_EStoveIAPTypeKind_FetchProductsParamIStoveFetchProductsParam — 상품 조회 파라미터
2501k_EStoveIAPTypeKind_OrderProductParamIStoveOrderProductParam — 주문 상품 파라미터
2502k_EStoveIAPTypeKind_PurchaseParamIStovePurchaseParam — 구매 동작 파라미터
2503k_EStoveIAPTypeKind_StartPurchaseParamIStoveStartPurchaseParam — 구매 시작 파라미터
2504k_EStoveIAPTypeKind_FetchTermsAgreementParamIStoveFetchTermsAgreementParam — 약관 동의 조회 파라미터
2505사용하지 않아요 (PaymentParam — 내부 전용으로 격하)
2506k_EStoveIAPTypeKind_WithdrawGameParamIStoveWithdrawGameParam — 게임 탈퇴 파라미터 (로스트아크모바일 전용)
2507k_EStoveIAPTypeKind_ConfirmPurchaseParamIStoveConfirmPurchaseParam — 구매 확정 파라미터
2508사용하지 않아요 (환불 조회(FetchVoidedPurchasesExParam) 기능이 소스에서 삭제되어 예약 번호로 남음)
CodeNameDescription
0x7fffffffk_EStoveIAPTypeKind_Max사용하지 않아요

VoidedPurchase · PaymentParam 관련 번호는 내부 전용으로 전환되어 표에서 제외했어요. VoidedPurchasesEx · FetchVoidedPurchasesExParam 관련 번호(2007, 2508)는 환불 조회 기능 자체가 소스에서 삭제되어 예약 번호로만 남아 있어요. v2 관리형 API 에는 VoidedPurchase 계열 타입이 제공되지 않아요.

Example

csharp
// C# 인터페이스에서는 이 값을 직접 사용하지 않으며,
// 아래와 같이 대응하는 struct 를 바로 생성해 사용합니다.
var fetchProductsParam = new IStoveFetchProductsParam { CategoryId = "", PageIndex = 1, PageSize = 20 };

Notes

  • Base, IAP 등 모듈별 TypeKind 열거형은 서로 겹치지 않는 정수 범위를 사용해요.
  • 2000번대(결과/데이터 타입)는 호출자가 직접 생성하지 않으며, 콜백으로 전달되는 값의 타입으로만 나타나요.
  • k_EStoveIAPTypeKind_StartPurchaseOutcome 은 구 인터페이스의 IStovePurchaseResult 에 대응해요. 이름이 바뀌었어요.

See Also


EStoveLocale

종류 열거형 · 모듈 Base · 버전 3.5.0

Description

PCSDK UI 언어 선택자예요. k_EStoveLocale_System 은 사용자의 OS 언어를 따라요.

[Obsolete] 로 표시된 Stove_SetLanguage(EStoveLocale language) 오버로드에서 사용해요. 이 오버로드는 내부적으로 값을 문자열로 변환해 Stove_SetLanguageEx(string language) 와 동일한 네이티브 API 를 호출해요.

이 열거형을 사용하는 Stove_SetLanguage(EStoveLocale) 오버로드는 [Obsolete("Use Stove_SetLanguageEx(string language) instead.")] 로 표시되어 있어요. 신규 코드는 문자열을 받는 Stove_SetLanguageEx(string) 를 사용해야 해요.

Declaration

csharp
public enum EStoveLocale
{
    k_EStoveLocale_Invalid = -1,

    k_EStoveLocale_System = 0,
    k_EStoveLocale_En = 1,
    k_EStoveLocale_Ko = 2,
    k_EStoveLocale_Ja = 3,
    k_EStoveLocale_ZhCn = 4,
    k_EStoveLocale_ZhTw = 5,
    k_EStoveLocale_De = 6,
    k_EStoveLocale_Fr = 7,
    k_EStoveLocale_Es = 8,
    k_EStoveLocale_Pt = 9,
    k_EStoveLocale_Th = 10,
    k_EStoveLocale_Vi = 11,

    k_EStoveLocale_Max = 0x7fffffff
}

Enum Values

CodeNameDescription
-1k_EStoveLocale_Invalid사용하지 않아요
0k_EStoveLocale_SystemOS 언어를 따라요("system" 문자열로 매핑)
1k_EStoveLocale_En영어("en")
2k_EStoveLocale_Ko한국어("ko")
3k_EStoveLocale_Ja일본어("ja")
4k_EStoveLocale_ZhCn중국어 간체("zh-cn")
5k_EStoveLocale_ZhTw중국어 번체("zh-tw")
6k_EStoveLocale_De독일어("de")
7k_EStoveLocale_Fr프랑스어("fr")
8k_EStoveLocale_Es스페인어("es")
9k_EStoveLocale_Pt포르투갈어("pt")
10k_EStoveLocale_Th태국어("th")
11k_EStoveLocale_Vi베트남어("vi")
0x7fffffffk_EStoveLocale_Max사용하지 않아요

Example

csharp
using static Stove.PCSDK.V3.Base;

// 신규 코드는 Stove_SetLanguageEx(string) 를 사용해야 합니다.
IStoveResult result = Stove_SetLanguageEx("ko");

Notes

  • EStoveLocale 은 C# 인터페이스에만 있는 열거형이에요. 신규 flat C 인터페이스에는 대응하는 열거형이 없으며, 언어 설정은 문자열(const wchar_t*) 하나만 받는 Stove_SetLanguage() 로 제공돼요.
  • C# 소스(BaseAPIV2.cs)의 LocaleToString() 은 이 열거형 값을 소문자 문자열로 변환해요. 매핑 규칙은 '_' → '-'(예: k_EStoveLocale_ZhCn → "zh-cn")이에요.
  • k_EStoveLocale_Invalid, k_EStoveLocale_Max 는 변환 시 모두 "system" 으로 처리돼요.
  • 이 열거형을 사용하는 Stove_SetLanguage(EStoveLocale) API 자체가 [Obsolete] 이며, 신규 코드는 Stove_SetLanguageEx(string) 를 사용해야 해요.

Changelog

VersionChange
3.5.0최초 제공

See Also

  • 없음

EStoveLogMethodCode

종류 열거형 · 모듈 Log · 버전 3.5.0

Description

IStoveResult 를 만든 로그 기능의 API 가 무엇인지 식별하는 값이에요. IStoveResult.MethodCode 로 조회할 수 있으며, 로그 기록이나 오류 처리 분기에 사용해요.

이 열거형이 쓰는 정수 범위는 6000 ~ 6999 예요.

Declaration

csharp
public enum EStoveLogMethodCode
{
    k_EStoveLogMethodCode_Invalid = -1,
    k_EStoveLogMethodCode_SendLog = 6000,
    k_EStoveLogMethodCode_Max = 0x7fffffff
}

Enum Values

CodeNameDescription
-1k_EStoveLogMethodCode_Invalid사용하지 않아요
6000k_EStoveLogMethodCode_SendLogStove_SendLog
0x7fffffffk_EStoveLogMethodCode_Max사용하지 않아요

Example

csharp
using static Stove.PCSDK.V3.Log;

void OnSendLogCallback(IStoveCallbackResult callbackResult)
{
    uint methodCode = callbackResult.Result.MethodCode; // k_EStoveLogMethodCode_SendLog
}

Notes

  • 로그 기능은 공개 API 가 Stove_SendLog 하나뿐이므로 MethodCode 값도 하나예요.
  • 이전 인터페이스에 있던 모듈별 결과 코드 열거형 EStoveLogResultCode 는 삭제되었어요. 실패 원인은 IStoveResult.ResultCode 로 확인하며, 값은 모듈별 EStoveResultCode 또는 공통 EStoveCommonResultCode 에 정의되어 있어요.

See Also


EStoveLogTypeKind

종류 열거형 · 모듈 Log · 버전 3.5.0

Description

로그 기능이 다루는 파라미터 구조체의 구체적인 타입을 식별하는 값이에요.

이 열거형이 쓰는 정수 범위는 6000 ~ 6999 예요.

Declaration

csharp
public enum EStoveLogTypeKind
{
    k_EStoveLogTypeKind_Invalid = -1,
    k_EStoveLogTypeKind_SendLogParam = 6500,
    k_EStoveLogTypeKind_Max = 0x7fffffff
}

Enum Values

CodeNameDescription
-1k_EStoveLogTypeKind_Invalid사용하지 않아요
6500k_EStoveLogTypeKind_SendLogParamIStoveSendLogParam
0x7fffffffk_EStoveLogTypeKind_Max사용하지 않아요

Example

csharp
// C# 인터페이스는 IStoveSendLogParam 을 직접 생성해 사용하며,
// 이 열거형 값을 API 호출에 직접 전달하지 않습니다.

Notes

  • 로그 기능이 정의하는 파라미터 타입은 IStoveSendLogParam 하나뿐이며, 결과/데이터 타입은 없어요(콜백은 IStoveCallbackResult 만 전달해요).
  • 6000~6999 범위는 Log 전용으로 예약되어 있어 다른 모듈의 TypeKind 값과 겹치지 않아요.

See Also


EStoveOverlayMode

종류 열거형 · 모듈 Base · 버전 3.5.0

Description

베트남 연령등급 고지, 과몰입 방지 고지 등 규제/알림 오버레이의 표시 상태를 나타내는 값이에요.

IStoveVietnamAgeRatingInfo.OverlayMode, IStoveVietnamOverimmersionInfo.OverlayMode 로 조회해요(두 프로퍼티 모두 int 타입이며, 이 열거형 값을 담아요).

Declaration

csharp
public enum EStoveOverlayMode
{
    k_EStoveOverlayMode_Invalid = -1,

    k_EStoveOverlayMode_Show = 0,
    k_EStoveOverlayMode_Hide = 1,
    k_EStoveOverlayMode_Expanded = 2,

    k_EStoveOverlayMode_Max = 0x7fffffff
}

Enum Values

CodeNameDescription
-1k_EStoveOverlayMode_Invalid사용하지 않아요
0k_EStoveOverlayMode_Show오버레이를 표시해요
1k_EStoveOverlayMode_Hide오버레이를 숨겨요
2k_EStoveOverlayMode_Expanded오버레이를 확장된 형태로 표시해요
0x7fffffffk_EStoveOverlayMode_Max사용하지 않아요

Example

csharp
using static Stove.PCSDK.V3.Base;

void OnVietnamAgeRatingNotificationCallback(IStoveCallbackResult callbackResult, IStoveVietnamAgeRatingInfo ageRatingInfo)
{
    if (ageRatingInfo.OverlayMode == (int)EStoveOverlayMode.k_EStoveOverlayMode_Show)
    {
        // 오버레이를 표시하는 로직을 구현해 주세요.
    }
}

Notes

  • k_EStoveOverlayMode_Expanded 는 베트남 과몰입 방지 고지(IStoveVietnamOverimmersionInfo)에서만 사용되는 값이에요.
  • OverlayMode 프로퍼티는 int 타입이므로 이 열거형 값과 비교할 때는 (int)EStoveOverlayMode.k_... 로 형변환해요.
  • 이전 형상에서는 값 이름에 밑줄이 없었어요(k_EStoveOverlayModeInvalid). 현재 소스는 k_EStoveOverlayMode_Invalid 처럼 열거형 이름과 값 이름 사이에 밑줄이 들어가요.

Changelog

VersionChange
3.5.0최초 제공

See Also


EStovePCBangMethodCode

종류 열거형 · 모듈 PCBang · 버전 3.5.0

Description

IStoveResult 를 만든 PC방 기능의 API 가 무엇인지 식별하는 값이에요. IStoveResult.MethodCode 로 조회할 수 있으며, 로그 기록이나 오류 처리 분기에 사용해요.

이 열거형이 쓰는 정수 범위는 3000 ~ 3999 이며, 공개 API 순서대로 순차 부여돼요.

Declaration

csharp
public enum EStovePCBangMethodCode
{
    k_EStovePCBangMethodCode_Invalid = -1,
    k_EStovePCBangMethodCode_Login = 3000,
    k_EStovePCBangMethodCode_Logout = 3001,
    k_EStovePCBangMethodCode_CheckStatus = 3002,
    k_EStovePCBangMethodCode_RefreshBenefit = 3003,
    k_EStovePCBangMethodCode_Max = 0x7fffffff
}

Enum Values

CodeNameDescription
-1k_EStovePCBangMethodCode_Invalid사용하지 않아요
3000k_EStovePCBangMethodCode_LoginStove_PCBangLoginonUserLogin 콜백 결과예요.
3001k_EStovePCBangMethodCode_LogoutStove_PCBangLogout
3002k_EStovePCBangMethodCode_CheckStatusStove_PCBangCheckStatus
3003k_EStovePCBangMethodCode_RefreshBenefitStove_PCBangLoginonRefreshBenefit 콜백 결과예요.
0x7fffffffk_EStovePCBangMethodCode_Max사용하지 않아요

Example

csharp
using static Stove.PCSDK.V3.PCBang;

void OnRefreshPCBangBenefitCallback(IStoveCallbackResult callbackResult, IStovePCBangBenefitInfo benefitInfo)
{
    uint methodCode = callbackResult.Result.MethodCode; // k_EStovePCBangMethodCode_RefreshBenefit
}

Notes

  • k_EStovePCBangMethodCode_Logink_EStovePCBangMethodCode_RefreshBenefit 은 모두 Stove_PCBangLogin 한 번의 호출에서 나오지만, 서로 다른 콜백(onUserLogin / onRefreshBenefit)에 대응하는 별도 코드예요. onRefreshBenefit 은 4분 주기로 반복 호출되며, 유료·무료 상태 모두에서 호출돼요.
  • 이전 인터페이스의 CheckUserStatus API 는 Stove_PCBangCheckStatus 로 이름이 바뀌었어요.
  • 이 열거형에는 결과 코드가 없어요. 실패 원인은 IStoveResult.ResultCode 로 확인하며, 값은 모듈별 EStoveResultCode 또는 공통 EStoveCommonResultCode 에 정의되어 있어요. PC방 기능 전용 결과 코드 열거형은 없어요.

See Also


EStovePCBangPremium

종류 열거형 · 모듈 PCBang · 버전 3.5.0

Description

로그인한 사용자의 PC방 프리미엄(유료) 이용 상태를 나타내는 값이에요. IStovePCBangLoginOutcome.PremiumCheck, IStovePCBangBenefitInfo.PremiumCheck, IStovePCBangStatus.PremiumCheck 가 이 값을 반환해요.

이 열거형에는 별도의 성공/실패 판정용 코드가 없어요. k_EStovePCBangPremium_Error 는 서버 오류·판단 불가 상태를 나타내는 값이며, 호출 자체의 성공 여부는 IStoveCallbackResult.Result.IsSuccessful 로 별도 확인해요.

Declaration

csharp
public enum EStovePCBangPremium
{
    k_EStovePCBangPremium_Error = -1,
    k_EStovePCBangPremium_Premium = 1,
    k_EStovePCBangPremium_Free = 2,
    k_EStovePCBangPremium_FreeOther = 3,
    k_EStovePCBangPremium_Max = 0x7fffffff
}

Enum Values

CodeNameDescription
-1k_EStovePCBangPremium_Error서버 오류 / 상태를 판단할 수 없어요.
1k_EStovePCBangPremium_Premium프리미엄(유료) PC방 혜택을 이용 가능한 상태예요.
2k_EStovePCBangPremium_Free무료 이용 상태예요.
3k_EStovePCBangPremium_FreeOther제휴사(타사)가 제공하는 무료 이용 상태예요.
0x7fffffffk_EStovePCBangPremium_Max사용하지 않아요

Example

csharp
using static Stove.PCSDK.V3.PCBang;

void OnPCBangLoginCallback(IStoveCallbackResult callbackResult, IStovePCBangLoginOutcome loginOutcome)
{
    if (callbackResult.Result.IsSuccessful)
    {
        if (loginOutcome.PremiumCheck == EStovePCBangPremium.k_EStovePCBangPremium_Premium)
        {
            // 프리미엄 혜택 로직을 구현해 주세요.
        }
    }
}

Notes

See Also


EStovePCBangTypeKind

종류 열거형 · 모듈 PCBang · 버전 3.5.0

Description

PC방 기능의 비동기 콜백으로 전달되는 결과/데이터 구조체 각각의 구체적인 타입을 식별하는 값이에요. C# 인터페이스에서는 콜백이 이미 구체 타입(IStovePCBangLoginOutcome 등)의 구조체로 데이터를 전달하므로, 이 값을 조회하는 별도의 접근자는 제공되지 않아요.

이 열거형이 쓰는 정수 범위는 3000 ~ 3999 예요.

Declaration

csharp
public enum EStovePCBangTypeKind
{
    k_EStovePCBangTypeKind_Invalid = -1,
    k_EStovePCBangTypeKind_StovePCBangLoginOutcome = 3000,
    k_EStovePCBangTypeKind_StovePCBangBenefitInfo = 3001,
    k_EStovePCBangTypeKind_StovePCBangStatus = 3002,
    k_EStovePCBangTypeKind_Max = 0x7fffffff
}

Enum Values

CodeNameDescription
-1k_EStovePCBangTypeKind_Invalid사용하지 않아요
3000k_EStovePCBangTypeKind_StovePCBangLoginOutcomeIStovePCBangLoginOutcome
3001k_EStovePCBangTypeKind_StovePCBangBenefitInfoIStovePCBangBenefitInfo
3002k_EStovePCBangTypeKind_StovePCBangStatusIStovePCBangStatus
0x7fffffffk_EStovePCBangTypeKind_Max사용하지 않아요

Example

csharp
// C# 인터페이스는 각 구조체(IStovePCBangLoginOutcome 등)를 직접 생성하지 않고
// SDK 가 콜백으로 돌려주므로, 이 열거형 값을 API 호출에 직접 사용하지 않습니다.

Notes

  • 이 열거형에 포함된 값은 모두 PC방 기능이 콜백으로 전달하는 결과/데이터 타입이며, 호출자가 만드는 입력 파라미터 타입은 없어요(PC방 기능은 파라미터 없는 API 만 제공해요).
  • 3000~3999 범위는 PCBang 전용으로 예약되어 있어 다른 모듈의 TypeKind 값과 겹치지 않아요.

See Also


EStoveProductTypeCode

종류 열거형 · 모듈 IAP · 버전 3.5.0

Description

IStoveProduct.ProductTypeCode 로 반환되는 값이에요. 상품이 어떤 종류인지를 나타내요.

Declaration

csharp
public enum EStoveProductTypeCode
{
    k_EStoveProductTypeCode_None = 0,
    k_EStoveProductTypeCode_IndiePackageGameItem = 1,
    k_EStoveProductTypeCode_InGameItem = 2,
    k_EStoveProductTypeCode_PackageItem = 3,

    k_EStoveProductTypeCode_Max = 0x7fffffff
}

Enum Values

CodeNameDescription
0k_EStoveProductTypeCode_None지정되지 않음
1k_EStoveProductTypeCode_IndiePackageGameItem인디 패키지 게임 아이템
2k_EStoveProductTypeCode_InGameItem인게임 아이템
3k_EStoveProductTypeCode_PackageItem패키지 아이템
0x7fffffffk_EStoveProductTypeCode_Max사용하지 않아요

Example

csharp
if (product.ProductTypeCode == EStoveProductTypeCode.k_EStoveProductTypeCode_InGameItem)
{
    // 인게임 아이템인 경우의 로직을 구현해 주세요.
}

Notes

See Also


EStovePurchaseLimitTypeCode

종류 열거형 · 모듈 IAP · 버전 3.5.0

Description

IStoveProduct.PurchaseLimitTypeCode 로 반환되는 값이에요. 구매 횟수 제한이 계정 단위인지 캐릭터 단위인지, 또는 제한이 없는지를 나타내요.

Declaration

csharp
public enum EStovePurchaseLimitTypeCode
{
    k_EStovePurchaseLimitTypeCode_None = 0,
    k_EStovePurchaseLimitTypeCode_Unlimited = 1,
    k_EStovePurchaseLimitTypeCode_Member = 2,
    k_EStovePurchaseLimitTypeCode_Character = 3,

    k_EStovePurchaseLimitTypeCode_Max = 0x7fffffff
}

Enum Values

CodeNameDescription
0k_EStovePurchaseLimitTypeCode_None제한 정책이 정의되지 않음
1k_EStovePurchaseLimitTypeCode_Unlimited구매 횟수 제한 없음
2k_EStovePurchaseLimitTypeCode_Member계정(회원) 단위 제한
3k_EStovePurchaseLimitTypeCode_Character캐릭터 단위 제한
0x7fffffffk_EStovePurchaseLimitTypeCode_Max사용하지 않아요

Example

csharp
if (product.PurchaseLimitTypeCode == EStovePurchaseLimitTypeCode.k_EStovePurchaseLimitTypeCode_Member)
{
    // product.PurchaseLimitCount 로 계정 단위 구매 제한 횟수를 확인하는 로직을 구현해 주세요.
}

Notes

  • Member 인 경우 IStoveProduct.MemberQuantity, Character 인 경우 IStoveProduct.GuidQuantity 값과 함께 사용해 남은 구매 가능 횟수를 계산해요.

See Also


EStovePurchaseOperation

종류 열거형 · 모듈 IAP · 버전 3.5.0

Description

IStovePurchaseParam.Operation 에 설정하며, Stove_StartPurchase 가 결제 페이지를 어떻게 열고 구매 확정을 누가 처리하는지를 결정해요.

Declaration

csharp
public enum EStovePurchaseOperation
{
    k_EStovePurchaseOperation_Default = 0,
    k_EStovePurchaseOperation_WithWebView = 1,
    k_EStovePurchaseOperation_WithWebViewAndConfirmResult = 2,

    k_EStovePurchaseOperation_Max = 0x7fffffff
}

Enum Values

CodeNameDescription
0k_EStovePurchaseOperation_DefaultStove Webview 를 사용하지 않아요. 호출자가 결과로 받은 일회성 URL 로 결제 페이지를 직접 열고, 결제 후 Stove_ConfirmPurchase 를 호출해 구매를 확정해야 해요
1k_EStovePurchaseOperation_WithWebViewStove 결제 페이지를 Stove Webview 안에서 열어요. 결제 후에도 호출자가 Stove_ConfirmPurchase 를 호출해 구매를 확정해야 해요
2k_EStovePurchaseOperation_WithWebViewAndConfirmResultStove 결제 페이지를 Stove Webview 안에서 열고, 결제 성공 시 SDK 가 자동으로 Stove_ConfirmPurchase 를 호출하여 확정된 구매 결과를 돌려줘요
0x7fffffffk_EStovePurchaseOperation_Max사용하지 않아요

Example

csharp
var purchaseParam = new IStovePurchaseParam
{
    Operation = EStovePurchaseOperation.k_EStovePurchaseOperation_WithWebViewAndConfirmResult
};

Notes

  • WebView* 관련 필드(위치·크기·표시 모드)는 Operation != Default 일 때만 적용돼요.
  • Operation 값에 따라 Stove_StartPurchase 의 콜백 결과(IStoveStartPurchaseOutcome)에서 어떤 필드가 채워지는지가 달라져요.

See Also


EStovePurchaseProgress

종류 열거형 · 모듈 IAP · 버전 3.5.0

Description

IStoveStartPurchaseOutcome.PurchaseProgress 로 반환되는 값이에요. Stove_StartPurchase 결과를 받은 뒤, 호출자가 결제창을 직접 열어야 하는지 판단하는 데 사용해요.

Declaration

csharp
public enum EStovePurchaseProgress
{
    k_EStovePurchaseProgress_None = 0,
    k_EStovePurchaseProgress_NeedPaymentWindow = 1,
    k_EStovePurchaseProgress_NotNeedPaymentWindow = 2,

    k_EStovePurchaseProgress_Max = 0x7fffffff
}

Enum Values

CodeNameDescription
0k_EStovePurchaseProgress_None진행 상태 없음
1k_EStovePurchaseProgress_NeedPaymentWindow호출자가 결과의 일회성 결제 URL 로 결제창을 직접 열어야 해요
2k_EStovePurchaseProgress_NotNeedPaymentWindow결제창을 열 필요가 없어요 (0원 결제로 즉시 완료되었거나, 웹뷰 기반 흐름에서 이미 결제가 처리됨)
0x7fffffffk_EStovePurchaseProgress_Max사용하지 않아요

Example

csharp
if (outcome.PurchaseProgress == EStovePurchaseProgress.k_EStovePurchaseProgress_NeedPaymentWindow)
{
    string url = outcome.TempPaymentUrl;
    // url 로 결제창을 열어 주세요.
}

Notes

  • k_EStovePurchaseOperation_Default 로 구매를 시작한 경우 일반적으로 NeedPaymentWindow 가 반환돼요.

See Also


EStoveResultCode

종류 결과코드 · 모듈 Base · 버전 3.5.0

Description

전역 결과 코드 사전에서, 백의 자리(카테고리)로 대역을 나눈 모듈별 결과 코드예요. IStoveResult.ResultCode 로 조회해요. 3xx 는 Base(언어/GDS/런처/토큰/IPC), 4xx 는 웹뷰/팝업 UI(현재는 EStoveCommonResultCode 60~68 로 흡수되어 이 열거형에는 값이 없어요), 5xx 는 IAP 주문/결제 정보예요(503 만 남아 있어요).

단일 바이너리 구조에서는 모듈별로 결과 코드를 따로 두는 것이 의미가 없어, 여러 모듈에서 같은 의미로 쓰이던 코드를 이 열거형 하나로 통합했어요. 어느 모듈에서 발생한 결과인지는 MethodCode(모듈 블록 = 코드 / 1000)로 구분할 수 있어요. 모듈 공통 결과 코드(0~299)는 EStoveCommonResultCode 를 참조하세요.

이전 형상의 EStoveBaseResultCode(80~89번대)는 삭제되었어요. 같은 의미의 코드는 이 열거형(300번대)으로 옮겨졌어요.

Declaration

csharp
public enum EStoveResultCode
{
    k_EStoveResultCode_LanguageNotSet = 300,
    k_EStoveResultCode_EmptyTranslatedString = 301,
    // ... 이하 열거값 표 참조
    k_EStoveResultCode_InvalidOrderProductInformation = 503,

    k_EStoveResultCode_Max = 0x7fffffff
}

Enum Values

3xx — Base 언어/GDS/런처/토큰/IPC

CodeNameDescriptionShow to UserIn-Game Message
300k_EStoveResultCode_LanguageNotSet언어가 설정되지 않았어요 (Stove_SetLanguageEx() 로 언어를 설정한 뒤 재시도)x
301k_EStoveResultCode_EmptyTranslatedString번역된 문자열이 비어 있어요 (번역 데이터 확인)x
302k_EStoveResultCode_NotFoundRequiredInformation필수 정보를 찾을 수 없어요 (필수 정보 설정 여부 확인)x
303k_EStoveResultCode_InvalidGdsInfoGDS(국가/규제) 정보가 유효하지 않아요 (GDS 정보 확인)x
304k_EStoveResultCode_NeedStoveLauncherStove 런처가 필요하지만 실행 중이 아니에요 (Stove_RestartAppIfNecessary() 로 런처를 통해 재시작)O게임이 스토브 PC 클라이언트를 통해 실행되지 않아 종료됩니다.클라이언트에서 다시 게임을 실행해주세요.클라이언트 미설치 시 스토브 홈페이지에서 설치해주세요.[확인]
305k_EStoveResultCode_LauncherFailedCreateRequired필요한 런처 리소스 생성에 실패했어요 (재시도)x
306k_EStoveResultCode_RenewTokenMaxRetryCountExceeded토큰 갱신 재시도 횟수를 초과했어요 (재로그인 유도)O네트워크 연결이 원활하지 않습니다. 네트워크 상태를 확인하고 다시 실행해 주세요. [확인]
307k_EStoveResultCode_IpcConnectFailed런처와의 IPC 연결에 실패했어요 (런처 상태 확인 후 재시도)O게임이 스토브 PC 클라이언트를 통해 실행되지 않아 종료됩니다.클라이언트에서 다시 게임을 실행해주세요.클라이언트 미설치 시 스토브 홈페이지에서 설치해주세요.[확인]
308k_EStoveResultCode_IpcAesKeyNotReceivedIPC 로 AES 키를 수신하지 못했어요 (재시도)O게임이 스토브 PC 클라이언트를 통해 실행되지 않아 종료됩니다.클라이언트에서 다시 게임을 실행해주세요.클라이언트 미설치 시 스토브 홈페이지에서 설치해주세요.[확인]
309k_EStoveResultCode_IpcTimeout런처와의 IPC 통신이 시간 초과되었어요 (재시도)O게임이 스토브 PC 클라이언트를 통해 실행되지 않아 종료됩니다.클라이언트에서 다시 게임을 실행해주세요.클라이언트 미설치 시 스토브 홈페이지에서 설치해주세요.[확인]
310 ~ 399사용하지 않아요 (예약 구간)x

4xx — 웹뷰/팝업 UI (예약, 현재 값 없음)

CodeNameDescriptionShow to UserIn-Game Message
400 ~ 499이 대역의 코드는 EStoveCommonResultCode 60~68 로 흡수되어, 이 열거형에는 값이 없어요x

5xx — IAP 주문/결제 정보

CodeNameDescriptionShow to UserIn-Game Message
500 ~ 502EStoveCommonResultCode 80~81 로 옮겨졌어요x
503k_EStoveResultCode_InvalidOrderProductInformation주문/상품 정보가 유효하지 않아요 (주문 파라미터 확인)O결제 정보가 유효하지 않아 결제를 진행할 수 없습니다. 다시 시도해 주세요. [확인]
504 ~ 0x7ffffffe사용하지 않아요 (예약 구간)x
0x7fffffffk_EStoveResultCode_Max사용하지 않아요x

아래 코드를 받으면 반드시 게임을 종료해야 해요. 정상 진행이 불가능한 상태예요.

  • 304 k_EStoveResultCode_NeedStoveLauncher — 게임 종료 후 재실행이 필요해요
  • 307 k_EStoveResultCode_IpcConnectFailed — 게임 종료 후 재실행이 필요해요
  • 308 k_EStoveResultCode_IpcAesKeyNotReceived — 게임 종료 후 재실행이 필요해요
  • 309 k_EStoveResultCode_IpcTimeout — 게임 종료 후 재실행이 필요해요

Example

csharp
using static Stove.PCSDK.V3.Base;

IStoveResult result = Stove_SetLanguageEx("ko");

if (result.ResultCode == (uint)EStoveResultCode.k_EStoveResultCode_LanguageNotSet)
{
    // 언어 미설정 오류에 대한 로직을 구현해 주세요.
}

Notes

  • 모듈별 대역(백의 자리)으로 재배치된 결과 코드예요. 현재 공개된 값은 Base(3xx)와 IAP(503) 뿐이며, 4xx 와 5xx 의 나머지 값은 EStoveCommonResultCode 로 흡수되었어요.
  • 이전 형상의 EStoveBaseResultCode(80~89번대, Base 전용)는 삭제되었고, 같은 의미의 코드가 이 열거형의 300번대로 옮겨졌어요. 옛 문서를 참조하던 개발자는 이 열거형으로 이전해야 해요.
  • IStoveResult.ResultCodeuint 타입이므로 이 열거형 값과 비교할 때는 (uint)EStoveResultCode.k_... 로 형변환해요.

Changelog

VersionChange
3.5.0최초 제공 (구 EStoveBaseResultCode 대체)

See Also


EStoveTermsOperation

종류 열거형 · 모듈 IAP · 버전 3.5.0

Description

IStoveFetchTermsAgreementParam.Operation 에 설정하며, 사용자가 아직 약관에 동의하지 않았을 때 Stove_FetchTermsAgreement 가 약관 페이지를 어떻게 노출할지를 결정해요.

Declaration

csharp
public enum EStoveTermsOperation
{
    k_EStoveTermsOperation_Default = 0,
    k_EStoveTermsOperation_WithWebView = 1,

    k_EStoveTermsOperation_Max = 0x7fffffff
}

Enum Values

CodeNameDescription
0k_EStoveTermsOperation_DefaultStove Webview 를 사용하지 않아요. 호출자가 결과로 받은 일회성 URL 로 약관 페이지를 직접 열어야 해요
1k_EStoveTermsOperation_WithWebView약관 동의 페이지를 Stove Webview 안에서 표시해요
0x7fffffffk_EStoveTermsOperation_Max사용하지 않아요

Example

csharp
var termsParam = new IStoveFetchTermsAgreementParam
{
    Operation = EStoveTermsOperation.k_EStoveTermsOperation_WithWebView
};

Notes

  • WebView* 관련 필드(위치·크기·표시 모드)는 Operation != Default 일 때만 적용돼요.

See Also


EStoveViewMethodCode

종류 열거형 · 모듈 View · 버전 3.5.0

Description

IStoveResult 를 만든 어느 팝업 API 인지 식별하는 값이에요. IStoveResult.MethodCode 로 조회할 수 있으며, 로그 기록이나 오류 처리 분기에 사용해요.

이 열거형이 쓰는 정수 범위는 1000 ~ 1999 이며, 팝업 API 는 1000대, 팝업 관리·유틸리티 API 는 그 이후 번호를 순차로 사용해요.

Declaration

csharp
public enum EStoveViewMethodCode
{
    k_EStoveViewMethodCode_Invalid = -1,
    k_EStoveViewMethodCode_AutoPopup = 1000,
    // ... 이하 열거값 표 참조
    k_EStoveViewMethodCode_Max = 0x7fffffff
}

Enum Values

CodeNameDescription
-1k_EStoveViewMethodCode_Invalid사용하지 않아요
1000k_EStoveViewMethodCode_AutoPopupStove_AutoPopup
1001k_EStoveViewMethodCode_ManualPopupStove_ManualPopup
1002k_EStoveViewMethodCode_NewsPopupStove_NewsPopup
1003k_EStoveViewMethodCode_CouponPopupStove_CouponPopup
1004k_EStoveViewMethodCode_VerifyIdentificationPopupStove_VerifyIdentificationPopup
1005k_EStoveViewMethodCode_SetPopupDisallowedStove_SetPopupDisallowed
0x7fffffffk_EStoveViewMethodCode_Max사용하지 않아요

Example

csharp
using static Stove.PCSDK.V3.View;

void OnViewPopupCallback(IStoveCallbackResult callbackResult)
{
    uint methodCode = callbackResult.Result.MethodCode; // k_EStoveViewMethodCode_AutoPopup 등
}

Notes

  • 이전 인터페이스에 있던 모듈별 결과 코드 열거형 EStoveViewResultCode 는 삭제되었어요. 실패 원인은 IStoveResult.ResultCode 로 확인하며, 값은 모듈별 EStoveResultCode 또는 공통 EStoveCommonResultCode 에 정의되어 있어요.
  • 팝업을 모두 닫는 Stove_CloseAllPopups() 는 Base 소속 함수이므로, 이 열거형이 아니라 Base 의 MethodCode 값을 가져요.
  • 값 번호는 모듈별 블록으로 나뉘어 있어 다른 모듈의 MethodCode 와 겹치지 않아요. 어느 모듈의 결과인지는 IStoveResult.SDKName 으로도 확인할 수 있어요.
  • 같은 팝업이라도 구 인터페이스와 값이 달라요. 구 인터페이스(View_AutoPopup 등)는 81 · 83 · 85 · 87 · 91 · 160 을 그대로 돌려주고, 신규 인터페이스는 이 열거형의 1000 번대 값을 돌려줘요. 두 벌을 함께 쓰는 동안에는 로그 집계 기준을 벌마다 나누어 두세요.

See Also


EStoveViewTypeKind

종류 열거형 · 모듈 View · 버전 3.5.0

Description

팝업 기능이 다루는 파라미터 구조체와 콜백 전달 구조체 각각의 구체적인 타입을 식별하는 값이에요. C# API 는 이 값을 직접 다루지 않고 구조체를 그대로 생성해 전달하지만, 값의 범위와 대응 관계를 알아두면 로깅·디버깅에 참고할 수 있어요.

이 열거형이 쓰는 정수 범위는 1000 ~ 1999 예요. 다른 모듈의 TypeKind 값과 번호가 겹치지 않아요.

Declaration

csharp
public enum EStoveViewTypeKind
{
    k_EStoveViewTypeKind_Invalid = -1,
    k_EStoveViewTypeKind_SetPopupDisallowedParam = 1500,
    // ... 이하 열거값 표 참조
    k_EStoveViewTypeKind_Max = 0x7fffffff
}

Enum Values

CodeNameDescription
-1k_EStoveViewTypeKind_Invalid사용하지 않아요
1500k_EStoveViewTypeKind_SetPopupDisallowedParamIStoveSetPopupDisallowedParam
1501k_EStoveViewTypeKind_PopupParamIStovePopupParam
1502k_EStoveViewTypeKind_ManualPopupParamIStoveManualPopupParam
1503k_EStoveViewTypeKind_VerifyIdentificationPopupParamIStoveVerifyIdentificationPopupParam
1504k_EStoveViewTypeKind_VerifyIdentificationPopupDestroyInfoIStoveVerifyIdentificationPopupDestroyInfo
0x7fffffffk_EStoveViewTypeKind_Max사용하지 않아요

Example

csharp
// C# 인터페이스는 각 구조체(IStovePopupParam 등)를 직접 생성해 사용하며,
// 이 열거형 값을 API 호출에 직접 전달하지 않습니다.
var popupParam = new IStovePopupParam
{
    WebViewMode = EStoveWebViewMode.k_EStoveWebViewMode_Internal
};

Notes

  • 1500~1503 은 호출자가 만들어 API 에 전달하는 파라미터 구조체, 1504 는 SDK 가 콜백으로 돌려주는 구조체에 대응해요.
  • View 팝업 파라미터는 API 마다 사용하는 타입이 달라요. Stove_AutoPopup/Stove_NewsPopup/Stove_CouponPopupIStovePopupParam, Stove_ManualPopupIStoveManualPopupParam, Stove_VerifyIdentificationPopupIStoveVerifyIdentificationPopupParam 을 사용해요.

See Also


EStoveWebViewMode

종류 열거형 · 모듈 Base · 버전 3.5.0

Description

View SDK 와 IAP SDK 에서 웹뷰를 외부 팝업(시스템 기본 브라우저)으로 열지, 내부 팝업(SDK 내장 웹뷰)으로 열지를 결정하는 값이에요.

Declaration

csharp
public enum EStoveWebViewMode
{
    k_EStoveWebViewMode_Invalid = -1,

    k_EStoveWebViewMode_External = 0,
    k_EStoveWebViewMode_Internal = 1,

    k_EStoveWebViewMode_Max = 0x7fffffff
}

Enum Values

CodeNameDescription
-1k_EStoveWebViewMode_Invalid사용하지 않아요
0k_EStoveWebViewMode_External시스템 기본 브라우저에서 열어요
1k_EStoveWebViewMode_InternalSDK 내장 웹뷰에서 열어요
0x7fffffffk_EStoveWebViewMode_Max사용하지 않아요

Example

csharp
EStoveWebViewMode webViewMode = EStoveWebViewMode.k_EStoveWebViewMode_Internal;

Notes

  • 팝업, 결제 기능에서 팝업 표시 방식을 지정할 때 사용하는 값이에요. SDK 자체 API 에는 이 값을 직접 받는 함수가 없어요.
  • 이전 형상에서는 값 이름에 밑줄이 없었어요(k_EStoveWebViewModeInvalid). 현재 소스는 k_EStoveWebViewMode_Invalid 처럼 열거형 이름과 값 이름 사이에 밑줄이 들어가요.

Changelog

VersionChange
3.5.0최초 제공

See Also

  • 없음

IStoveAccessToken

종류 구조체 · 모듈 Base · 버전 3.5.0

Description

Stove_AccessTokenRenewed() 를 등록했을 때 전달되는 콜백의 토큰 구조체예요.

AccessToken 값과 남은 유효시간을 담아요. readonly struct(값 타입)이므로 GC 가 처리하며 별도로 해제할 필요가 없어요.

Declaration

csharp
public readonly struct IStoveAccessToken
{
    public string AccessToken { get; }
    public int ExpireIn { get; }
}

Members

NameTypeAccessDescription
AccessTokenstring읽기 (프로퍼티)Stove AccessToken 값이에요.
ExpireInint읽기 (프로퍼티)Stove AccessToken 의 남은 유효시간(초)예요.

Example

csharp
using static Stove.PCSDK.V3.Base;

void OnAccessTokenRenewedCallback(IStoveCallbackResult callbackResult, IStoveAccessToken token)
{
    if (callbackResult.Result.IsSuccessful)
    {
        string accessToken = token.AccessToken;
        int expireIn = token.ExpireIn;
        // 성공 시 로직을 구현해 주세요.
    }
    else
    {
        // 실패 시 로직을 구현해 주세요.
    }
}

Stove_AccessTokenRenewed(OnAccessTokenRenewedCallback);

Notes

  • Stove_AccessTokenRenewed() 를 등록한 뒤, AccessToken 이 SDK 내부에서 자동으로 갱신될 때마다 이 콜백이 호출돼요.
  • 이전 형상에서는 이 타입의 이름이 IStoveToken 이었어요. 현재 소스(BaseTypesV2.cs)에는 IStoveToken 이 존재하지 않고 IStoveAccessToken 으로만 정의되어 있어요.

See Also


IStoveCallbackResult

종류 구조체 · 모듈 Base · 버전 3.5.0

Description

비동기 콜백에 전달되는 결과예요. IStoveResult 를 감싸고, 오류 상세 메시지와 외부 오류 값을 함께 담아요.

Stove_AccessTokenRenewed(), Stove_OverImmersionNotification() 등 콜백 기반 비동기 API 의 첫 번째 콜백 인자로 전달돼요. readonly struct(값 타입)이므로 GC 가 처리하며 별도로 해제할 필요가 없어요.

Result 와 함께 전달되는 값들은 콜백 호출 시점에만 유효해요.

Declaration

csharp
public readonly struct IStoveCallbackResult
{
    public IStoveResult Result { get; }
    public string ErrorMessage { get; }
    public int ExternalError { get; }
}

Members

NameTypeAccessDescription
ResultIStoveResult읽기 (프로퍼티)내부 결과 값이에요.
ErrorMessagestring읽기 (프로퍼티)오류가 발생한 이유를 설명하는 상세 메시지예요.
ExternalErrorint읽기 (프로퍼티)외부 오류 값이에요(HTTP 오류 코드 또는 API 결과 코드).
WithManagedExceptionMsgAndCode(string exceptionMessage)IStoveCallbackResult메서드내부 ResultResult.WithManagedExceptionMsgAndCode(exceptionMessage) 로 교체한 새 IStoveCallbackResult 를 반환해요. ErrorMessage · ExternalError 는 그대로 유지돼요.

Example

csharp
using static Stove.PCSDK.V3.Base;

void OnAccessTokenRenewedCallback(IStoveCallbackResult callbackResult, IStoveAccessToken token)
{
    if (callbackResult.Result.IsSuccessful)
    {
        // 성공 시 로직을 구현해 주세요.
    }
    else
    {
        // 실패 시 로직을 구현해 주세요.
    }
}

Stove_AccessTokenRenewed(OnAccessTokenRenewedCallback);

Notes

  • 모든 SDK 비동기 콜백(OnAccessTokenRenewedCallback, OnOverImmersionNotificationCallback 등)의 첫 번째 인자로 전달돼요.
  • 콜백은 Stove_RunCallback() 을 호출한 스레드에서 실행돼요.
  • 신규 flat C 인터페이스의 IStoveCallbackResult 에는 호출 시 전달한 userData(void*) 를 돌려주는 필드가 있지만, C# 버전에는 대응하는 필드가 없어요. C# 콜백은 delegate 가 클로저로 컨텍스트를 캡처하므로 별도의 userData 포인터가 필요하지 않아요.
  • WithManagedExceptionMsgAndCode() 는 C# 래퍼가 콜백 마샬링 등에서 발생한 예외를 MANAGED_EXCEPTION(254) 결과로 변환할 때 쓰는 내부 보조 메서드예요. 게임 코드가 직접 호출할 일은 거의 없어요.

See Also


IStoveChargeInfo

종류 구조체 · 모듈 IAP · 버전 3.5.0

Description

한 번의 구매에 사용된 결제 수단(스토브 캐시, 포인트, PG 등) 하나를 나타내요. Stove_ConfirmPurchase 결과인 IStoveConfirmPurchaseOutcomeChargeInfos 와, Stove_StartPurchase 결과인 IStoveStartPurchaseOutcomeChargeInfos 양쪽에 배열로 담겨 전달돼요.

SDK 가 값을 채워서 콜백으로 전달하는 읽기 전용 구조체(readonly struct)이에요. 호출자가 직접 만들지 않아요. 값 타입이므로 콜백이 끝난 뒤에도 값을 그대로 복사해 보관해 사용할 수 있으며, 별도로 해제할 필요가 없어요.

Declaration

csharp
public readonly struct IStoveChargeInfo
{
    public double ChargeDeductVal { get; }
    public double ChargeDisplayDeductVal { get; }
    public int ChargeType { get; }
    public string ChargeTypeName { get; }
}

Members

NameTypeAccessDescription
ChargeDeductValdouble읽기결제 시점에 실제로 차감된 금액 (결제 단위 기준)
ChargeDisplayDeductValdouble읽기차감 금액의 캐시 환산 표시 값
ChargeTypeint읽기결제 수단 코드. 98: 스토브 캐시, 99: 포인트, 그 외: PG(결제대행사) 결제 수단
ChargeTypeNamestring읽기현지화된 결제 수단 이름

Example

csharp
using static Stove.PCSDK.V3.IAP;

void OnConfirmPurchaseCallback(IStoveCallbackResult callbackResult, IStoveConfirmPurchaseOutcome outcome)
{
    if (callbackResult.Result.IsSuccessful && outcome.IsConfirmed)
    {
        foreach (var chargeInfo in outcome.ChargeInfos)
        {
            double deductVal = chargeInfo.ChargeDeductVal;
            string typeName = chargeInfo.ChargeTypeName;

            // 필요한 값만 사용해 영수증 화면을 구성해 주세요.
        }
    }
    else
    {
        // 실패 시 로직을 구현해 주세요.
    }
}

Notes

See Also


IStoveConfirmPurchaseOutcome

종류 구조체 · 모듈 IAP · 버전 3.5.0

Description

Stove_ConfirmPurchase 호출 결과로 OnConfirmPurchaseCallback 콜백에 전달돼요.

SDK 가 값을 채워서 콜백으로 전달하는 읽기 전용 구조체(readonly struct)이에요. 호출자가 직접 만들지 않아요. 값 타입이므로 콜백이 끝난 뒤에도 값을 그대로 복사해 보관해 사용할 수 있으며, 별도로 해제할 필요가 없어요.

Declaration

csharp
public readonly struct IStoveConfirmPurchaseOutcome
{
    public bool IsConfirmed { get; }
    public IStovePurchasedProduct[] PurchasedProducts { get; }
    public IStoveChargeInfo[] ChargeInfos { get; }
}

Members

NameTypeAccessDescription
IsConfirmedbool읽기구매가 최종적으로 확정되었는지 여부
PurchasedProductsIStovePurchasedProduct[]읽기확정된 구매에 포함된 상품 항목 배열
ChargeInfosIStoveChargeInfo[]읽기결제에 사용된 화폐(결제 수단)별 항목 배열

Example

csharp
using static Stove.PCSDK.V3.IAP;

void OnConfirmPurchaseCallback(IStoveCallbackResult callbackResult, IStoveConfirmPurchaseOutcome outcome)
{
    if (callbackResult.Result.IsSuccessful && outcome.IsConfirmed)
    {
        foreach (var product in outcome.PurchasedProducts)
        {
            // 구매된 상품을 지급해 주세요.
        }
    }
    else
    {
        // 실패 시 로직을 구현해 주세요.
    }
}

Notes

  • Stove_ConfirmPurchase 의 출력으로만 전달돼요.
  • IsConfirmedfalse 이면 PurchasedProducts / ChargeInfos 가 비어 있을 수 있어요.

See Also


IStoveConfirmPurchaseParam

종류 구조체 · 모듈 IAP · 버전 3.5.0

Description

Stove_ConfirmPurchase 를 호출할 때 전달하는 입력 파라미터예요. IStoveStartPurchaseOutcome 에서 받은 트랜잭션 마스터 번호로 구매를 확정할 때 사용해요.

일반 C# 구조체(struct)이며 생성 함수를 쓰지 않아요. 게임 코드가 new IStoveConfirmPurchaseParam { ... } 형태로 직접 만들어 값을 채운 뒤 호출에 전달해요. 값 타입이므로 별도로 해제할 필요가 없어요.

Declaration

csharp
public struct IStoveConfirmPurchaseParam
{
    public long TxnMasterNo { get; set; }
}

Members

NameTypeAccessRequiredDescription
TxnMasterNolong읽기·쓰기IStoveStartPurchaseOutcome 에서 받은 트랜잭션 마스터 번호

Example

csharp
using static Stove.PCSDK.V3.IAP;

var confirmParam = new IStoveConfirmPurchaseParam
{
    TxnMasterNo = txnMasterNo
};

Stove_ConfirmPurchase(confirmParam, OnConfirmPurchaseCallback);

Notes

  • TxnMasterNoStove_StartPurchase 의 결과인 IStoveStartPurchaseOutcomeTxnMasterNo 값을 그대로 사용해 주세요.
  • Operation == Default 또는 WithWebView 로 시작한 구매는 결제 창에서 결제를 마친 뒤 반드시 이 API 로 구매를 확정해야 해요.

See Also


IStoveFetchProductsParam

종류 구조체 · 모듈 IAP · 버전 3.5.0

Description

Stove_FetchProducts 를 호출할 때 전달하는 입력 파라미터예요. 조회할 카테고리와 페이지 범위를 지정해요.

일반 C# 구조체(struct)이며 생성 함수를 쓰지 않아요. 게임 코드가 new IStoveFetchProductsParam { ... } 형태로 직접 만들어 값을 채운 뒤 호출에 전달해요. 값 타입이므로 별도로 해제할 필요가 없어요.

Declaration

csharp
public struct IStoveFetchProductsParam
{
    public string CategoryId { get; set; }
    public uint PageIndex { get; set; }
    public uint PageSize { get; set; }
}

Members

NameTypeAccessRequiredDescription
CategoryIdstring읽기·쓰기아니오카테고리 ID 필터. 모든 카테고리의 상품을 조회하려면 비워 둬요.
PageIndexuint읽기·쓰기페이지 번호 (1부터 시작)
PageSizeuint읽기·쓰기페이지당 상품 수

Example

csharp
using static Stove.PCSDK.V3.IAP;

var fetchProductsParam = new IStoveFetchProductsParam
{
    CategoryId = "",
    PageIndex = 1,
    PageSize = 20
};

Stove_FetchProducts(fetchProductsParam, OnFetchProductsCallback);

Notes

See Also


IStoveFetchTermsAgreementParam

종류 구조체 · 모듈 IAP · 버전 3.5.0

Description

Stove_FetchTermsAgreement 를 호출할 때 전달하는 입력 파라미터예요. WebView* 필드는 모두 OperationDefault 가 아닐 때만 적용돼요.

일반 C# 구조체(struct)이며 생성 함수를 쓰지 않아요. 게임 코드가 new IStoveFetchTermsAgreementParam { ... } 형태로 직접 만들어 값을 채운 뒤 호출에 전달해요. 값 타입이므로 별도로 해제할 필요가 없어요.

Declaration

csharp
public struct IStoveFetchTermsAgreementParam
{
    public EStoveTermsOperation Operation { get; set; }
    public EStoveWebViewMode WebViewMode { get; set; }
    public int WebViewPosX { get; set; }
    public int WebViewPosY { get; set; }
    public int WebViewWidth { get; set; }
    public int WebViewHeight { get; set; }
}

Members

NameTypeAccessRequiredDescription
OperationEStoveTermsOperation읽기·쓰기동작 방식 선택자
WebViewModeEStoveWebViewMode읽기·쓰기아니오웹뷰 표시 모드. Operation != Default 일 때만 적용돼요.
WebViewPosXint읽기·쓰기아니오웹뷰 x 좌표 (픽셀). Operation != Default 일 때만 적용돼요.
WebViewPosYint읽기·쓰기아니오웹뷰 y 좌표 (픽셀). Operation != Default 일 때만 적용돼요.
WebViewWidthint읽기·쓰기아니오웹뷰 너비 (픽셀). Operation != Default 일 때만 적용돼요.
WebViewHeightint읽기·쓰기아니오웹뷰 높이 (픽셀). Operation != Default 일 때만 적용돼요.

Example

csharp
using static Stove.PCSDK.V3.IAP;

var termsParam = new IStoveFetchTermsAgreementParam
{
    Operation = EStoveTermsOperation.k_EStoveTermsOperation_WithWebView
};

Stove_FetchTermsAgreement(termsParam, OnFetchTermsAgreementCallback, null);

Notes

  • OperationDefault 이면 WebView* 필드는 무시돼요.

See Also


IStoveGds

종류 구조체 · 모듈 Base · 버전 3.5.0

Description

Stove_GetGds() 호출 시 ref 파라미터로 전달받는 국가/규제/시간대/언어 정보 구조체예요.

로그인한 사용자의 IP 기반 국가 코드를 기본으로 제공하며, IP 로 국가를 판별할 수 없을 때는 기본 국가 코드로 대체돼요(IsDefault 로 구분). readonly struct(값 타입)이므로 GC 가 처리하며 별도로 해제할 필요가 없어요.

Declaration

csharp
public readonly struct IStoveGds
{
    public bool IsDefault { get; }
    public string Nation { get; }
    public string Regulation { get; }
    public string Timezone { get; }
    public int UtcOffset { get; }
    public string Lang { get; }
}

Members

NameTypeAccessDescription
IsDefaultbool읽기 (프로퍼티)사용자의 IP 로 국가 코드를 판별할 수 없어 기본 국가 코드를 사용했는지 여부예요. IP 로 판별된 경우 false 이에요.
Nationstring읽기 (프로퍼티)로그인한 사용자의 국가 코드예요(ISO 3166-1 ALPHA-2).
Regulationstring읽기 (프로퍼티)국가 코드에 따라 적용되는 규제 이름이에요(예: GDPR).
Timezonestring읽기 (프로퍼티)로그인한 사용자의 시간대예요(IANA Time Zone Database ID, 예: "Asia/Seoul").
UtcOffsetint읽기 (프로퍼티)사용자 시간대의 UTC 오프셋(분)이에요.
Langstring읽기 (프로퍼티)로그인한 사용자의 언어예요(ISO 639-1 ALPHA-2). 예외: 중국어는 zh / zh-tw, 인도네시아어는 "in" 을 사용해요.

Example

csharp
using static Stove.PCSDK.V3.Base;

IStoveGds gds = default;
IStoveResult result = Stove_GetGds(ref gds);

if (result.IsSuccessful)
{
    string nation = gds.Nation;
    string timezone = gds.Timezone;
    // 성공 시 로직을 구현해 주세요.
}
else
{
    // 실패 시 로직을 구현해 주세요.
}

Notes

  • Stove_Initialize() 로 초기화가 끝난 뒤 호출해야 유효한 값을 받을 수 있어요.
  • Stove_GetGds(ref IStoveGds gds)ref 파라미터로 값을 돌려주며, 반환값은 IStoveResult 이에요.

See Also


IStoveInitializeParam

종류 구조체 · 모듈 Base · 버전 3.5.0

Description

Stove_Initialize(IStoveInitializeParam) 오버로드 호출에 사용하는 파라미터예요. ShopKey, MainWndHandle 두 필드만 가지며, 단일 바이너리 통합 이후 SDK 초기화와 동시에 View/IAP 모듈을 함께 초기화하기 위해 존재해요.

일반 struct(값 타입)이며 각 필드가 get/set 프로퍼티로 노출돼요. 신규 flat C 인터페이스와 달리 게임 코드가 생성 함수 없이 new IStoveInitializeParam { ... } 형태로 직접 만들어 값을 채워요.

MainWndHandle 이 0 이 아니면 View 모듈이 초기화되고, ShopKey 가 비어 있지 않으면서 동시에 MainWndHandle 도 0 이 아니면 IAP 모듈이 함께 초기화돼요(둘 다 만족해야 IAP 가 초기화돼요). MainWndHandle 은 게임의 메인 윈도우가 실제로 생성된 뒤에만 유효한 값이에요.

Declaration

csharp
public struct IStoveInitializeParam
{
    public string ShopKey { get; set; }
    public IntPtr MainWndHandle { get; set; }
}

Members

NameTypeAccessDescription
ShopKeystring읽기·쓰기 (프로퍼티)IAP 상점 키예요. 값이 비어 있지 않고 MainWndHandle 도 함께 설정되어 있어야 Stove_Initialize() 가 IAP 모듈을 초기화해요.
MainWndHandleIntPtr읽기·쓰기 (프로퍼티)게임 메인 윈도우 핸들(HWND)예요. 윈도우가 생성된 뒤에만 유효하며, 값이 0 이 아니면 View 모듈을 초기화해요. IntPtr.Zero 로 두면 View/IAP 초기화를 모두 건너뛰어요.

Example

csharp
using static Stove.PCSDK.V3.Base;

IStoveInitializeParam initParam = new IStoveInitializeParam
{
    ShopKey = "YOUR_SHOP_KEY",
    MainWndHandle = hWnd,
};

IStoveResult result = Stove_Initialize(initParam);

if (result.IsSuccessful)
{
    // 성공 시 로직을 구현해 주세요.
}
else
{
    // 실패 시 로직을 구현해 주세요.
}

Notes

  • 이전 형상에서는 Environment / GameId / AppKey 필드가 이 구조체에 포함되어 있었어요. 현재 소스(BaseTypesV2.cs)에서는 이 세 필드가 빠지고 IStoveRestartAppIfNecessaryParam 으로 옮겨졌어요. SDK 는 Stove_RestartAppIfNecessary() 에서 캐시한 값을 Stove_Initialize() 에서 재사용해요.
  • 파라미터 없는 Stove_Initialize() 오버로드는 SDK 만 초기화하며 View/IAP 는 초기화하지 않아요.
  • 신규 flat C 인터페이스는 Stove_CreateParam(k_EStoveBaseTypeKind_InitializeParam) 으로 생성한 뒤 Destroy() 로 해제해야 하지만, C# 에서는 이 구조체를 값 타입으로 직접 생성·초기화하며 생성/해제 함수를 호출하지 않아요.

See Also


IStoveInventoryItem

종류 구조체 · 모듈 IAP · 버전 3.5.0

Description

사용자의 구매 이력 한 건을 나타내요. Stove_FetchInventory 호출 결과로 OnFetchInventoryCallback 콜백에 IStoveInventoryList 형태로 전달돼요.

SDK 가 값을 채워서 콜백으로 전달하는 읽기 전용 구조체(readonly struct)이에요. 호출자가 직접 만들지 않아요. 값 타입이므로 콜백이 끝난 뒤에도 값을 그대로 복사해 보관해 사용할 수 있으며, 별도로 해제할 필요가 없어요.

Declaration

csharp
public readonly struct IStoveInventoryItem
{
    public long TxnMasterNo { get; }
    public long TxnDetailNo { get; }
    public long ProductId { get; }
    public string InserviceItemId { get; }
    public string ProductName { get; }
    public int Quantity { get; }
    public string ThumbnailUrl { get; }
}

Members

NameTypeAccessDescription
TxnMasterNolong읽기트랜잭션 마스터 번호
TxnDetailNolong읽기트랜잭션 상세 번호 (상품별 TID)
ProductIdlong읽기플랫폼 고유 상품 식별자
InserviceItemIdstring읽기이 상품에 매핑된 게임 내 아이템 식별자
ProductNamestring읽기현지화된 상품 이름
Quantityint읽기구매한 수량
ThumbnailUrlstring읽기상품 대표 썸네일 이미지 URL

Example

csharp
using static Stove.PCSDK.V3.IAP;

void OnFetchInventoryCallback(IStoveCallbackResult callbackResult, IStoveInventoryList list)
{
    if (callbackResult.Result.IsSuccessful)
    {
        foreach (var item in list)
        {
            long productId = item.ProductId;
            int quantity = item.Quantity;

            // 필요한 값만 사용해 화면을 구성해 주세요.
        }
    }
    else
    {
        // 실패 시 로직을 구현해 주세요.
    }
}

Notes

  • Stove_FetchInventory 의 출력으로만 전달돼요.
  • 게임 아이템 지급 여부 확인 시 TxnDetailNo 를 기준으로 중복 처리를 방지해야 해요.

See Also


IStoveInventoryList

종류 구조체 · 모듈 IAP · 버전 3.5.0

Description

Stove_FetchInventory 호출 결과로 OnFetchInventoryCallback 콜백에 전달되는 IStoveInventoryItem 목록 래퍼예요. IReadOnlyList<IStoveInventoryItem> 를 구현하여 foreach 로 순회할 수 있어요.

SDK 가 소유한 읽기 전용 구조체(readonly struct)이며, 콜백이 실행되는 동안에만 유효해요. 호출자가 직접 만들지 않아요. 콜백 밖에서 보관하려면 항목 값을 복사해 두어야 해요.

readonly struct(값 타입)이므로 GC 가 처리하며 별도로 해제할 필요가 없어요.

Declaration

csharp
public readonly struct IStoveInventoryList : IReadOnlyList<IStoveInventoryItem>
{
    // 멤버는 아래 멤버 표를 참고하십시오.
}

Members

NameTypeAccessDescription
Countint읽기목록에 포함된 구매 이력 항목 수
this[int index]IStoveInventoryItem읽기인덱스로 항목에 접근하는 인덱서
GetEnumerator()StoveReadOnlyArrayEnumerator<IStoveInventoryItem>foreach 구문에서 사용하는 박싱 없는 열거자를 반환해요.

Example

csharp
using static Stove.PCSDK.V3.IAP;

void OnFetchInventoryCallback(IStoveCallbackResult callbackResult, IStoveInventoryList list)
{
    if (callbackResult.Result.IsSuccessful)
    {
        foreach (var item in list)
        {
            long productId = item.ProductId;
            // 필요한 값만 사용해 화면을 구성해 주세요.
        }
    }
    else
    {
        // 실패 시 로직을 구현해 주세요.
    }
}

Notes

  • Stove_FetchInventory 의 출력으로만 전달돼요.
  • 콜백이 끝나면 무효처리되므로, 콜백 밖에서 계속 사용할 값은 미리 복사해 두어야 해요.
  • 박싱 없는 열거자(StoveReadOnlyArrayEnumerator<T>)를 사용해 foreach 사용 시에도 힙 할당이 발생하지 않아요.

See Also


IStoveManualPopupParam

종류 구조체 · 모듈 View · 버전 3.5.0

Description

Stove_ManualPopup 호출 시 넘기는 파라미터예요. 웹뷰 표시 모드와, 표시할 팝업 콘텐츠를 고르는 리소스 키를 지정해요.

호출자가 만들어 API 에 값으로 전달해요. 별도로 해제할 필요가 없어요(값 타입).

Declaration

csharp
public struct IStoveManualPopupParam
{
    public EStoveWebViewMode WebViewMode { get; set; }
    public string ResourceKey { get; set; }
}

Members

NameTypeAccessRequiredDescription
WebViewModeEStoveWebViewMode읽기·쓰기Y웹뷰 표시 모드예요(External / Internal).
ResourceKeystring읽기·쓰기Y표시할 수동 팝업을 식별하는 리소스 키예요.

Example

csharp
using static Stove.PCSDK.V3.View;

void OnViewPopupCallback(IStoveCallbackResult callbackResult)
{
    if (callbackResult.Result.IsSuccessful)
    {
        // 성공 시 로직을 구현해 주세요.
    }
    else
    {
        // 실패 시 로직을 구현해 주세요.
    }
}

void OnViewPopupDestroyCallback(IStoveCallbackResult callbackResult)
{
    // 팝업의 네이티브 리소스가 해제되었을 때 호출됩니다.
}

var manualPopupParam = new IStoveManualPopupParam
{
    WebViewMode = EStoveWebViewMode.k_EStoveWebViewMode_Internal,
    ResourceKey = "YOUR_RESOURCE_KEY"
};
Stove_ManualPopup(manualPopupParam, OnViewPopupCallback, OnViewPopupDestroyCallback);

Notes

  • Auto/News/Coupon 팝업은 이 타입이 아니라 IStovePopupParam 을 사용해요(ResourceKey 없음).

See Also


IStoveOrderProductParam

종류 구조체 · 모듈 IAP · 버전 3.5.0

Description

IStoveStartPurchaseParamProducts 배열에 담기는 상품별 주문 항목이에요. 구매할 상품 하나당 하나씩 만들어 배열로 전달해요.

일반 C# 구조체(struct)이며 생성 함수를 쓰지 않아요. 게임 코드가 new IStoveOrderProductParam { ... } 형태로 직접 만들어 값을 채운 뒤 사용해요. 값 타입이므로 별도로 해제할 필요가 없어요.

Declaration

csharp
public struct IStoveOrderProductParam
{
    public long ProductId { get; set; }
    public double SalePrice { get; set; }
    public int Quantity { get; set; }
}

Members

NameTypeAccessRequiredDescription
ProductIdlong읽기·쓰기플랫폼 고유 상품 식별자. IStoveProductProductId 와 일치해야 해요.
SalePricedouble읽기·쓰기클라이언트가 관찰한 이 상품의 단가(판매가). 서버가 클라이언트/서버 가격 불일치를 검사하는 데 사용해요.
Quantityint읽기·쓰기구매할 수량

Example

csharp
using static Stove.PCSDK.V3.IAP;

var orderProduct = new IStoveOrderProductParam
{
    ProductId = productId,
    SalePrice = salePrice,
    Quantity = 1
};

var startPurchaseParam = new IStoveStartPurchaseParam
{
    Products = new[] { orderProduct },
    // PurchaseParam 등 나머지 필드는 IStoveStartPurchaseParam 문서를 참고해 채워 주세요.
};

Stove_StartPurchase(startPurchaseParam, OnStartPurchaseCallback, null);

Notes

  • SalePriceIStoveProductSalePrice 값을 그대로 사용해 주세요. 값이 다르면 서버에서 가격 불일치로 처리될 수 있어요.

See Also


IStoveOverImmersionInfo

종류 구조체 · 모듈 Base · 버전 3.5.0

Description

Stove_OverImmersionNotification() 콜백으로 전달되는 과몰입 방지 알림 구조체예요. 한국 전용 API 예요.

경고 메시지와 게임 누적 이용 시간, 메시지 노출 시간을 담아요. readonly struct(값 타입)이므로 GC 가 처리하며 별도로 해제할 필요가 없어요.

Declaration

csharp
public readonly struct IStoveOverImmersionInfo
{
    public string Msg { get; }
    public int ElapsedHours { get; }
    public int ExposureTime { get; }
}

Members

NameTypeAccessDescription
Msgstring읽기 (프로퍼티)과몰입 경고 메시지예요.
ElapsedHoursint읽기 (프로퍼티)게임 누적 이용 시간(시간 단위)예요.
ExposureTimeint읽기 (프로퍼티)메시지 노출 시간(초)예요.

Example

csharp
using static Stove.PCSDK.V3.Base;

void OnOverImmersionNotificationCallback(IStoveCallbackResult callbackResult, IStoveOverImmersionInfo overImmersion)
{
    if (callbackResult.Result.IsSuccessful)
    {
        string msg = overImmersion.Msg;
        int exposureTime = overImmersion.ExposureTime;
        // 성공 시 로직을 구현해 주세요. (msg 를 exposureTime 초 동안 노출)
    }
    else
    {
        // 실패 시 로직을 구현해 주세요.
    }
}

Stove_OverImmersionNotification(OnOverImmersionNotificationCallback);

Notes

  • 한국 전용 API 이며, 렌더링이 가능한 시점 이후에 호출해야 해요.
  • ElapsedHours 단위는 시간(hour)이에요. 분 단위인 IStoveVietnamOverimmersionInfo.ElapsedMinutes 와 혼동하지 않도록 주의해요.
  • 이전 형상에서는 이 타입의 이름이 IStoveOverImmersion 이었고 시간 필드 이름도 ElapsedTime 이었어요. 현재 소스(BaseTypesV2.cs)는 타입명 IStoveOverImmersionInfo, 필드명 ElapsedHours 로 바뀌었어요.

See Also


IStovePCBangBenefitInfo

종류 구조체 · 모듈 PCBang · 버전 3.5.0

Description

Stove_PCBangLogin 의 로그인이 성공한 뒤, onRefreshBenefit 콜백에 주기적으로 전달되는 갱신된 혜택 정보예요.

SDK 가 생성해 콜백으로 전달하는 값이에요. 호출자가 직접 만들지 않아요. 매니지드 값이므로 콜백이 끝난 뒤에도 그대로 보관해 사용할 수 있어요.

4분 주기로 반복 호출돼요. 1회성 콜백이 아니므로, 등록 이후 매 4분마다 실행될 것을 감안해 콜백을 구현해야 해요.

Declaration

csharp
public readonly struct IStovePCBangBenefitInfo
{
    public EStovePCBangPremium PremiumCheck { get; }
    public int RemainTime { get; }
}

Members

NameTypeAccessDescription
PremiumCheckEStovePCBangPremium읽기PC방 프리미엄 상태예요.
RemainTimeint읽기남은 유료 혜택 이용 시간이에요(초 단위).

Example

csharp
using static Stove.PCSDK.V3.PCBang;

void OnPCBangLoginCallback(IStoveCallbackResult callbackResult, IStovePCBangLoginOutcome loginOutcome)
{
    // 최초 로그인 완료 시 1회 호출됩니다.
}

void OnRefreshPCBangBenefitCallback(IStoveCallbackResult callbackResult, IStovePCBangBenefitInfo benefitInfo)
{
    if (callbackResult.Result.IsSuccessful)
    {
        // 성공 시 로직을 구현해 주세요.
        int remainTime = benefitInfo.RemainTime;
    }
    else
    {
        // 실패 시 로직을 구현해 주세요.
    }
}

Stove_PCBangLogin(OnPCBangLoginCallback, OnRefreshPCBangBenefitCallback);

Notes

  • 옛(v1) 이름은 StovePCRefreshUserBenefits 이에요.
  • 이 콜백은 4분 주기로 반복 호출되며, 유료(Premium)·무료(Free) 상태 모두에서 호출돼요. 프리미엄 상태일 때만 호출되는 것이 아니에요.
  • Stove_PCBangLogout 을 호출하면 이 콜백의 반복 등록이 해제돼요.

See Also


IStovePCBangLoginOutcome

종류 구조체 · 모듈 PCBang · 버전 3.5.0

Description

Stove_PCBangLogin 의 최초 로그인이 완료되었을 때 onUserLogin 콜백에 전달되는 값이에요.

SDK 가 생성해 콜백으로 전달하는 값이에요. 호출자가 직접 만들지 않아요.

readonly struct(값 타입)이므로 GC 가 처리하며 별도로 해제할 필요가 없어요. 콜백이 끝난 뒤에도 값을 그대로 보관해 사용할 수 있어요.

Declaration

csharp
public readonly struct IStovePCBangLoginOutcome
{
    public EStovePCBangPremium PremiumCheck { get; }
    public int Psn { get; }
    public int RemainTime { get; }
}

Members

NameTypeAccessDescription
PremiumCheckEStovePCBangPremium읽기PC방 프리미엄 상태예요.
Psnint읽기사용자에게 할당된 PC방 좌석/세션 번호(PSN)이에요.
RemainTimeint읽기남은 유료 혜택 이용 시간이에요(초 단위).

Example

csharp
using static Stove.PCSDK.V3.PCBang;

void OnPCBangLoginCallback(IStoveCallbackResult callbackResult, IStovePCBangLoginOutcome loginOutcome)
{
    if (callbackResult.Result.IsSuccessful)
    {
        // 성공 시 로직을 구현해 주세요.
        int remainTime = loginOutcome.RemainTime;
    }
    else
    {
        // 실패 시 로직을 구현해 주세요.
    }
}

void OnRefreshPCBangBenefitCallback(IStoveCallbackResult callbackResult, IStovePCBangBenefitInfo benefitInfo)
{
    // 4분 주기로 반복 호출됩니다.
}

Stove_PCBangLogin(OnPCBangLoginCallback, OnRefreshPCBangBenefitCallback);

Notes

  • 옛(v1) 이름은 StovePCBangUserLogin 이에요.
  • 최초 로그인 이후에는 이 값이 아니라 IStovePCBangBenefitInfo 가 4분 주기로 갱신되어 전달돼요.

See Also


IStovePCBangStatus

종류 구조체 · 모듈 PCBang · 버전 3.5.0

Description

Stove_PCBangCheckStatus 호출 결과로 전달되는, 현재 PC방 상황과 사용자가 이용 가능한 상품(entitlement) 정보예요.

SDK 가 생성해 콜백으로 전달하는 값이에요. 호출자가 직접 만들지 않아요.

readonly struct(값 타입)이므로 GC 가 처리하며 별도로 해제할 필요가 없어요. 콜백이 끝난 뒤에도 값을 그대로 보관해 사용할 수 있어요.

Declaration

csharp
public readonly struct IStovePCBangStatus
{
    public EStovePCBangPremium PremiumCheck { get; }
    public int Psn { get; }
    public int ProductCode { get; }
}

Members

NameTypeAccessDescription
PremiumCheckEStovePCBangPremium읽기PC방 프리미엄 상태예요.
Psnint읽기사용자에게 할당된 PC방 좌석/세션 번호(PSN)이에요.
ProductCodeint읽기사용자가 현재 이용 가능한 PC방 상품 코드예요.

Example

csharp
using static Stove.PCSDK.V3.PCBang;

void OnPCBangCheckStatusCallback(IStoveCallbackResult callbackResult, IStovePCBangStatus status)
{
    if (callbackResult.Result.IsSuccessful)
    {
        // 성공 시 로직을 구현해 주세요.
        int productCode = status.ProductCode;
    }
    else
    {
        // 실패 시 로직을 구현해 주세요.
    }
}

Stove_PCBangCheckStatus(OnPCBangCheckStatusCallback);

Notes

  • 옛(v1) 이름은 StovePCBangStatus 이에요.
  • IStovePCBangLoginOutcome 과 필드 구성이 비슷하지만 RemainTime 대신 ProductCode 를 가져요.

See Also


IStovePopupParam

종류 구조체 · 모듈 View · 버전 3.5.0

Description

Stove_AutoPopup, Stove_NewsPopup, Stove_CouponPopup 세 API 가 공통으로 사용하는 파라미터예요. 웹뷰 표시 모드만 지정해요.

호출자가 만들어 API 에 값으로 전달해요. 별도로 해제할 필요가 없어요(값 타입).

Declaration

csharp
public struct IStovePopupParam
{
    public EStoveWebViewMode WebViewMode { get; set; }
}

Members

NameTypeAccessRequiredDescription
WebViewModeEStoveWebViewMode읽기·쓰기Y웹뷰 표시 모드예요(External / Internal).

Example

csharp
using static Stove.PCSDK.V3.View;

void OnViewPopupCallback(IStoveCallbackResult callbackResult)
{
    if (callbackResult.Result.IsSuccessful)
    {
        // 성공 시 로직을 구현해 주세요.
    }
    else
    {
        // 실패 시 로직을 구현해 주세요.
    }
}

void OnViewPopupDestroyCallback(IStoveCallbackResult callbackResult)
{
    // 팝업의 네이티브 리소스가 해제되었을 때 호출됩니다.
}

var popupParam = new IStovePopupParam { WebViewMode = EStoveWebViewMode.k_EStoveWebViewMode_Internal };
Stove_AutoPopup(popupParam, OnViewPopupCallback, OnViewPopupDestroyCallback);

Notes

See Also


IStoveProduct

종류 구조체 · 모듈 IAP · 버전 3.5.0

Description

상점에서 판매하는 상품 하나를 나타내요. Stove_FetchProducts 호출 결과로 OnFetchProductsCallback 콜백에 IStoveProductList 형태로 전달돼요.

SDK 가 값을 채워서 콜백으로 전달하는 읽기 전용 구조체(readonly struct)이에요. 호출자가 직접 만들지 않아요. 값 타입이므로 콜백이 끝난 뒤에도 값을 그대로 복사해 보관해 사용할 수 있으며, 별도로 해제할 필요가 없어요. 멤버가 32개로 많아 아래 ## 멤버 를 성격별로 나누어 정리했어요.

Declaration

csharp
public readonly struct IStoveProduct
{
    // 멤버는 아래 멤버 표를 참고하십시오.
}

Members

기본 정보

NameTypeAccessDescription
ProductIdlong읽기플랫폼 고유 상품 식별자
InserviceItemIdstring읽기이 상품에 매핑된 게임 내 아이템 식별자
ProductNamestring읽기현지화된 상품 이름
ProductDescriptionstring읽기현지화된 상품 설명
Quantityint읽기이 상품 1회 구매 시 지급되는 아이템 수량
ProductTypeCodeEStoveProductTypeCode읽기상품 분류 코드
CategoryIdstring읽기이 상품이 속한 상점 카테고리 식별자
CategoryNamestring읽기이 상품이 속한 상점 카테고리의 현지화된 이름
ThumbnailUrlstring읽기상품 대표 썸네일 이미지 URL

가격

NameTypeAccessDescription
CurrencyCodestring읽기ISO 4217 통화 코드 (예: "USD", "KRW")
Pricedouble읽기결제 처리에 사용되는 정가
DisplayPricedouble읽기화면 표시에 사용되는 정가 (반올림 등으로 Price 와 다를 수 있음)
StrDisplayPricestring읽기통화 서식이 적용된 표시용 정가 문자열
SalePricedouble읽기결제 처리에 사용되는 판매가 (할인 중이 아니면 Price 와 동일)
DisplaySalePricedouble읽기화면 표시에 사용되는 판매가
StrDisplaySalePricestring읽기통화 서식이 적용된 표시용 판매가 문자열

할인

NameTypeAccessDescription
IsDiscountedbool읽기현재 할인 중인지 여부
DiscountTypeEStoveDiscountType읽기할인 계산 방식
DiscountTypeValueint읽기할인 값. DiscountTypeFixedRate 이면 퍼센트(예: 10 = 10% 할인), FlatRate 이면 상품 통화 기준 정액 할인액
DiscountStartDatelong읽기할인 시작 시각 (UTC epoch milliseconds)
DiscountEndDatelong읽기할인 종료 시각 (UTC epoch milliseconds)

구매 수량 및 이력

NameTypeAccessDescription
TotalQuantityint읽기모든 범위를 통틀어 이 상품이 구매된 총수량
MemberQuantityint읽기로그인 계정(회원) 범위에서 구매된 수량
GuidQuantityint읽기현재 캐릭터 GUID 범위에서 구매된 수량
HasPurchasedbool읽기사용자가 이 상품을 한 번이라도 구매한 적이 있는지 여부
IsWithdrawablebool읽기청약철회(소비자 보호 환불) 규정이 적용되는 상품인지 여부

구매 제한 및 판매 기간

NameTypeAccessDescription
PurchaseLimitTypeCodeEStovePurchaseLimitTypeCode읽기구매 제한 정책
PurchaseLimitCountint읽기현재 정책 하의 구매 횟수 제한
SaleLimitCountint읽기상품의 총 판매 수량 제한 (0 이면 무제한)
SalesStartDatelong읽기판매 기간 시작 시각 (UTC epoch milliseconds)
SalesEndDatelong읽기판매 기간 종료 시각 (UTC epoch milliseconds)
PurchaseAvailabilityCodeshort읽기구매 가능 여부 코드. 1: 구매 가능, 2: 구매 불가능(구매 제한 초과), 3: 구매 불가능(웹 스토어 품절), 4: 구매 불가능(웹 스토어에서 이미 수령함). 이 값 집합은 서버에서 확장될 수 있어요. 상품 1개 단위 구매 요청 기준이며, 2개 이상을 함께 구매 요청하면 결과가 다를 수 있어요

Example

csharp
using static Stove.PCSDK.V3.IAP;

void OnFetchProductsCallback(IStoveCallbackResult callbackResult, IStoveProductList list)
{
    if (callbackResult.Result.IsSuccessful)
    {
        foreach (var product in list)
        {
            long productId = product.ProductId;
            string productName = product.ProductName;
            double salePrice = product.SalePrice;
            bool onSale = product.IsDiscounted;

            // 필요한 값만 사용해 화면을 구성해 주세요.
        }
    }
    else
    {
        // 실패 시 로직을 구현해 주세요.
    }
}

Notes

  • Stove_FetchProducts 의 출력으로만 전달돼요.
  • Price / SalePrice 는 결제 처리(서버 검증)에 사용하고, DisplayPrice / DisplaySalePrice / StrDisplayPrice / StrDisplaySalePrice 는 화면 표시에만 사용해 주세요.
  • 구매 시 서버가 관찰한 가격과의 불일치를 검사하므로, IStoveOrderProductParamSalePrice 에는 이 상품의 SalePrice 값을 그대로 전달해야 해요.
  • DiscountStartDate / DiscountEndDate / SalesStartDate / SalesEndDate 는 모두 UTC 밀리초 Unix epoch 값이에요.

See Also


IStoveProductList

종류 구조체 · 모듈 IAP · 버전 3.5.0

Description

Stove_FetchProducts 호출 결과로 OnFetchProductsCallback 콜백에 전달되는 IStoveProduct 목록 래퍼예요. IReadOnlyList<IStoveProduct> 를 구현하여 foreach 로 순회할 수 있어요.

SDK 가 소유한 읽기 전용 구조체(readonly struct)이며, 콜백이 실행되는 동안에만 유효해요. 호출자가 직접 만들지 않아요. 콜백 밖에서 보관하려면 항목 값을 복사해 두어야 해요.

readonly struct(값 타입)이므로 GC 가 처리하며 별도로 해제할 필요가 없어요.

Declaration

csharp
public readonly struct IStoveProductList : IReadOnlyList<IStoveProduct>
{
    // 멤버는 아래 멤버 표를 참고하십시오.
}

Members

NameTypeAccessDescription
Countint읽기목록에 포함된 상품 수
this[int index]IStoveProduct읽기인덱스로 항목에 접근하는 인덱서
GetEnumerator()StoveReadOnlyArrayEnumerator<IStoveProduct>foreach 구문에서 사용하는 박싱 없는 열거자를 반환해요.

Example

csharp
using static Stove.PCSDK.V3.IAP;

void OnFetchProductsCallback(IStoveCallbackResult callbackResult, IStoveProductList list)
{
    if (callbackResult.Result.IsSuccessful)
    {
        foreach (var product in list)
        {
            long productId = product.ProductId;
            // 필요한 값만 사용해 화면을 구성해 주세요.
        }
    }
    else
    {
        // 실패 시 로직을 구현해 주세요.
    }
}

Notes

  • Stove_FetchProducts 의 출력으로만 전달돼요.
  • 콜백이 끝나면 무효처리되므로, 콜백 밖에서 계속 사용할 값은 미리 복사해 두어야 해요.
  • 박싱 없는 열거자(StoveReadOnlyArrayEnumerator<T>)를 사용해 foreach 사용 시에도 힙 할당이 발생하지 않아요.

See Also


IStovePurchasedProduct

종류 구조체 · 모듈 IAP · 버전 3.5.0

Description

완료된 구매(트랜잭션) 안의 상품 한 항목을 나타내요. Stove_ConfirmPurchase 결과인 IStoveConfirmPurchaseOutcomePurchasedProducts 와, Stove_StartPurchase 결과인 IStoveStartPurchaseOutcomePurchasedProducts 양쪽에 배열로 담겨 전달돼요.

SDK 가 값을 채워서 콜백으로 전달하는 읽기 전용 구조체(readonly struct)이에요. 호출자가 직접 만들지 않아요. 값 타입이므로 콜백이 끝난 뒤에도 값을 그대로 복사해 보관해 사용할 수 있으며, 별도로 해제할 필요가 없어요.

Declaration

csharp
public readonly struct IStovePurchasedProduct
{
    public long TxnDetailNo { get; }
    public long ProductId { get; }
    public string CategoryId { get; }
    public int TotalQuantity { get; }
    public int MemberQuantity { get; }
    public int GuidQuantity { get; }
}

Members

NameTypeAccessDescription
TxnDetailNolong읽기트랜잭션 상세 번호 (마스터 트랜잭션 내 상품별 TID)
ProductIdlong읽기플랫폼 고유 상품 식별자
CategoryIdstring읽기이 상품이 속한 상점 카테고리 식별자
TotalQuantityint읽기이 상품의 총 구매 수량
MemberQuantityint읽기회원(계정) 범위에서 구매된 수량
GuidQuantityint읽기현재 캐릭터 GUID 범위에서 구매된 수량

Example

csharp
using static Stove.PCSDK.V3.IAP;

void OnConfirmPurchaseCallback(IStoveCallbackResult callbackResult, IStoveConfirmPurchaseOutcome outcome)
{
    if (callbackResult.Result.IsSuccessful && outcome.IsConfirmed)
    {
        foreach (var purchasedProduct in outcome.PurchasedProducts)
        {
            long productId = purchasedProduct.ProductId;
            int totalQuantity = purchasedProduct.TotalQuantity;

            // 필요한 값만 사용해 아이템을 지급해 주세요.
        }
    }
    else
    {
        // 실패 시 로직을 구현해 주세요.
    }
}

Notes

See Also


IStovePurchaseParam

종류 구조체 · 모듈 IAP · 버전 3.5.0

Description

IStoveStartPurchaseParamPurchaseParam 필드에 담겨 Stove_StartPurchase 의 동작 방식을 결정하는 옵션이에요. WebView* 필드는 모두 OperationDefault 가 아닐 때만 적용돼요.

일반 C# 구조체(struct)이며 생성 함수를 쓰지 않아요. 게임 코드가 new IStovePurchaseParam { ... } 형태로 직접 만들어 값을 채운 뒤 사용해요. 값 타입이므로 별도로 해제할 필요가 없어요.

Declaration

csharp
public struct IStovePurchaseParam
{
    public EStovePurchaseOperation Operation { get; set; }
    public EStoveWebViewMode WebViewMode { get; set; }
    public int WebViewPosX { get; set; }
    public int WebViewPosY { get; set; }
    public int WebViewWidth { get; set; }
    public int WebViewHeight { get; set; }
}

Members

NameTypeAccessRequiredDescription
OperationEStovePurchaseOperation읽기·쓰기동작 방식 선택자
WebViewModeEStoveWebViewMode읽기·쓰기아니오웹뷰 표시 모드 (외부 브라우저 / SDK 내장 웹뷰). Operation != Default 일 때만 적용돼요.
WebViewPosXint읽기·쓰기아니오웹뷰 x 좌표 (픽셀). Operation != Default 일 때만 적용돼요.
WebViewPosYint읽기·쓰기아니오웹뷰 y 좌표 (픽셀). Operation != Default 일 때만 적용돼요.
WebViewWidthint읽기·쓰기아니오웹뷰 너비 (픽셀). Operation != Default 일 때만 적용돼요.
WebViewHeightint읽기·쓰기아니오웹뷰 높이 (픽셀). Operation != Default 일 때만 적용돼요.

Example

csharp
using static Stove.PCSDK.V3.IAP;

var purchaseParam = new IStovePurchaseParam
{
    Operation = EStovePurchaseOperation.k_EStovePurchaseOperation_WithWebViewAndConfirmResult,
    WebViewMode = EStoveWebViewMode.k_EStoveWebViewMode_Internal,
    WebViewWidth = 480,
    WebViewHeight = 640
};

var startPurchaseParam = new IStoveStartPurchaseParam
{
    // Products 등 나머지 필드는 IStoveStartPurchaseParam 문서를 참고해 채워 주세요.
    PurchaseParam = purchaseParam
};

Stove_StartPurchase(startPurchaseParam, OnStartPurchaseCallback, null);

Notes

  • OperationDefault 이면 WebView* 필드는 무시돼요.

See Also


IStoveRestartAppIfNecessaryOutcome

종류 구조체 · 모듈 Base · 버전 3.5.0

Description

Stove_RestartAppIfNecessary() 콜백으로 전달되는 결과예요. 앱을 Stove 런처를 통해 재시작해야 하는지 여부를 담는 하나의 플래그(IsRestartRequired)를 도메인 엔터티로 감싸, 이후 필드가 추가되어도 콜백 시그니처가 바뀌지 않도록 설계되었어요.

readonly struct(값 타입)이므로 GC 가 처리하며 별도로 해제할 필요가 없어요.

Declaration

csharp
public readonly struct IStoveRestartAppIfNecessaryOutcome
{
    public bool IsRestartRequired { get; }
}

Members

NameTypeAccessDescription
IsRestartRequiredbool읽기 (프로퍼티)true 이면 Stove 런처를 통해 앱을 다시 실행해야 해요(현재 프로세스는 종료해야 해요). false 이면 계속 진행해도 돼요.

Example

csharp
using static Stove.PCSDK.V3.Base;

void OnRestartAppIfNecessaryCallback(IStoveCallbackResult callbackResult, IStoveRestartAppIfNecessaryOutcome outcome)
{
    if (callbackResult.Result.IsSuccessful)
    {
        if (outcome.IsRestartRequired)
        {
            // 앱을 종료하고 Stove 런처를 통해 재시작하도록 유도하는 로직을 구현해 주세요.
        }
        else
        {
            // 계속 진행하는 로직을 구현해 주세요.
        }
    }
    else
    {
        // 실패 시 로직을 구현해 주세요.
    }
}

Notes

  • Stove_RestartAppIfNecessary() 의 비동기 콜백 두 번째 인자로 전달돼요.
  • IsRestartRequired 가 true 인데도 앱이 런처를 거치지 않고 계속 실행되면 이후 SDK 호출이 실패할 수 있어요.

See Also


IStoveRestartAppIfNecessaryParam

종류 구조체 · 모듈 Base · 버전 3.5.0

Description

Stove_RestartAppIfNecessary() 호출에 필요한 파라미터를 담아요. 앱이 Stove 런처를 거쳐 실행되었는지 확인하고, 아니라면 런처를 통해 재시작해야 하는지를 판단하는 데 필요한 환경/게임 식별 정보를 전달해요.

일반 struct(값 타입)이며 각 필드가 get/set 프로퍼티로 노출돼요. 신규 flat C 인터페이스와 달리 게임 코드가 생성 함수 없이 new IStoveRestartAppIfNecessaryParam { ... } 형태로 직접 만들어 값을 채워요.

Stove_RestartAppIfNecessary()Stove_Initialize() 보다 먼저 호출해야 해요.

Declaration

csharp
public struct IStoveRestartAppIfNecessaryParam
{
    public string Environment { get; set; }
    public string GameId { get; set; }
    public string AppKey { get; set; }
    public uint WaitTimeMilliSec { get; set; }
    public bool LaunchStoveLauncher { get; set; }
    public string PlatformName { get; set; }
}

Members

NameTypeAccessDescription
Environmentstring읽기·쓰기 (프로퍼티)Stove 환경 값이에요.
GameIdstring읽기·쓰기 (프로퍼티)Stove 게임 ID 값이에요.
AppKeystring읽기·쓰기 (프로퍼티)Stove 애플리케이션 키 값이에요.
WaitTimeMilliSecuint읽기·쓰기 (프로퍼티)앱이 런처를 통해 실행되었는지 확인하는 대기 시간(밀리초)예요.
LaunchStoveLauncherbool읽기·쓰기 (프로퍼티)Stove 런처가 실행 중이 아닐 때 런처를 실행할지 여부예요.
PlatformNamestring읽기·쓰기 (프로퍼티)플랫폼 이름이에요. 선택 필드이며 스토브 외 플랫폼(Steam 등)과 함께 연동할 때만 지정해요. 설정하지 않거나 "Stove" 를 지정하면 스토브 단독 연동으로 동작해요.

Example

csharp
using static Stove.PCSDK.V3.Base;

IStoveRestartAppIfNecessaryParam param = new IStoveRestartAppIfNecessaryParam
{
    Environment = "real",
    GameId = "YOUR_GAME_ID",
    AppKey = "YOUR_APP_KEY",
    WaitTimeMilliSec = 3000,
    LaunchStoveLauncher = true,
    PlatformName = "Stove",
};

void OnRestartAppIfNecessaryCallback(IStoveCallbackResult callbackResult, IStoveRestartAppIfNecessaryOutcome outcome)
{
    if (callbackResult.Result.IsSuccessful)
    {
        // 성공 시 로직을 구현해 주세요.
    }
    else
    {
        // 실패 시 로직을 구현해 주세요.
    }
}

Stove_RestartAppIfNecessary(param, OnRestartAppIfNecessaryCallback);

Notes

  • 단일 바이너리 통합 이전에는 Environment / GameId / AppKeyIStoveInitializeParam 안에 함께 있었어요. 현재 소스(BaseTypesV2.cs)에서는 이 필드들이 IStoveInitializeParam 에서 빠져 이 타입으로 옮겨졌어요.
  • SDK 는 Stove_RestartAppIfNecessary() 에서 전달받은 Environment/GameId/AppKey 를 내부적으로 캐시해 Stove_Initialize() 호출 시에도 재사용해요.
  • PlatformName 은 런처와 통신할 IPC 경로를 정하는 데 쓰예요. 값을 비워 두거나 "Stove" 를 지정하면 기존과 같은 경로를 사용해요. 런처가 지원하지 않는 임의의 값을 넣으면 경로가 달라져 k_EStoveResultCode_IpcConnectFailed(307) 또는 k_EStoveResultCode_IpcTimeout(309) 이 발생하므로, 스토브 외 플랫폼 연동 계획이 없다면 설정하지 않아요.

See Also


IStoveResult

종류 구조체 · 모듈 Base · 버전 3.5.0

Description

동기 API 호출의 결과를 담아요. 결과를 생성한 API 를 식별하는 메서드 코드, 결과 코드, 매니지드(C#) 예외 메시지를 포함해요.

Stove_Initialize(), Stove_GetUser() 등 대부분의 동기 API 가 이 타입을 반환값으로 돌려줘요. readonly struct(값 타입)이므로 GC 가 처리하며 별도로 해제할 필요가 없어요.

Declaration

csharp
public readonly struct IStoveResult
{
    public uint MethodCode { get; }
    public uint ResultCode { get; }
    public string ExceptionMessage { get; }

    public bool IsSuccessful => ResultCode == 0;
}

Members

NameTypeAccessDescription
MethodCodeuint읽기 (프로퍼티)이 결과를 생성한 API 를 식별하는 전역 고유 메서드 코드예요. 모듈은 1000 단위 블록으로 구분돼요(EStove<모듈>MethodCode).
ResultCodeuint읽기 (프로퍼티)결과 코드예요. 0(Success)이면 성공, 0이 아니면 실패예요.
ExceptionMessagestring읽기 (프로퍼티)매니지드(C#) 예외 메시지예요.
IsSuccessfulbool읽기 (계산된 프로퍼티)ResultCode == 0 여부를 반환하는 성공 판정 프로퍼티예요.
WithManagedExceptionMsgAndCode(string exceptionMessage)IStoveResult메서드ResultCodek_EStoveCommonResultCode_ManagedException(254)으로, ExceptionMessage 를 지정한 값으로 설정한 새 IStoveResult 를 반환해요. MethodCode 는 그대로 유지돼요.

Example

csharp
using static Stove.PCSDK.V3.Base;

IStoveResult result = Stove_Uninitialize();

if (result.IsSuccessful)
{
    // 성공 시 로직을 구현해 주세요.
}
else
{
    // 실패 시 로직을 구현해 주세요.
}

Notes

  • 콜백이 아닌 동기 API(Stove_Initialize, Stove_GetUser 등)의 반환값으로 쓰예요.
  • ResultCodeEStoveCommonResultCode(0 ~ 299, 모듈 공통) 또는 EStoveResultCode(300 ~ 503, 모듈별 대역) 값이에요.
  • IsSuccessful 프로퍼티로 성공 여부를 바로 판정할 수 있어요. ResultCode 값을 직접 비교할 필요가 없어요.
  • 이전 형상에는 SDKName 필드와 EStoveBaseResultCode 열거형이 있었으나, 단일 바이너리 통합 이후 SDKName 필드는 제거되었고 결과 코드는 EStoveCommonResultCode(공통) / EStoveResultCode(모듈별) 두 열거형으로 재편되었어요.
  • WithManagedExceptionMsgAndCode() 는 C# 래퍼가 콜백 마샬링 등에서 발생한 예외를 MANAGED_EXCEPTION(254) 결과로 변환할 때 쓰는 내부 보조 메서드예요. 게임 코드가 직접 호출할 일은 거의 없어요.

See Also


IStoveSendLogParam

종류 구조체 · 모듈 Log · 버전 3.5.0

Description

Stove_SendLog 호출 시 넘기는 파라미터예요. 로그 백엔드로 전송할 계정 · 캐릭터 · 마케팅 · 서버 정보 등을 담아요.

호출자가 만들어 API 에 값으로 전달해요. 별도로 해제할 필요가 없어요(값 타입).

문자열 필드는 모두 선택 항목이며 기본값은 null 이에요. 필드를 null 로 두는 것은 "이 로그 항목에는 해당 필드가 적용되지 않음"을 뜻하며, SDK 는 이를 JSON null 로 전송해요(필드 자체를 생략하지 않아요). 이는 빈 문자열("")을 명시적으로 지정하는 것과는 다른 값으로 취급돼요. 해당 로그 항목에 관련 있는 필드만 채우고, 나머지는 기본값(문자열은 null, 숫자는 0)으로 남겨 두어야 해요. ExternalIdContents 는 서버에서 예외적으로 처리되어, 값을 설정하지 않으면 각각 빈 문자열 · 빈 객체로 전송돼요.

Declaration

csharp
public struct IStoveSendLogParam
{
    public long Auid { get; set; }
    public long Cuid { get; set; }
    public string MktType1 { get; set; }
    public string MktId1 { get; set; }
    public string MktType2 { get; set; }
    public string MktId2 { get; set; }
    public string GameVersion { get; set; }
    public string LogGroupId { get; set; }
    public string ServerCode { get; set; }
    public string ServerCodeDetail { get; set; }
    public string LevelCode { get; set; }
    public string LevelCodeDetail { get; set; }
    public string ExternalId { get; set; }
    public string Contents { get; set; }
}

Members

NameTypeAccessRequiredDescription
Auidlong읽기·쓰기N계정 UID(STOVE 계정 식별자)예요.
Cuidlong읽기·쓰기N캐릭터 UID(게임 내 캐릭터 식별자)예요.
MktType1string읽기·쓰기N연동된 제3자 마케팅 서비스 이름이에요(슬롯 1).
MktId1string읽기·쓰기N슬롯 1 제3자 마케팅 서비스가 발급한 식별자예요(캠페인 · 리퍼러 ID).
MktType2string읽기·쓰기N연동된 제3자 마케팅 서비스 이름이에요(슬롯 2).
MktId2string읽기·쓰기N슬롯 2 제3자 마케팅 서비스가 발급한 식별자예요(캠페인 · 리퍼러 ID).
GameVersionstring읽기·쓰기N게임 클라이언트 버전 문자열이에요(예: "1.2.3").
LogGroupIdstring읽기·쓰기N서로 관련된 로그 항목들을 하나로 묶는 상관 ID 예요(예: 하나의 인게임 트랜잭션이나 플로우 안에서 생성된 로그들).
ServerCodestring읽기·쓰기N사용자가 접속한 월드/지역 서버 코드예요.
ServerCodeDetailstring읽기·쓰기NServerCode 하위의 서브 서버/채널/샤드를 나타내는 상세 서버 코드예요.
LevelCodestring읽기·쓰기N로그 기록 시점의 계정 레벨 값이에요.
LevelCodeDetailstring읽기·쓰기N로그 기록 시점의 캐릭터 레벨 값이에요. 이름에 Detail 이 붙어 있지만 LevelCode 의 하위 단계가 아니라, 캐릭터 범위의 값이에요.
ExternalIdstring읽기·쓰기N광고 어트리뷰션부터 인게임 행동까지 사용자 행동을 연결·추적하는 데 쓰이는 식별자예요(Singular, STOVE SDK, Log SDK, 인게임 로그 전반). Singular 와 연동된 게임은 이 필드에 SDID(Singular Device ID)를 전달해야 해요.
Contentsstring읽기·쓰기N위 필드로 다루지 못하는 항목을 담는 자유 형식 로그 내용이에요(보통 JSON 문서를 문자열로 인코딩). 레거시 81plug 의 action_param 필드에 대응해요.

Example

csharp
using static Stove.PCSDK.V3.Log;

void OnSendLogCallback(IStoveCallbackResult callbackResult)
{
    if (callbackResult.Result.IsSuccessful)
    {
        // 성공 시 로직을 구현해 주세요.
    }
    else
    {
        // 실패 시 로직을 구현해 주세요.
    }
}

var logParam = new IStoveSendLogParam
{
    Auid = 123456789L,
    Cuid = 987654321L,
    LogGroupId = "YOUR_LOG_GROUP_ID",
    Contents = "{\"action\":\"login\"}"
};
Stove_SendLog(logParam, OnSendLogCallback);

Notes

  • MktType1/MktId1MktType2/MktId2 는 서로 독립된 두 개의 슬롯이에요. 우선/대체 관계가 아니므로, 해당하는 슬롯만 채워요.
  • 문자열 필드를 null 로 두는 것과 빈 문자열("")로 설정하는 것은 서버로 전송되는 값이 달라요(null = 필드 미제공, "" = 명시적 빈 값). ExternalId/Contents 는 예외적으로 미설정 시 빈 문자열/빈 객체로 전송돼요.

See Also


IStoveSetGameProfileParam

종류 구조체 · 모듈 Base · 버전 3.5.0

Description

Stove_SetGameProfile() 호출 시 전달하는 게임 프로필 정보예요.

월드 식별자와 월드 내 캐릭터 번호를 담아요. 일반 struct(값 타입)이며 각 필드가 get/set 프로퍼티로 노출돼요. 신규 flat C 인터페이스와 달리 게임 코드가 생성 함수 없이 new IStoveSetGameProfileParam { ... } 형태로 직접 만들어 값을 채워요.

과거 StoveGameProfileParams 문서에서 CharacterNo 필드를 "worldId Length" 로 표기한 것은 문서 오류였어요. 이 필드는 캐릭터 번호예요.

Declaration

csharp
public struct IStoveSetGameProfileParam
{
    public string WorldId { get; set; }
    public long CharacterNo { get; set; }
}

Members

NameTypeAccessDescription
WorldIdstring읽기·쓰기 (프로퍼티)게임의 월드 식별자예요.
CharacterNolong읽기·쓰기 (프로퍼티)월드 내 캐릭터 번호예요.

Example

csharp
using static Stove.PCSDK.V3.Base;

IStoveSetGameProfileParam gameProfileParam = new IStoveSetGameProfileParam
{
    WorldId = "world_01",
    CharacterNo = 123456789L,
};

IStoveResult result = Stove_SetGameProfile(gameProfileParam);

if (result.IsSuccessful)
{
    // 성공 시 로직을 구현해 주세요.
}
else
{
    // 실패 시 로직을 구현해 주세요.
}

Notes

  • CharacterNo 는 이름과 달리 문자열 길이가 아니라 캐릭터 번호예요.
  • 신규 flat C 인터페이스는 Stove_CreateParam(k_EStoveBaseTypeKind_SetGameProfileParam) 으로 생성한 뒤 Destroy() 로 해제해야 하지만, C# 에서는 이 구조체를 값 타입으로 직접 생성·초기화하며 생성/해제 함수를 호출하지 않아요.
  • 이전 형상에서는 이 타입의 이름이 IStoveGameProfileParam 이었어요. 현재 소스(BaseTypesV2.cs)는 IStoveSetGameProfileParam 으로 바뀌었어요(멤버 구성은 동일).

See Also


IStoveSetPopupDisallowedParam

종류 구조체 · 모듈 View · 버전 3.5.0

Description

Stove_SetPopupDisallowed 호출 시 넘기는 파라미터예요. 어느 팝업을 며칠 동안 숨길지 지정해요.

호출자가 만들어 API 에 값으로 전달해요. 별도로 해제할 필요가 없어요(값 타입).

Declaration

csharp
public struct IStoveSetPopupDisallowedParam
{
    public uint PopupId { get; set; }
    public uint Days { get; set; }
}

Members

NameTypeAccessRequiredDescription
PopupIduint읽기·쓰기Y숨길 팝업의 식별자예요.
Daysuint읽기·쓰기Y팝업을 숨길 기간이에요(일 단위).

Example

csharp
using static Stove.PCSDK.V3.View;

void OnSetPopupDisallowedCallback(IStoveCallbackResult callbackResult)
{
    if (callbackResult.Result.IsSuccessful)
    {
        // 성공 시 로직을 구현해 주세요.
    }
    else
    {
        // 실패 시 로직을 구현해 주세요.
    }
}

var disallowedParam = new IStoveSetPopupDisallowedParam { PopupId = 1234, Days = 7 };
Stove_SetPopupDisallowed(disallowedParam, OnSetPopupDisallowedCallback);

Notes

  • 다른 View 팝업 파라미터(IStovePopupParam 등)와 별도 타입이에요. 혼동하지 않도록 주의해요.
  • PopupId 는 SDK 호출로 얻는 값이 아니에요. AutoPopup/ManualPopup/NewsPopup/CouponPopup 의 콜백은 팝업 식별자를 반환하지 않으며, 차단 여부는 서버 API 없이 클라이언트 로컬 DB 에만 저장돼요. 따라서 팝업을 등록할 때 부여된 식별자를 게임(스튜디오) 쪽에서 별도로 알고 있어야 이 값을 채울 수 있어요.

See Also


IStoveShopCategory

종류 구조체 · 모듈 IAP · 버전 3.5.0

Description

상점 카테고리 트리를 구성하는 항목 하나를 나타내요. Stove_FetchShopCategories 호출 결과로 OnFetchShopCategoriesCallback 콜백에 IStoveShopCategoryList 형태로 전달돼요.

SDK 가 값을 채워서 콜백으로 전달하는 읽기 전용 구조체(readonly struct)이에요. 호출자가 직접 만들지 않아요. 값 타입이므로 콜백이 끝난 뒤에도 값을 그대로 복사해 보관해 사용할 수 있으며, 별도로 해제할 필요가 없어요.

Declaration

csharp
public readonly struct IStoveShopCategory
{
    public string CategoryId { get; }
    public string CategoryParentId { get; }
    public int CategoryDisplayNo { get; }
    public string CategoryName { get; }
    public int CategoryDepth { get; }
}

Members

NameTypeAccessDescription
CategoryIdstring읽기카테고리 식별자
CategoryParentIdstring읽기상위 카테고리 식별자. 최상위 카테고리는 비어 있어요.
CategoryDisplayNoint읽기같은 계층 내에서의 표시 순서
CategoryNamestring읽기현지화된 카테고리 이름
CategoryDepthint읽기카테고리 트리에서의 깊이 (0 = 최상위)

Example

csharp
using static Stove.PCSDK.V3.IAP;

void OnFetchShopCategoriesCallback(IStoveCallbackResult callbackResult, IStoveShopCategoryList list)
{
    if (callbackResult.Result.IsSuccessful)
    {
        foreach (var category in list)
        {
            string categoryId = category.CategoryId;
            string categoryName = category.CategoryName;
            int depth = category.CategoryDepth;

            // 필요한 값만 사용해 화면을 구성해 주세요.
        }
    }
    else
    {
        // 실패 시 로직을 구현해 주세요.
    }
}

Notes

  • Stove_FetchShopCategories 의 출력으로만 전달돼요.
  • CategoryParentId 가 비어 있으면 최상위 카테고리예요.
  • IStoveProductCategoryIdCategoryName 은 이 항목과 대응해요.

See Also


IStoveShopCategoryList

종류 구조체 · 모듈 IAP · 버전 3.5.0

Description

Stove_FetchShopCategories 호출 결과로 OnFetchShopCategoriesCallback 콜백에 전달되는 IStoveShopCategory 목록 래퍼예요. IReadOnlyList<IStoveShopCategory> 를 구현하여 foreach 로 순회할 수 있어요.

SDK 가 소유한 읽기 전용 구조체(readonly struct)이며, 콜백이 실행되는 동안에만 유효해요. 호출자가 직접 만들지 않아요. 콜백 밖에서 보관하려면 항목 값을 복사해 두어야 해요.

readonly struct(값 타입)이므로 GC 가 처리하며 별도로 해제할 필요가 없어요.

Declaration

csharp
public readonly struct IStoveShopCategoryList : IReadOnlyList<IStoveShopCategory>
{
    // 멤버는 아래 멤버 표를 참고하십시오.
}

Members

NameTypeAccessDescription
Countint읽기목록에 포함된 카테고리 수
this[int index]IStoveShopCategory읽기인덱스로 항목에 접근하는 인덱서
GetEnumerator()StoveReadOnlyArrayEnumerator<IStoveShopCategory>foreach 구문에서 사용하는 박싱 없는 열거자를 반환해요.

Example

csharp
using static Stove.PCSDK.V3.IAP;

void OnFetchShopCategoriesCallback(IStoveCallbackResult callbackResult, IStoveShopCategoryList list)
{
    if (callbackResult.Result.IsSuccessful)
    {
        for (int i = 0; i < list.Count; i++)
        {
            IStoveShopCategory category = list[i];
            // 필요한 값만 사용해 화면을 구성해 주세요.
        }

        // 또는 foreach 로 순회할 수 있습니다.
        foreach (var category in list)
        {
            // ...
        }
    }
    else
    {
        // 실패 시 로직을 구현해 주세요.
    }
}

Notes

  • Stove_FetchShopCategories 의 출력으로만 전달돼요.
  • 콜백이 끝나면 무효처리되므로, 콜백 밖에서 계속 사용할 값은 미리 복사해 두어야 해요.
  • 박싱 없는 열거자(StoveReadOnlyArrayEnumerator<T>)를 사용해 foreach 사용 시에도 힙 할당이 발생하지 않아요.

See Also


IStoveShutdownInfo

종류 구조체 · 모듈 Base · 버전 3.5.0

Description

Stove_ShutdownNotification() 콜백으로 전달되는 셧다운 알림 구조체예요.

셧다운 메시지, 메시지 노출 시간, 셧다운까지 남은 시간을 담아요. readonly struct(값 타입)이므로 GC 가 처리하며 별도로 해제할 필요가 없어요.

셧다운 알림은 한국 전용이 아니에요 — 셧다운이 적용된 계정이면 해외에서도 이 콜백이 호출돼요.

Declaration

csharp
public readonly struct IStoveShutdownInfo
{
    public string Msg { get; }
    public int ExposureTime { get; }
    public int InadvanceMinutes { get; }
}

Members

NameTypeAccessDescription
Msgstring읽기 (프로퍼티)셧다운 알림 메시지예요.
ExposureTimeint읽기 (프로퍼티)셧다운 메시지 노출 시간(초)예요.
InadvanceMinutesint읽기 (프로퍼티)사용자가 셧다운되기까지 남은 시간(분)이에요.

Example

csharp
using static Stove.PCSDK.V3.Base;

void OnShutdownNotificationCallback(IStoveCallbackResult callbackResult, IStoveShutdownInfo shutdown)
{
    if (callbackResult.Result.IsSuccessful)
    {
        string msg = shutdown.Msg;
        int inadvanceMinutes = shutdown.InadvanceMinutes;
        // 성공 시 로직을 구현해 주세요.
    }
    else
    {
        // 실패 시 로직을 구현해 주세요.
    }
}

Stove_ShutdownNotification(OnShutdownNotificationCallback);

Notes

  • 셧다운이 적용된 계정이면 국가와 무관하게 이 콜백이 호출돼요.
  • 이 콜백은 1회성이 아니에요. 서버가 내려준 사전 안내 시점(예: 셧다운 30분 전, 10분 전 등)마다, 그리고 실제 셧다운 시각이 되었을 때 각각 한 번씩 반복 호출돼요.
  • 이전 형상에서는 이 타입의 이름이 IStoveShutdown 이었어요. 현재 소스(BaseTypesV2.cs)는 IStoveShutdownInfo 로 바뀌었어요(멤버 구성은 동일).

See Also


IStoveSignin

종류 구조체 · 모듈 Base · 버전 3.5.0

Description

Stove_GetSignin() 호출 시 ref 파라미터로 전달받는 로그인 인증 정보 구조체예요.

본인 인증/이메일 인증 완료 여부와 가입 국가, 가입 시 사용한 인증 방식(IDP) 정보를 담아요. readonly struct(값 타입)이므로 GC 가 처리하며 별도로 해제할 필요가 없어요.

Declaration

csharp
public readonly struct IStoveSignin
{
    public bool IsPersonVerified { get; }
    public bool IsEmailVerified { get; }
    public string RegisteredCountryCode { get; }
    public string ProviderCode { get; }
    public int AccountType { get; }
}

Members

NameTypeAccessDescription
IsPersonVerifiedbool읽기 (프로퍼티)사용자의 본인 인증 완료 여부예요.
IsEmailVerifiedbool읽기 (프로퍼티)사용자의 이메일 인증 완료 여부예요.
RegisteredCountryCodestring읽기 (프로퍼티)Stove 플랫폼 가입 국가 코드예요(ISO 3166-1 ALPHA-2).
ProviderCodestring읽기 (프로퍼티)Stove 로그인 시 사용한 인증 방식을 나타내는 IDP 분류 코드(문자열)이에요. 예: SO(Stove 이메일), FB(Facebook), GP(Google), STEAM, VTCO 등.
AccountTypeint읽기 (프로퍼티)계정 유형 코드(숫자)예요. 예: 2=Facebook, 3=Twitter, 6=Naver, 9=Google+, 11=Stove PC 가입, 12=Apple, 13=LINE, 14=LINE Games, 15=Steam, 16=VTCO 등.

Example

csharp
using static Stove.PCSDK.V3.Base;

IStoveSignin signin = default;
IStoveResult result = Stove_GetSignin(ref signin);

if (result.IsSuccessful)
{
    bool personVerified = signin.IsPersonVerified;
    string providerCode = signin.ProviderCode;
    // 성공 시 로직을 구현해 주세요.
}
else
{
    // 실패 시 로직을 구현해 주세요.
}

Notes

  • Stove_Initialize() 로 초기화가 끝난 뒤 호출해야 유효한 값을 받을 수 있어요.
  • AccountType 은 숫자 코드, ProviderCode 는 문자열 코드로, 같은 인증 방식을 서로 다른 표현으로 나타내요.
  • Stove_GetSignin(ref IStoveSignin signin)ref 파라미터로 값을 돌려주며, 반환값은 IStoveResult 이에요.
  • 이전 형상에서는 멤버 이름이 PersonVerifyYn / EmailVerifyYn / CountryCd / ProviderCd 였어요. 현재 소스(BaseTypesV2.cs)는 IsPersonVerified / IsEmailVerified / RegisteredCountryCode / ProviderCode 로 이름이 바뀌었어요.

See Also


IStoveStartPurchaseOutcome

종류 구조체 · 모듈 IAP · 버전 3.5.0

Description

Stove_StartPurchase 호출 결과로 OnStartPurchaseCallback 콜백에 전달돼요. 어떤 필드가 채워지는지는 IStovePurchaseParam.Operation(EStovePurchaseOperation)에 따라 달라져요.

  • Default — 수동 결제를 위한 TempPaymentUrl 이 채워져요.
  • WithWebViewAndConfirmResult — 결제가 성공하면 IsPurchased, PurchasedProducts, ChargeInfos 가 채워져요.

SDK 가 값을 채워서 콜백으로 전달하는 읽기 전용 구조체(readonly struct)이에요. 호출자가 직접 만들지 않아요. 값 타입이므로 콜백이 끝난 뒤에도 값을 그대로 복사해 보관해 사용할 수 있으며, 별도로 해제할 필요가 없어요.

Declaration

csharp
public readonly struct IStoveStartPurchaseOutcome
{
    // 멤버는 아래 멤버 표를 참고하십시오.
}

Members

NameTypeAccessDescription
TxnMasterNolong읽기트랜잭션 마스터 번호 (구매 건당 TID)
TxnDetailNoslong[]읽기상품별 트랜잭션 상세 번호 배열
TempPaymentUrlstring읽기일회성 결제 URL. Operation == Default 일 때 제공돼요.
PurchaseProgressEStovePurchaseProgress읽기구매 진행 상태
IsPurchasedbool읽기Operation == WithWebViewAndConfirmResult 이고 결제가 성공적으로 완료되었으면 true. 그 외에는 false.
ExtraDatastring읽기Stove_StartPurchase 에 전달한 ExtraData 문자열을 그대로 돌려받아요.
PurchasedProductsIStovePurchasedProduct[]읽기구매된 상품 항목 배열. Operation == WithWebViewAndConfirmResult 이고 결제가 성공했을 때 채워져요.
ChargeInfosIStoveChargeInfo[]읽기결제에 사용된 화폐(결제 수단)별 항목 배열

Example

csharp
using static Stove.PCSDK.V3.IAP;

void OnStartPurchaseCallback(IStoveCallbackResult callbackResult, IStoveStartPurchaseOutcome outcome)
{
    if (callbackResult.Result.IsSuccessful)
    {
        if (outcome.PurchaseProgress == EStovePurchaseProgress.k_EStovePurchaseProgress_NeedPaymentWindow)
        {
            string url = outcome.TempPaymentUrl;
            // url 로 결제창을 열어 주세요.
        }
        else if (outcome.IsPurchased)
        {
            foreach (var product in outcome.PurchasedProducts)
            {
                // 구매된 상품을 지급해 주세요.
            }
        }
    }
    else
    {
        // 실패 시 로직을 구현해 주세요.
    }
}

Notes

  • 구 인터페이스에서는 IStovePurchaseResult 라는 이름으로 제공되었어요.
  • Operation == Default 또는 WithWebView 로 시작한 구매는 결제 완료 후 Stove_ConfirmPurchase 를 호출해 구매를 확정해야 해요.
  • TxnMasterNoIStoveConfirmPurchaseParam.TxnMasterNo 로 그대로 전달해 구매를 확정해요.

See Also


IStoveStartPurchaseParam

종류 구조체 · 모듈 IAP · 버전 3.5.0

Description

Stove_StartPurchase 를 호출할 때 전달하는 입력 파라미터예요. 구매할 상품 목록(IStoveOrderProductParam)과 구매 동작 옵션(IStovePurchaseParam)을 함께 담아요.

일반 C# 구조체(struct)이며 생성 함수를 쓰지 않아요. 게임 코드가 new IStoveStartPurchaseParam { ... } 형태로 직접 만들어 값을 채운 뒤 호출에 전달해요. 값 타입이므로 별도로 해제할 필요가 없어요.

Declaration

csharp
public struct IStoveStartPurchaseParam
{
    public IStoveOrderProductParam[] Products { get; set; }
    public IStovePurchaseParam PurchaseParam { get; set; }
    public string ServiceTxnNo { get; set; }
    public string ExtraData { get; set; }
}

Members

NameTypeAccessRequiredDescription
ProductsIStoveOrderProductParam[]읽기·쓰기구매할 상품별 주문 항목 배열
PurchaseParamIStovePurchaseParam읽기·쓰기구매 동작 옵션(웹뷰 배치 포함)
ServiceTxnNostring읽기·쓰기아니오게임이 발급한 서비스 측 트랜잭션 번호 (선택)
ExtraDatastring읽기·쓰기아니오추가 요청 데이터 (일반적으로 JSON 문자열, 선택). IStoveStartPurchaseOutcomeExtraData 로 그대로 반환돼요.

Example

csharp
using static Stove.PCSDK.V3.IAP;

var orderProduct = new IStoveOrderProductParam
{
    ProductId = productId,
    SalePrice = salePrice,
    Quantity = 1
};

var purchaseParam = new IStovePurchaseParam
{
    Operation = EStovePurchaseOperation.k_EStovePurchaseOperation_WithWebViewAndConfirmResult
};

var startPurchaseParam = new IStoveStartPurchaseParam
{
    Products = new[] { orderProduct },
    PurchaseParam = purchaseParam,
    ExtraData = "{\"orderFrom\":\"shop\"}"
};

Stove_StartPurchase(startPurchaseParam, OnStartPurchaseCallback, null);

Notes

  • ExtraDataIStoveStartPurchaseOutcomeExtraData 로 그대로 되돌아와요. 클라이언트가 구매 요청과 응답을 연결하는 용도로 사용할 수 있어요.

See Also


IStoveTermsAgreementOutcome

종류 구조체 · 모듈 IAP · 버전 3.5.0

Description

Stove_FetchTermsAgreement 호출 결과로 OnFetchTermsAgreementCallback 콜백에 전달돼요.

SDK 가 값을 채워서 콜백으로 전달하는 읽기 전용 구조체(readonly struct)이에요. 호출자가 직접 만들지 않아요. 값 타입이므로 콜백이 끝난 뒤에도 값을 그대로 복사해 보관해 사용할 수 있으며, 별도로 해제할 필요가 없어요.

Declaration

csharp
public readonly struct IStoveTermsAgreementOutcome
{
    public bool IsAgreed { get; }
    public string Url { get; }
}

Members

NameTypeAccessDescription
IsAgreedbool읽기사용자가 이미 현재 약관에 동의했는지 여부. true 이면 Url 은 비어 있어요.
Urlstring읽기호출자가 열어야 하는 약관 페이지 URL. IsAgreedtrue 이면 비어 있어요.

Example

csharp
using static Stove.PCSDK.V3.IAP;

void OnFetchTermsAgreementCallback(IStoveCallbackResult callbackResult, IStoveTermsAgreementOutcome outcome)
{
    if (callbackResult.Result.IsSuccessful)
    {
        if (!outcome.IsAgreed)
        {
            string url = outcome.Url;
            // Operation == Default 인 경우 url 로 약관 페이지를 직접 열어 주세요.
        }
        else
        {
            // 이미 동의한 경우의 로직을 구현해 주세요.
        }
    }
    else
    {
        // 실패 시 로직을 구현해 주세요.
    }
}

Notes

See Also


IStoveUser

종류 구조체 · 모듈 Base · 버전 3.5.0

Description

Stove_GetUser() 호출 시 ref 파라미터로 전달받는 사용자 정보 구조체예요.

런처에서 로그인한 사용자의 닉네임과 게임 사용자 ID 를 담아요. readonly struct(값 타입)이므로 GC 가 처리하며 별도로 해제할 필요가 없어요.

Declaration

csharp
public readonly struct IStoveUser
{
    public string NickName { get; }
    public ulong UserId { get; }
}

Members

NameTypeAccessDescription
NickNamestring읽기 (프로퍼티)런처에서 로그인한 사용자의 Stove 닉네임이에요.
UserIdulong읽기 (프로퍼티)런처에서 로그인한 사용자의 GameUserId 이에요.

Example

csharp
using static Stove.PCSDK.V3.Base;

IStoveUser user = default;
IStoveResult result = Stove_GetUser(ref user);

if (result.IsSuccessful)
{
    string nickName = user.NickName;
    ulong userId = user.UserId;
    // 성공 시 로직을 구현해 주세요.
}
else
{
    // 실패 시 로직을 구현해 주세요.
}

Notes

  • Stove_Initialize() 로 초기화가 끝난 뒤 호출해야 유효한 값을 받을 수 있어요.
  • Stove_GetUser(ref IStoveUser user)ref 파라미터로 값을 돌려주며, 반환값은 IStoveResult 이에요.

See Also


IStoveVerifyIdentificationPopupDestroyInfo

종류 구조체 · 모듈 View · 버전 3.5.0

Description

Stove_VerifyIdentificationPopup 의 본인 확인 팝업이 종료될 때 OnVerifyIdentificationPopupDestroyCallback 에 전달되는 값이에요.

SDK 가 생성해 콜백으로 전달하는 값이에요. 호출자가 직접 만들지 않아요.

readonly struct(값 타입)이므로 GC 가 처리하며 별도로 해제할 필요가 없어요. 콜백이 끝난 뒤에도 값을 그대로 보관해 사용할 수 있어요.

Declaration

csharp
public readonly struct IStoveVerifyIdentificationPopupDestroyInfo
{
    public string SimKey { get; }
}

Members

NameTypeAccessDescription
SimKeystring읽기본인 확인에 성공한 뒤 발급된 SIM 키예요. 확인에 실패했거나 키를 사용할 수 없으면 빈 문자열("")이에요.

Example

csharp
using static Stove.PCSDK.V3.View;

void OnVerifyIdentificationPopupDestroyCallback(IStoveCallbackResult callbackResult, IStoveVerifyIdentificationPopupDestroyInfo info)
{
    if (!string.IsNullOrEmpty(info.SimKey))
    {
        // 성공 시 로직을 구현해 주세요.
        string simKey = info.SimKey;
    }
    else
    {
        // 실패 시 로직을 구현해 주세요.
    }
}

Notes

  • SimKey 가 빈 문자열이면 실패로 간주해야 해요. 별도의 오류 코드로 실패를 구분하지 않아요.

See Also


IStoveVerifyIdentificationPopupParam

종류 구조체 · 모듈 View · 버전 3.5.0

Description

Stove_VerifyIdentificationPopup 호출 시 넘기는 파라미터예요. 웹뷰 표시 모드와, 확인된 식별자를 로그인한 사용자와 비교할지 여부를 지정해요.

호출자가 만들어 API 에 값으로 전달해요. 별도로 해제할 필요가 없어요(값 타입).

Declaration

csharp
public struct IStoveVerifyIdentificationPopupParam
{
    public EStoveWebViewMode WebViewMode { get; set; }
    public bool CompareIdentifier { get; set; }
}

Members

NameTypeAccessRequiredDescription
WebViewModeEStoveWebViewMode읽기·쓰기Y웹뷰 표시 모드예요(External / Internal).
CompareIdentifierbool읽기·쓰기N확인된 식별자를 현재 로그인한 사용자와 비교할지 여부예요.

Example

csharp
using static Stove.PCSDK.V3.View;

void OnViewPopupCallback(IStoveCallbackResult callbackResult)
{
    if (callbackResult.Result.IsSuccessful)
    {
        // 성공 시 로직을 구현해 주세요.
    }
    else
    {
        // 실패 시 로직을 구현해 주세요.
    }
}

void OnVerifyIdentificationPopupDestroyCallback(IStoveCallbackResult callbackResult, IStoveVerifyIdentificationPopupDestroyInfo info)
{
    string simKey = info.SimKey;
    // 팝업이 종료되었을 때 로직을 구현해 주세요.
}

var verifyParam = new IStoveVerifyIdentificationPopupParam
{
    WebViewMode = EStoveWebViewMode.k_EStoveWebViewMode_Internal,
    CompareIdentifier = true
};
Stove_VerifyIdentificationPopup(verifyParam, OnViewPopupCallback, OnVerifyIdentificationPopupDestroyCallback);

Notes

See Also


IStoveVietnamAgeRatingInfo

종류 구조체 · 모듈 Base · 버전 3.5.0

Description

Stove_VietnamAgeRatingNotification() 콜백으로 전달되는 연령등급 고지 오버레이 정보예요. 베트남 전용 API 예요.

오버레이 표시 상태와 형태, 크기/위치, 게임 연령등급, 고지 메시지를 담아요. readonly struct(값 타입)이므로 GC 가 처리하며 별도로 해제할 필요가 없어요.

1회성 콜백이므로 렌더링이 가능한 시점 이후에 호출해야 해요.

Declaration

csharp
public readonly struct IStoveVietnamAgeRatingInfo
{
    public int OverlayMode { get; }
    public int OverlayType { get; }
    public float OverlayScale { get; }
    public float OverlayOpacity { get; }
    public int AgeRating { get; }
    public string Msg { get; }
    public float DisplayPositionX { get; }
    public float DisplayPositionY { get; }
    public string Language { get; }
}

Members

NameTypeAccessDescription
OverlayModeint읽기 (프로퍼티)오버레이 표시 상태예요(SHOW: 오버레이 표시, HIDE: 오버레이 숨김). EStoveOverlayMode 값이에요.
OverlayTypeint읽기 (프로퍼티)오버레이 유형이에요(0=검정, 1=흰색).
OverlayScalefloat읽기 (프로퍼티)오버레이 크기 비율이에요(0.0 ~ 1.0).
OverlayOpacityfloat읽기 (프로퍼티)오버레이 불투명도예요(0.0 ~ 1.0).
AgeRatingint읽기 (프로퍼티)게임 연령등급이에요(0=전체이용가, 12=12세, 16=16세, 18=18세).
Msgstring읽기 (프로퍼티)연령등급 고지 메시지예요.
DisplayPositionXfloat읽기 (프로퍼티)메시지 표시 위치의 x 좌표예요. 화면 왼쪽 기준(0.0 ~ 1.0).
DisplayPositionYfloat읽기 (프로퍼티)메시지 표시 위치의 y 좌표예요. 화면 위쪽 기준(0.0 ~ 1.0).
Languagestring읽기 (프로퍼티)폰트 선택을 위한 언어 코드예요(예: "ko", "en", "ja", "vi", "zh-cn", "zh-tw", "th").

Example

csharp
using static Stove.PCSDK.V3.Base;

void OnVietnamAgeRatingNotificationCallback(IStoveCallbackResult callbackResult, IStoveVietnamAgeRatingInfo ageRatingInfo)
{
    if (callbackResult.Result.IsSuccessful)
    {
        int overlayMode = ageRatingInfo.OverlayMode;
        string msg = ageRatingInfo.Msg;
        // 성공 시 로직을 구현해 주세요. (overlayMode 에 따라 오버레이 표시/숨김)
    }
    else
    {
        // 실패 시 로직을 구현해 주세요.
    }
}

Stove_VietnamAgeRatingNotification(OnVietnamAgeRatingNotificationCallback);

Notes

  • 베트남 전용 API 이며, 1회성 콜백이므로 렌더링이 가능한 시점 이후에 호출해야 해요.
  • OverlayModeEStoveOverlayMode 값을 사용해요.

See Also


IStoveVietnamOverimmersionInfo

종류 구조체 · 모듈 Base · 버전 3.5.0

Description

Stove_VietnamOverimmersionNotification() 콜백으로 전달되는 과몰입 방지 고지 오버레이 정보예요. 베트남 전용 API 예요.

오버레이 표시 상태와 형태, 크기/위치, 게임 연령등급, 경고 메시지(일반/스타일 적용)를 담아요. readonly struct(값 타입)이므로 GC 가 처리하며 별도로 해제할 필요가 없어요.

1회성 콜백이므로 렌더링이 가능한 시점 이후에 호출해야 해요.

Declaration

csharp
public readonly struct IStoveVietnamOverimmersionInfo
{
    public int OverlayMode { get; }
    public int OverlayType { get; }
    public float OverlayScale { get; }
    public float OverlayOpacity { get; }
    public int AgeRating { get; }
    public string Msg { get; }
    public string StyledMsg { get; }
    public int ElapsedMinutes { get; }
    public int ExposureTime { get; }
    public float ExpandAnimationTime { get; }
    public float DisplayPositionX { get; }
    public float DisplayPositionY { get; }
    public string Language { get; }
}

Members

NameTypeAccessDescription
OverlayModeint읽기 (프로퍼티)오버레이 표시 상태예요(SHOW: 오버레이 표시, HIDE: 오버레이 숨김). EStoveOverlayMode 값이에요.
OverlayTypeint읽기 (프로퍼티)오버레이 유형이에요(0=검정, 1=흰색).
OverlayScalefloat읽기 (프로퍼티)오버레이 크기 비율이에요(0.0 ~ 1.0).
OverlayOpacityfloat읽기 (프로퍼티)오버레이 불투명도예요(0.0 ~ 1.0).
AgeRatingint읽기 (프로퍼티)게임 연령등급이에요(0=전체이용가, 12=12세, 16=16세, 18=18세).
Msgstring읽기 (프로퍼티)과몰입 경고 메시지예요.
StyledMsgstring읽기 (프로퍼티)<b>, <color=#RRGGBBAA> 등 마크업 태그가 포함된 스타일(번역) 경고 메시지예요. 리치 텍스트 렌더링에 사용해요.
ElapsedMinutesint읽기 (프로퍼티)게임 누적 이용 시간(분 단위)예요.
ExposureTimeint읽기 (프로퍼티)메시지 노출 시간(초)예요.
ExpandAnimationTimefloat읽기 (프로퍼티)Show → Expand 전환 시 오버레이가 확장되는 애니메이션 시간(초)예요.
DisplayPositionXfloat읽기 (프로퍼티)메시지 표시 위치의 x 좌표예요. 화면 왼쪽 기준(0.0 ~ 1.0).
DisplayPositionYfloat읽기 (프로퍼티)메시지 표시 위치의 y 좌표예요. 화면 위쪽 기준(0.0 ~ 1.0).
Languagestring읽기 (프로퍼티)폰트 선택을 위한 언어 코드예요(예: "ko", "en", "ja", "vi", "zh-cn", "zh-tw", "th").

Example

csharp
using static Stove.PCSDK.V3.Base;

void OnVietnamOverimmersionNotificationCallback(IStoveCallbackResult callbackResult, IStoveVietnamOverimmersionInfo overimmersionInfo)
{
    if (callbackResult.Result.IsSuccessful)
    {
        int overlayMode = overimmersionInfo.OverlayMode;
        string styledMsg = overimmersionInfo.StyledMsg;
        // 성공 시 로직을 구현해 주세요. (overlayMode 에 따라 오버레이 표시/숨김/확장)
    }
    else
    {
        // 실패 시 로직을 구현해 주세요.
    }
}

Stove_VietnamOverimmersionNotification(OnVietnamOverimmersionNotificationCallback);

Notes

  • 베트남 전용 API 이며, 1회성 콜백이므로 렌더링이 가능한 시점 이후에 호출해야 해요.
  • OverlayModeEStoveOverlayMode 값을 사용하며, k_EStoveOverlayMode_Expanded(확장 표시)도 지원해요.
  • ElapsedMinutes 단위는 분(minute)예요. 시간(hour) 단위인 IStoveOverImmersionInfo.ElapsedHours 와 혼동하지 않도록 주의해요.

See Also


Stove_AccessTokenRenewed

종류 함수 · 모듈 Base · 버전 3.5.0

Description

AccessToken이 갱신될 때 새로 발급된 토큰을 콜백으로 전달해요. 토큰이 갱신되는 시점에 맞춰 별도 작업이 필요할 때 사용해요.

Declaration

csharp
public static void Stove_AccessTokenRenewed(OnAccessTokenRenewedCallback onFinished)

Parameters

NameTypeRequiredDescription
onFinishedOnAccessTokenRenewedCallbackN결과를 받을 콜백

Returns

없음

Callback

csharp
public delegate void OnAccessTokenRenewedCallback(IStoveCallbackResult callbackResult, IStoveAccessToken token);
NameTypeDescription
callbackResultIStoveCallbackResult호출 결과
tokenIStoveAccessToken새로 발급된 토큰 정보. AccessToken, ExpireIn(초 단위) 프로퍼티로 조회

이 콜백은 Stove_RunCallback()을 호출한 스레드에서 실행돼요. AccessToken이 갱신될 때마다 반복해서 전달돼요.

Error Codes

CodeNameDescriptionShow to UserIn-Game Message
0k_EStoveCommonResultCode_Success성공x
5k_EStoveCommonResultCode_InvalidParamonFinished가 null(콜백이 없어 실제로는 전달되지 않는 내부 값) (콜백 등록 여부 확인)x
16k_EStoveCommonResultCode_BaseNotInitializedSDK가 초기화되지 않음 (Stove_Initialize() 호출 여부 확인)x
253k_EStoveCommonResultCode_UnmanagedExceptionSDK 내부에서 알 수 없는 예외 발생 (로그 확인)O일시적으로 문제가 발생했습니다. 다시 시도해 주세요. [확인]
254k_EStoveCommonResultCode_ManagedException래퍼에서 예외 발생 시 콜백으로 전달 (로그 확인)O일시적으로 문제가 발생했습니다. 다시 시도해 주세요. [확인]
306k_EStoveResultCode_RenewTokenMaxRetryCountExceeded토큰 갱신 재시도 횟수를 초과함(하위 계층) (재로그인 유도)O네트워크 연결이 원활하지 않습니다. 네트워크 상태를 확인하고 다시 실행해 주세요. [확인]

전체 목록: EStoveCommonResultCode, EStoveResultCode

Example

csharp
using static Stove.PCSDK.V3.Base;

Stove_AccessTokenRenewed((callbackResult, token) =>
{
    if (callbackResult.Result.IsSuccessful)
    {
        // 성공 시 로직을 구현해 주세요.
        string newAccessToken = token.AccessToken;
        int expireIn = token.ExpireIn;
    }
    else
    {
        // 실패 시 로직을 구현해 주세요.
    }
});

Notes

  • 토큰이 갱신될 때마다 반복해서 호출되는 콜백이에요. 1회성 콜백이 아니에요.
  • 매번 최신 토큰이 필요하지 않다면 Stove_GetAccessToken으로 그때그때 조회해도 돼요.

See Also


Stove_AutoPopup

종류 함수 · 모듈 View · 버전 3.5.0

Description

Stove_AutoPopup은 서버에서 자동 팝업(공지, 이벤트 등) 목록을 조회하고, 조회된 팝업을 웹뷰로 표시해요.

SDK 초기화(Stove_Initialize) 이후에 호출해야 해요. 표시할 팝업 데이터가 없으면 웹뷰를 띄우지 않고 종료해요.

팝업이 하나도 생성되지 않고 종료되는 모든 경로(미초기화, 조회 결과 없음, 웹뷰 생성 실패 등)에서 onDestroyk_EStoveCommonResultCode_PopupNotCreated(33)가 1회 전달돼요. 이 코드는 내부 정리 신호이며 onFinished에는 전달되지 않아요.

Declaration

csharp
public static void Stove_AutoPopup(IStovePopupParam popupParam, OnViewPopupCallback onFinished, OnViewPopupDestroyCallback onDestroy);

Parameters

NameTypeRequiredDescription
popupParamIStovePopupParamY웹뷰 표시 모드(WebViewMode)를 담은 파라미터예요.
onFinishedOnViewPopupCallbackY팝업 표시가 완료(또는 표시할 데이터가 없어 종료)되었을 때 호출되는 콜백이에요.
onDestroyOnViewPopupDestroyCallbackN팝업 웹뷰가 완전히 파괴되었을 때 호출되는 콜백이에요.

Returns

없음 (void 함수)

Callback

csharp
public delegate void OnViewPopupCallback(IStoveCallbackResult callbackResult);
public delegate void OnViewPopupDestroyCallback(IStoveCallbackResult callbackResult);
NameTypeDescription
callbackResultIStoveCallbackResult호출 결과예요. callbackResult.Result.IsSuccessful로 성공 여부를 확인해요.

onFinished는 팝업 표시(또는 데이터 없음으로 인한 종료)가 확정된 시점에 1회 호출돼요. onDestroy는 웹뷰가 화면에서 완전히 사라진 시점에 1회 호출돼요. 두 콜백 모두 Stove_RunCallback()을 호출한 스레드에서 실행돼요.

Error Codes

onFinished

CodeNameDescriptionShow to UserIn-Game Message
0k_EStoveCommonResultCode_Success성공x
17k_EStoveCommonResultCode_NotInitialized팝업 기능이 초기화되지 않음 (Stove_Initialize 선행 호출 확인)x
60k_EStoveCommonResultCode_ViewUiNotInitialized팝업 UI 서브시스템이 초기화되지 않음(정상 흐름에서는 발생하지 않는 방어적 코드) (재현되면 SDK 지원팀 문의)x
65k_EStoveCommonResultCode_WebviewCloseAllFail팝업 생성 전 기존 웹뷰 일괄 닫기 실패 (로그 확인)x
67k_EStoveCommonResultCode_NoPopupData서버 조회 결과 표시할 팝업이 0건 (정상 종료로 처리)O팝업 설정 정보가 존재하지 않아 표시할 창이 없습니다. [확인]
62k_EStoveCommonResultCode_WebviewCreateFail웹뷰 생성 실패 (재시도 또는 로그 확인)x
63k_EStoveCommonResultCode_WebviewLoadUrlFail웹뷰 URL 로드 실패 (네트워크 상태 확인 후 재시도)x
254k_EStoveCommonResultCode_ManagedException래퍼에서 예외 발생 시 콜백으로 전달 (callbackResult.Result.ExceptionMessage 로그 확인)O일시적으로 문제가 발생했습니다. 다시 시도해 주세요. [확인]

onDestroy

CodeNameDescriptionShow to UserIn-Game Message
0k_EStoveCommonResultCode_Success웹뷰 정상 종료x
66k_EStoveCommonResultCode_WebviewCloseFail웹뷰 닫기 실패 (로그 확인)x
33k_EStoveCommonResultCode_PopupNotCreated웹뷰가 생성되지 않고 조기 종료됨(내부 정리 신호) (별도 처리 불필요)x
254k_EStoveCommonResultCode_ManagedException래퍼에서 예외 발생 시 콜백으로 전달 (callbackResult.Result.ExceptionMessage 로그 확인)O일시적으로 문제가 발생했습니다. 다시 시도해 주세요. [확인]

전체 목록: EStoveCommonResultCode

Example

csharp
using static Stove.PCSDK.V3.View;

var popupParam = new IStovePopupParam
{
    WebViewMode = EStoveWebViewMode.k_EStoveWebViewMode_Internal
};

Stove_AutoPopup(popupParam,
    onFinished: (callbackResult) =>
    {
        if (callbackResult.Result.IsSuccessful)
        {
            // 성공 시 로직을 구현해 주세요.
        }
        else
        {
            // 실패 시 로직을 구현해 주세요.
        }
    },
    onDestroy: (callbackResult) =>
    {
        if (callbackResult.Result.IsSuccessful)
        {
            // 성공 시 로직을 구현해 주세요.
        }
        else
        {
            // 실패 시 로직을 구현해 주세요. (코드 33은 무시해도 됩니다.)
        }
    });

Notes

  • 팝업 API는 onFinishedonDestroy 콜백이 독립적으로 호출돼요. onFinished가 실패해도 onDestroy는 반드시 호출돼요.
  • 33(PopupNotCreated)은 onDestroy 전용 코드이며 onFinished에는 절대 전달되지 않아요.

See Also


Stove_CloseAllPopups

종류 함수 · 모듈 Base · 버전 3.5.0

Description

SDK가 띄운 모든 팝업을 닫아요. IAP 팝업과 View 팝업이 모두 대상이에요.

단일바이너리(BaseSDK Consolidation) 통합 이후, 모듈별로 따로 있던 Stove_IAP_CloseAllPopups() / Stove_View_CloseAllPopups()를 이 함수 하나로 대체해요. 이제 한 번의 호출로 SDK의 모든 팝업이 함께 닫혀요.

Declaration

csharp
public static IStoveResult Stove_CloseAllPopups()

Parameters

없음

Returns

TypeDescription
IStoveResult호출 결과. result.IsSuccessful로 성공 여부를 확인

Error Codes

CodeNameDescriptionShow to UserIn-Game Message
0k_EStoveCommonResultCode_Success성공x
60k_EStoveCommonResultCode_ViewUiNotInitialized팝업 UI 서브시스템이 초기화되지 않음(IAP 쪽 확인 결과) (Stove_Initialize()MainWndHandle 설정 확인)x
65k_EStoveCommonResultCode_WebviewCloseAllFail웹뷰 일괄 닫기 실패(IAP 쪽 확인 결과) (재시도)x
253k_EStoveCommonResultCode_UnmanagedExceptionSDK 내부에서 알 수 없는 예외 발생 (로그 확인 후 재시도)O일시적으로 문제가 발생했습니다. 다시 시도해 주세요. [확인]
254k_EStoveCommonResultCode_ManagedException래퍼에서 예외 발생 시 반환값으로 전달 (로그 확인 후 재시도)O일시적으로 문제가 발생했습니다. 다시 시도해 주세요. [확인]

전체 목록: EStoveCommonResultCode

Example

csharp
using static Stove.PCSDK.V3.Base;

IStoveResult result = Stove_CloseAllPopups();
if (result.IsSuccessful)
{
    // 성공 시 로직을 구현해 주세요.
}
else
{
    // 실패 시 로직을 구현해 주세요.
}

Notes

  • 단일바이너리 통합 이후 IAP 팝업과 View 팝업을 한 번의 호출로 모두 닫아요.
  • 내부적으로 IAP → View 순서로 두 모듈의 CloseAllPopups를 모두 호출하며, IAP가 실패하면 IAP 결과를 그대로 반환하고 IAP가 성공하면 View의 결과를 반환해요(View 쪽 개별 실패 코드는 이 문서 범위 밖이에요).

Stove_ConfirmPurchase

종류 함수 · 모듈 IAP · 버전 3.5.0

Description

Stove_StartPurchaseOperation 값이 k_EStovePurchaseOperation_WithWebViewAndConfirmResult가 아닌 경우, 결제 완료 후 이 함수를 호출해 구매를 확정해요. confirmPurchaseParam.TxnMasterNo에는 Stove_StartPurchase 결과로 받은 IStoveStartPurchaseOutcome.TxnMasterNo 값을 설정해요.

확정 결과는 onFinished 콜백으로 전달되며, 구매한 상품 목록과 결제에 사용된 화폐(차지) 정보가 함께 전달돼요.

SDK 초기화(Stove_Initialize) 이후에 호출해야 해요.

Declaration

csharp
public static void Stove_ConfirmPurchase(IStoveConfirmPurchaseParam confirmPurchaseParam, OnConfirmPurchaseCallback onFinished)

Parameters

NameTypeRequiredDescription
confirmPurchaseParamIStoveConfirmPurchaseParamY확정할 거래의 마스터 번호(TxnMasterNo) 파라미터
onFinishedOnConfirmPurchaseCallbackY확정 결과를 받을 콜백

Returns

없음

Callback

csharp
public delegate void OnConfirmPurchaseCallback(IStoveCallbackResult callbackResult, IStoveConfirmPurchaseOutcome outcome);
NameTypeDescription
callbackResultIStoveCallbackResult호출 결과
outcomeIStoveConfirmPurchaseOutcome확정 결과. IsConfirmed, PurchasedProducts, ChargeInfos를 포함해요

Stove_RunCallback()을 호출한 스레드에서 실행돼요. 호출 1건당 1회만 전달돼요.

Error Codes

CodeNameDescriptionShow to UserIn-Game Message
0k_EStoveCommonResultCode_Success성공x
17k_EStoveCommonResultCode_NotInitialized결제 기능이 초기화되지 않음 (Stove_Initialize 선행 호출)x
5k_EStoveCommonResultCode_InvalidParamonFinishednull이면 내부적으로 설정되지만 콜백이 없어 실제로 전달되지 않음 (참고용, 별도 처리 불필요)x
21k_EStoveCommonResultCode_NullEntity언어 정보 조회 실패 — 예외로 전환되지 않고 직접 전달되는 유일한 케이스 (재시도, 지속 시 SDK 팀 문의)x
254k_EStoveCommonResultCode_ManagedException래퍼에서 예외 발생 시 콜백으로 전달 (ExceptionMessage 로깅)O일시적으로 문제가 발생했습니다. 다시 시도해 주세요. [확인]
253k_EStoveCommonResultCode_UnmanagedException알 수 없는 예외 발생 (로그 확인 후 SDK 팀 문의)O일시적으로 문제가 발생했습니다. 다시 시도해 주세요. [확인]

전체 목록: EStoveCommonResultCode

Example

csharp
using static Stove.PCSDK.V3.IAP;

// txnMasterNo 는 Stove_StartPurchase() 결과의 IStoveStartPurchaseOutcome.TxnMasterNo 값입니다.
var confirmPurchaseParam = new IStoveConfirmPurchaseParam
{
    TxnMasterNo = txnMasterNo
};

Stove_ConfirmPurchase(confirmPurchaseParam, (callbackResult, outcome) =>
{
    if (callbackResult.Result.IsSuccessful && outcome.IsConfirmed)
    {
        // 성공 시 로직을 구현해 주세요.
        foreach (var purchasedProduct in outcome.PurchasedProducts)
        {
            long productId = purchasedProduct.ProductId;
        }
    }
    else
    {
        // 실패 시 로직을 구현해 주세요.
    }
});

Notes

  • 이 함수는 비동기 함수이며 결과는 onFinished 콜백으로만 전달돼요.
  • Stove_StartPurchaseOperationk_EStovePurchaseOperation_WithWebViewAndConfirmResult인 경우에는 SDK가 이 함수를 자동으로 호출하므로 별도로 호출할 필요가 없어요.
  • outcome.IsConfirmedcallbackResult의 성공 여부는 별개예요. 호출 자체가 성공했더라도 IsConfirmedfalse이면 구매가 최종 확정되지 않은 상태예요.

See Also


Stove_CouponPopup

종류 함수 · 모듈 View · 버전 3.5.0

Description

Stove_CouponPopup은 서버에서 쿠폰 팝업 목록을 조회해 웹뷰로 표시해요.

SDK 초기화(Stove_Initialize) 이후에 호출해야 해요. 표시할 팝업 데이터가 없으면 웹뷰를 띄우지 않고 종료해요.

팝업이 하나도 생성되지 않고 종료되는 모든 경로(월드 미접속, 미초기화, 조회 결과 없음, 웹뷰 생성 실패 등)에서 onDestroyk_EStoveCommonResultCode_PopupNotCreated(33)가 1회 전달돼요. 이 코드는 내부 정리 신호이며 onFinished에는 전달되지 않아요.

Declaration

csharp
public static void Stove_CouponPopup(IStovePopupParam popupParam, OnViewPopupCallback onFinished, OnViewPopupDestroyCallback onDestroy);

Parameters

NameTypeRequiredDescription
popupParamIStovePopupParamY웹뷰 표시 모드(WebViewMode)를 담은 파라미터예요.
onFinishedOnViewPopupCallbackY팝업 표시가 완료(또는 표시할 데이터가 없어 종료)되었을 때 호출되는 콜백이에요.
onDestroyOnViewPopupDestroyCallbackN팝업 웹뷰가 완전히 파괴되었을 때 호출되는 콜백이에요.

Returns

없음 (void 함수)

Callback

csharp
public delegate void OnViewPopupCallback(IStoveCallbackResult callbackResult);
public delegate void OnViewPopupDestroyCallback(IStoveCallbackResult callbackResult);
NameTypeDescription
callbackResultIStoveCallbackResult호출 결과예요. callbackResult.Result.IsSuccessful로 성공 여부를 확인해요.

onFinished는 팝업 표시(또는 데이터 없음으로 인한 종료)가 확정된 시점에 1회 호출돼요. onDestroy는 웹뷰가 화면에서 완전히 사라진 시점에 1회 호출돼요. 두 콜백 모두 Stove_RunCallback()을 호출한 스레드에서 실행돼요.

Error Codes

onFinished

CodeNameDescriptionShow to UserIn-Game Message
0k_EStoveCommonResultCode_Success성공x
5k_EStoveCommonResultCode_InvalidParam게임 서버(월드)에 접속하지 않은 상태(내부 WorldId가 빈 문자열) (게임 서버 접속 후 재호출)x
17k_EStoveCommonResultCode_NotInitialized팝업 기능이 초기화되지 않음 (Stove_Initialize 선행 호출 확인)x
60k_EStoveCommonResultCode_ViewUiNotInitialized팝업 UI 서브시스템이 초기화되지 않음(정상 흐름에서는 발생하지 않는 방어적 코드) (재현되면 SDK 지원팀 문의)x
65k_EStoveCommonResultCode_WebviewCloseAllFail팝업 생성 전 기존 웹뷰 일괄 닫기 실패 (로그 확인)x
62k_EStoveCommonResultCode_WebviewCreateFail웹뷰 생성 실패 (재시도 또는 로그 확인)x
63k_EStoveCommonResultCode_WebviewLoadUrlFail웹뷰 URL 로드 실패 (네트워크 상태 확인 후 재시도)x
67k_EStoveCommonResultCode_NoPopupData서버 조회 결과 표시할 쿠폰 팝업이 0건 (정상 종료로 처리)O팝업 설정 정보가 존재하지 않아 표시할 창이 없습니다. [확인]
254k_EStoveCommonResultCode_ManagedException래퍼에서 예외 발생 시 콜백으로 전달 (callbackResult.Result.ExceptionMessage 로그 확인)O일시적으로 문제가 발생했습니다. 다시 시도해 주세요. [확인]

onDestroy

CodeNameDescriptionShow to UserIn-Game Message
0k_EStoveCommonResultCode_Success웹뷰 정상 종료x
66k_EStoveCommonResultCode_WebviewCloseFail웹뷰 닫기 실패 (로그 확인)x
33k_EStoveCommonResultCode_PopupNotCreated웹뷰가 생성되지 않고 조기 종료됨(월드 미접속 포함, 내부 정리 신호) (별도 처리 불필요)x
254k_EStoveCommonResultCode_ManagedException래퍼에서 예외 발생 시 콜백으로 전달 (callbackResult.Result.ExceptionMessage 로그 확인)O일시적으로 문제가 발생했습니다. 다시 시도해 주세요. [확인]

전체 목록: EStoveCommonResultCode

Example

csharp
using static Stove.PCSDK.V3.View;

var popupParam = new IStovePopupParam
{
    WebViewMode = EStoveWebViewMode.k_EStoveWebViewMode_Internal
};

Stove_CouponPopup(popupParam,
    onFinished: (callbackResult) =>
    {
        if (callbackResult.Result.IsSuccessful)
        {
            // 성공 시 로직을 구현해 주세요.
        }
        else
        {
            // 실패 시 로직을 구현해 주세요.
        }
    },
    onDestroy: (callbackResult) =>
    {
        if (callbackResult.Result.IsSuccessful)
        {
            // 성공 시 로직을 구현해 주세요.
        }
        else
        {
            // 실패 시 로직을 구현해 주세요. (코드 33은 무시해도 됩니다.)
        }
    });

Notes

  • Stove_CouponPopup은 다른 팝업 API와 달리 게임 서버(월드) 접속 여부를 검증해요. 접속하지 않은 상태에서 호출하면 InvalidParam(5)으로 실패해요.
  • 33(PopupNotCreated)은 onDestroy 전용 코드이며 onFinished에는 절대 전달되지 않아요.

See Also


Stove_FetchInventory

종류 함수 · 모듈 IAP · 버전 3.5.0

Description

현재 로그인한 사용자의 구매 내역을 조회해요. 조회된 인벤토리 항목 목록은 onFinished 콜백으로 전달돼요.

SDK 초기화(Stove_Initialize) 이후에 호출해야 해요.

Declaration

csharp
public static void Stove_FetchInventory(OnFetchInventoryCallback onFinished)

Parameters

NameTypeRequiredDescription
onFinishedOnFetchInventoryCallbackY인벤토리 항목 목록을 받을 콜백

Returns

없음

Callback

csharp
public delegate void OnFetchInventoryCallback(IStoveCallbackResult callbackResult, IStoveInventoryList list);
NameTypeDescription
callbackResultIStoveCallbackResult호출 결과
listIStoveInventoryList조회된 인벤토리 항목 목록

Stove_RunCallback()을 호출한 스레드에서 실행돼요. 호출 1건당 1회만 전달돼요. list는 SDK가 소유하며 콜백이 끝나면 무효처리되므로, 필요한 값은 콜백 안에서 복사해 두어야 해요.

Error Codes

CodeNameDescriptionShow to UserIn-Game Message
0k_EStoveCommonResultCode_Success성공x
17k_EStoveCommonResultCode_NotInitialized결제 기능이 초기화되지 않음 (Stove_Initialize 선행 호출)x
5k_EStoveCommonResultCode_InvalidParamonFinishednull이면 내부적으로 설정되지만 콜백이 없어 실제로 전달되지 않음 (참고용, 별도 처리 불필요)x
254k_EStoveCommonResultCode_ManagedException래퍼에서 예외 발생 시 콜백으로 전달 (ExceptionMessage 로깅)O일시적으로 문제가 발생했습니다. 다시 시도해 주세요. [확인]
253k_EStoveCommonResultCode_UnmanagedException알 수 없는 예외 발생 (로그 확인 후 SDK 팀 문의)O일시적으로 문제가 발생했습니다. 다시 시도해 주세요. [확인]

전체 목록: EStoveCommonResultCode

Example

csharp
using static Stove.PCSDK.V3.IAP;

Stove_FetchInventory((callbackResult, list) =>
{
    if (callbackResult.Result.IsSuccessful)
    {
        // 성공 시 로직을 구현해 주세요.
        foreach (var item in list)
        {
            string productName = item.ProductName;
        }
    }
    else
    {
        // 실패 시 로직을 구현해 주세요.
    }
});

Notes

  • 이 함수는 비동기 함수이며 결과는 onFinished 콜백으로만 전달돼요.

See Also


Stove_FetchProducts

종류 함수 · 모듈 IAP · 버전 3.5.0

Description

fetchProductParam으로 전달한 카테고리 ID와 페이지 조건에 맞는 상품 목록을 조회해요. 조회된 상품 목록은 onFinished 콜백으로 전달돼요.

카테고리 ID를 비워두면 전체 카테고리의 상품을 조회해요. 특정 카테고리의 상품만 조회하려면 Stove_FetchShopCategories로 얻은 CategoryId를 필터로 지정해요.

SDK 초기화(Stove_Initialize) 이후에 호출해야 해요.

Declaration

csharp
public static void Stove_FetchProducts(IStoveFetchProductsParam fetchProductParam, OnFetchProductsCallback onFinished)

Parameters

NameTypeRequiredDescription
fetchProductParamIStoveFetchProductsParamY카테고리 필터·페이지 조건 파라미터
onFinishedOnFetchProductsCallbackY조회 결과를 받을 콜백

Returns

없음

Callback

csharp
public delegate void OnFetchProductsCallback(IStoveCallbackResult callbackResult, IStoveProductList list);
NameTypeDescription
callbackResultIStoveCallbackResult호출 결과
listIStoveProductList조회된 상품 목록

Stove_RunCallback()을 호출한 스레드에서 실행돼요. 호출 1건당 1회만 전달돼요. list는 SDK가 소유하며 콜백이 끝나면 무효처리되므로, 필요한 값은 콜백 안에서 복사해 두어야 해요.

Error Codes

CodeNameDescriptionShow to UserIn-Game Message
0k_EStoveCommonResultCode_Success성공x
17k_EStoveCommonResultCode_NotInitialized결제 기능이 초기화되지 않음 (Stove_Initialize 선행 호출)x
5k_EStoveCommonResultCode_InvalidParamonFinishednull이면 내부적으로 이 코드가 설정되지만, 콜백 자체가 없어 실제로 호출부에는 전달되지 않아요 (참고용, 별도 처리 불필요)x
254k_EStoveCommonResultCode_ManagedException래퍼에서 예외 발생 시 콜백으로 전달 (ExceptionMessage 로깅)O일시적으로 문제가 발생했습니다. 다시 시도해 주세요. [확인]
253k_EStoveCommonResultCode_UnmanagedException알 수 없는 예외 발생 (로그 확인 후 SDK 팀 문의)O일시적으로 문제가 발생했습니다. 다시 시도해 주세요. [확인]

전체 목록: EStoveCommonResultCode

Example

csharp
using static Stove.PCSDK.V3.IAP;

var fetchProductParam = new IStoveFetchProductsParam
{
    CategoryId = string.Empty,
    PageIndex = 1,
    PageSize = 20
};

Stove_FetchProducts(fetchProductParam, (callbackResult, list) =>
{
    if (callbackResult.Result.IsSuccessful)
    {
        // 성공 시 로직을 구현해 주세요.
        foreach (var product in list)
        {
            long productId = product.ProductId;
            string productName = product.ProductName;
        }
    }
    else
    {
        // 실패 시 로직을 구현해 주세요.
    }
});

Notes

  • 이 호출은 상품 목록 조회의 확장 동작(구 인터페이스의 Ex 변형에 해당)을 수행해요.
  • 이 함수는 비동기 함수이며 결과는 onFinished 콜백으로만 전달돼요.
  • fetchProductParam은 일반 struct이므로 별도의 생성·해제 API 없이 값을 채워 그대로 전달해요.
  • 조회된 상품의 ProductIdStove_StartPurchase 호출 시 주문 항목의 상품 식별자로 사용해요.
  • IStoveProductDiscountStartDate/DiscountEndDate/SalesStartDate/SalesEndDate는 모두 UTC 밀리초 Unix epoch 값이에요.

See Also


Stove_FetchShopCategories

종류 함수 · 모듈 IAP · 버전 3.5.0

Description

Stove_FetchShopCategories는 게임 상점에 등록된 카테고리 목록을 트리 구조로 조회해요. 각 카테고리는 부모 카테고리 ID, 표시 순서, 트리 깊이 정보를 함께 가지고 있어 상점 UI를 계층적으로 구성할 수 있어요.

SDK 초기화(Stove_Initialize) 이후에 호출해야 해요.

Declaration

csharp
public static void Stove_FetchShopCategories(OnFetchShopCategoriesCallback onFinished)

Parameters

NameTypeRequiredDescription
onFinishedOnFetchShopCategoriesCallbackY조회 결과를 받을 콜백

Returns

없음

Callback

csharp
public delegate void OnFetchShopCategoriesCallback(IStoveCallbackResult callbackResult, IStoveShopCategoryList list);
NameTypeDescription
callbackResultIStoveCallbackResult호출 결과
listIStoveShopCategoryList조회된 카테고리 목록

Stove_RunCallback()을 호출한 스레드에서 실행돼요. 호출 1건당 1회만 전달돼요. list는 SDK가 소유하며 콜백이 끝나면 무효처리되므로, 필요한 값은 콜백 안에서 복사해 두어야 해요.

Error Codes

CodeNameDescriptionShow to UserIn-Game Message
0k_EStoveCommonResultCode_Success성공x
17k_EStoveCommonResultCode_NotInitialized결제 기능이 초기화되지 않음 (Stove_Initialize 선행 호출)x
5k_EStoveCommonResultCode_InvalidParamonFinishednull이면 내부적으로 이 코드가 설정되지만, 콜백 자체가 없어 실제로 호출부에는 전달되지 않아요 (참고용, 별도 처리 불필요)x
254k_EStoveCommonResultCode_ManagedException래퍼에서 예외 발생 시 콜백으로 전달 (ExceptionMessage 로깅)O일시적으로 문제가 발생했습니다. 다시 시도해 주세요. [확인]
253k_EStoveCommonResultCode_UnmanagedException알 수 없는 예외 발생 (로그 확인 후 SDK 팀 문의)O일시적으로 문제가 발생했습니다. 다시 시도해 주세요. [확인]

전체 목록: EStoveCommonResultCode

Example

csharp
using static Stove.PCSDK.V3.IAP;

Stove_FetchShopCategories((callbackResult, list) =>
{
    if (callbackResult.Result.IsSuccessful)
    {
        // 성공 시 로직을 구현해 주세요.
        foreach (var category in list)
        {
            // category.CategoryId, category.CategoryName 등을 사용합니다.
        }
    }
    else
    {
        // 실패 시 로직을 구현해 주세요.
    }
});

Notes

  • 이 함수는 비동기 함수이며 결과는 onFinished 콜백으로만 전달돼요.
  • 조회한 카테고리의 CategoryIdStove_FetchProductsIStoveFetchProductsParam.CategoryId 필터에 사용할 수 있어요.

See Also


Stove_FetchTermsAgreement

종류 함수 · 모듈 IAP · 버전 3.5.0

Description

사용자가 현재 약관에 동의했는지 조회해요. 이미 동의한 경우 onFinished로 전달되는 outcome.IsAgreedtrue이며 outcome.Url은 비어 있어요. 동의하지 않은 경우 termsParam.Operation(EStoveTermsOperation) 값에 따라 동작이 달라져요.

  • k_EStoveTermsOperation_Default: onFinished로 전달되는 outcome.Url을 이용해 호출자가 직접 약관 페이지를 열어야 해요.
  • k_EStoveTermsOperation_WithWebView: SDK가 Stove Webview로 약관 페이지를 직접 표시해요.

SDK 초기화(Stove_Initialize) 이후에 호출해야 해요.

Declaration

csharp
public static void Stove_FetchTermsAgreement(IStoveFetchTermsAgreementParam termsParam, OnFetchTermsAgreementCallback onFinished, OnIAPPopupDestroyCallback onDestroy)

Parameters

NameTypeRequiredDescription
termsParamIStoveFetchTermsAgreementParamY약관 조회 동작·웹뷰 배치 파라미터
onFinishedOnFetchTermsAgreementCallbackY동의 여부와 약관 URL을 받을 콜백
onDestroyOnIAPPopupDestroyCallbackN이 호출로 생성된 팝업이 모두 닫혔을 때 전달되는 콜백

Returns

없음

Callback

csharp
public delegate void OnFetchTermsAgreementCallback(IStoveCallbackResult callbackResult, IStoveTermsAgreementOutcome outcome);
public delegate void OnIAPPopupDestroyCallback(IStoveCallbackResult callbackResult);
NameTypeDescription
callbackResultIStoveCallbackResult호출 결과
outcomeIStoveTermsAgreementOutcomeIsAgreed(동의 여부)와 Url(약관 페이지 URL, 이미 동의했으면 빈 문자열)을 포함

Stove_RunCallback()을 호출한 스레드에서 실행돼요.

  • onFinished는 호출 1건당 1회만 전달돼요.
  • onDestroyOperation == WithWebView로 웹뷰가 열린 경우, 그 웹뷰가 닫힌 뒤 전달돼요. 웹뷰가 한 번도 생성되지 않고 종료된 경우에도 PopupNotCreated(33)와 함께 1회 전달돼요.

Error Codes

CallbackCodeNameDescriptionShow to UserIn-Game Message
onFinished0k_EStoveCommonResultCode_Success성공(이미 동의한 경우도 포함)x
onFinished17k_EStoveCommonResultCode_NotInitialized결제 기능이 초기화되지 않음 (Stove_Initialize 선행 호출)x
onFinished5k_EStoveCommonResultCode_InvalidParamonFinishednull이면 내부적으로 설정되지만 콜백이 없어 실제로 전달되지 않음 (참고용, 별도 처리 불필요)x
onFinished60k_EStoveCommonResultCode_ViewUiNotInitialized웹뷰로 약관 페이지를 열어야 하는데 View UI가 초기화되지 않음 (SDK 팀 문의)x
onFinished65k_EStoveCommonResultCode_WebviewCloseAllFail웹뷰를 열기 전 기존 웹뷰 정리 실패 (재시도)x
onFinished62k_EStoveCommonResultCode_WebviewCreateFail약관 웹뷰 생성 실패 (재시도)x
onFinished64k_EStoveCommonResultCode_WebviewCreateCookieFail언어 쿠키 설정 실패 (재시도)O구매를 위해서는 약관 동의가 필요합니다. 현재 약관 동의 화면을 불러오지 못했습니다. 다시 시도해 주세요. [확인]
onFinished63k_EStoveCommonResultCode_WebviewLoadUrlFail약관 웹뷰의 URL 로드 실패 (재시도)x
onFinished254k_EStoveCommonResultCode_ManagedException래퍼에서 예외 발생 시 콜백으로 전달 (ExceptionMessage 로깅)O일시적으로 문제가 발생했습니다. 다시 시도해 주세요. [확인]
onFinished253k_EStoveCommonResultCode_UnmanagedException알 수 없는 예외 발생 (로그 확인 후 SDK 팀 문의)O일시적으로 문제가 발생했습니다. 다시 시도해 주세요. [확인]
onDestroy33k_EStoveCommonResultCode_PopupNotCreated웹뷰가 한 번도 생성되지 않고 종료된 조기 실패 경로에서 1회 전달 (무시해도 됨)x
onDestroy66k_EStoveCommonResultCode_WebviewCloseFail웹뷰 정상 종료 시 내부 close 처리 실패 (참고용 로깅)x

전체 목록: EStoveCommonResultCode

Example

csharp
using static Stove.PCSDK.V3.IAP;

var termsParam = new IStoveFetchTermsAgreementParam
{
    Operation = EStoveTermsOperation.k_EStoveTermsOperation_Default
};

Stove_FetchTermsAgreement(termsParam,
    (callbackResult, outcome) =>
    {
        if (callbackResult.Result.IsSuccessful)
        {
            // 성공 시 로직을 구현해 주세요.
            if (!outcome.IsAgreed)
            {
                // outcome.Url 로 약관 페이지를 열어 주세요.
            }
        }
        else
        {
            // 실패 시 로직을 구현해 주세요.
        }
    },
    (callbackResult) =>
    {
        // 약관 페이지 팝업이 모두 닫혔을 때 로직을 구현해 주세요.
    });

Notes

  • 이 함수는 비동기 함수이며 결과는 onFinished 콜백으로만 전달돼요.
  • 이미 약관에 동의한 상태면 팝업 없이 즉시 성공(IsAgreed = true)으로 종료해요. 오류 코드가 아니라 정상 분기예요.
  • Operation == WithWebView를 사용하면 호출자가 약관 페이지의 UI를 직접 구현할 필요가 없어요.

See Also


Stove_GetAccessToken

종류 함수 · 모듈 Base · 버전 3.5.0

Description

현재 유효한 AccessToken을 조회해요. SDK가 내부적으로 토큰을 자동 갱신하여 항상 유효한 토큰을 제공해요.

Declaration

csharp
public static IStoveResult Stove_GetAccessToken(ref string accessToken, uint length)

Parameters

NameTypeRequiredDescription
accessTokenref stringYAccessToken 문자열을 받을 변수. 호출 전 값은 무시되고, 호출 후 결과 문자열로 대체됨
lengthuintY내부적으로 사용하는 문자열 버퍼의 길이

Returns

TypeDescription
IStoveResult호출 결과. result.IsSuccessful로 성공 여부를 확인

Error Codes

CodeNameDescriptionShow to UserIn-Game Message
0k_EStoveCommonResultCode_Success성공x
5k_EStoveCommonResultCode_InvalidParam버퍼가 null이거나 length가 0, 혹은 버퍼가 작아 문자열이 잘림 (length 값을 늘려 재시도)x
16k_EStoveCommonResultCode_BaseNotInitializedSDK가 초기화되지 않음 (Stove_Initialize() 호출 여부 확인)x
19k_EStoveCommonResultCode_InvalidAccessToken토큰이 유효하지 않음 (재로그인 유도)O로그인 세션이 만료되었습니다. 게임 종료 후 다시 실행해 주세요. [확인]
253k_EStoveCommonResultCode_UnmanagedExceptionSDK 내부에서 알 수 없는 예외 발생 (로그 확인 후 재시도)O일시적으로 문제가 발생했습니다. 다시 시도해 주세요. [확인]
254k_EStoveCommonResultCode_ManagedException래퍼에서 예외 발생 시 반환값으로 전달 (로그 확인 후 재시도)O일시적으로 문제가 발생했습니다. 다시 시도해 주세요. [확인]

전체 목록: EStoveCommonResultCode

아래 코드를 받으면 반드시 게임을 종료해야 해요. 정상 진행이 불가능한 상태예요.

  • 19 k_EStoveCommonResultCode_InvalidAccessToken — 로그인 세션 만료로 게임 종료 후 재실행이 필요해요

Example

csharp
using static Stove.PCSDK.V3.Base;

string accessToken = null;
IStoveResult result = Stove_GetAccessToken(ref accessToken, 1024);
if (result.IsSuccessful)
{
    // 성공 시 로직을 구현해 주세요. accessToken을 사용합니다.
}
else
{
    // 실패 시 로직을 구현해 주세요.
}

Notes

  • SDK가 내부적으로 토큰을 자동 갱신하므로, 이 함수는 항상 유효한 토큰을 반환해요.
  • 조회한 토큰을 게임에서 따로 보관해 두고 다시 쓰지 마세요. SDK 가 토큰을 주기적으로 갱신하므로 보관해 둔 값은 만료될 수 있어요. 토큰이 필요할 때마다 이 함수를 호출해 그때의 유효한 값을 받아 쓰세요.
  • 토큰이 갱신되는 시점에 별도로 알림을 받으려면 Stove_AccessTokenRenewed를 사용해요.

See Also


Stove_GetGds

종류 함수 · 모듈 Base · 버전 3.5.0

Description

로그인한 사용자의 GDS(국가 · 시간대) 정보를 조회해요.

Declaration

csharp
public static IStoveResult Stove_GetGds(ref IStoveGds gds)

Parameters

NameTypeRequiredDescription
gdsIStoveGdsYGDS 정보를 받을 ref 변수

Returns

TypeDescription
IStoveResult호출 결과. result.IsSuccessful로 성공 여부를 확인

Error Codes

CodeNameDescriptionShow to UserIn-Game Message
0k_EStoveCommonResultCode_Success성공x
5k_EStoveCommonResultCode_InvalidParamoutGds가 null(표면 레벨 검증) (파라미터 확인)x
16k_EStoveCommonResultCode_BaseNotInitializedSDK가 초기화되지 않음 (Stove_Initialize() 호출 여부 확인)x
253k_EStoveCommonResultCode_UnmanagedExceptionSDK 내부에서 알 수 없는 예외 발생 (로그 확인 후 재시도)O일시적으로 문제가 발생했습니다. 다시 시도해 주세요. [확인]
254k_EStoveCommonResultCode_ManagedException래퍼에서 예외 발생 시 반환값으로 전달 (로그 확인 후 재시도)O일시적으로 문제가 발생했습니다. 다시 시도해 주세요. [확인]

전체 목록: EStoveCommonResultCode

Example

csharp
using static Stove.PCSDK.V3.Base;

IStoveGds gds = default;
IStoveResult result = Stove_GetGds(ref gds);
if (result.IsSuccessful)
{
    // 성공 시 로직을 구현해 주세요.
    string nation = gds.Nation;
    string timezone = gds.Timezone;
}
else
{
    // 실패 시 로직을 구현해 주세요.
}

Notes

  • 국가 코드를 IP로 판별하지 못해 기본 국가 코드를 사용한 경우 gds.IsDefaulttrue예요.

See Also


Stove_GetSignin

종류 함수 · 모듈 Base · 버전 3.5.0

Description

로그인한 사용자의 가입(Signin) 정보를 조회해요.

Declaration

csharp
public static IStoveResult Stove_GetSignin(ref IStoveSignin signin)

Parameters

NameTypeRequiredDescription
signinIStoveSigninY가입 정보를 받을 ref 변수

Returns

TypeDescription
IStoveResult호출 결과. result.IsSuccessful로 성공 여부를 확인

Error Codes

CodeNameDescriptionShow to UserIn-Game Message
0k_EStoveCommonResultCode_Success성공x
5k_EStoveCommonResultCode_InvalidParamoutSignin이 null(표면 레벨 검증) (파라미터 확인)x
16k_EStoveCommonResultCode_BaseNotInitializedSDK가 초기화되지 않음 (Stove_Initialize() 호출 여부 확인)x
253k_EStoveCommonResultCode_UnmanagedExceptionSDK 내부에서 알 수 없는 예외 발생 (로그 확인 후 재시도)O일시적으로 문제가 발생했습니다. 다시 시도해 주세요. [확인]
254k_EStoveCommonResultCode_ManagedException래퍼에서 예외 발생 시 반환값으로 전달 (로그 확인 후 재시도)O일시적으로 문제가 발생했습니다. 다시 시도해 주세요. [확인]

전체 목록: EStoveCommonResultCode

Example

csharp
using static Stove.PCSDK.V3.Base;

IStoveSignin signin = default;
IStoveResult result = Stove_GetSignin(ref signin);
if (result.IsSuccessful)
{
    // 성공 시 로직을 구현해 주세요.
    bool personVerified = signin.IsPersonVerified;
    string providerCode = signin.ProviderCode;
}
else
{
    // 실패 시 로직을 구현해 주세요.
}

Notes

  • 계정 유형(signin.AccountType)은 숫자 코드로 제공돼요. 예: 2=Facebook, 3=Twitter, 6=Naver, 9=Google+, 11=스토브 PC 가입, 12=Apple, 13=LINE, 14=LINE Games, 15=Steam, 16=VTCO 등.

See Also


Stove_GetUser

종류 함수 · 모듈 Base · 버전 3.5.0

Description

로그인한 사용자 정보를 조회해요.

Declaration

csharp
public static IStoveResult Stove_GetUser(ref IStoveUser user)

Parameters

NameTypeRequiredDescription
userIStoveUserY사용자 정보를 받을 ref 변수

Returns

TypeDescription
IStoveResult호출 결과. result.IsSuccessful로 성공 여부를 확인

Error Codes

CodeNameDescriptionShow to UserIn-Game Message
0k_EStoveCommonResultCode_Success성공x
5k_EStoveCommonResultCode_InvalidParamoutUser가 null(표면 레벨 검증) (파라미터 확인)x
16k_EStoveCommonResultCode_BaseNotInitializedSDK가 초기화되지 않음 (Stove_Initialize() 호출 여부 확인)x
253k_EStoveCommonResultCode_UnmanagedExceptionSDK 내부에서 알 수 없는 예외 발생 (로그 확인 후 재시도)O일시적으로 문제가 발생했습니다. 다시 시도해 주세요. [확인]
254k_EStoveCommonResultCode_ManagedException래퍼에서 예외 발생 시 반환값으로 전달 (로그 확인 후 재시도)O일시적으로 문제가 발생했습니다. 다시 시도해 주세요. [확인]

전체 목록: EStoveCommonResultCode

Example

csharp
using static Stove.PCSDK.V3.Base;

IStoveUser user = default;
IStoveResult result = Stove_GetUser(ref user);
if (result.IsSuccessful)
{
    // 성공 시 로직을 구현해 주세요.
    string nickName = user.NickName;
    ulong userId = user.UserId;
}
else
{
    // 실패 시 로직을 구현해 주세요.
}

Notes

See Also


Stove_GetVersion

종류 함수 · 모듈 Base · 버전 3.5.0

Description

SDK 버전 정보를 조회해요.

Declaration

csharp
public static IStoveResult Stove_GetVersion(ref string version, uint length)

Parameters

NameTypeRequiredDescription
versionref stringY버전 문자열을 받을 변수. 호출 전 값은 무시되고, 호출 후 결과 문자열로 대체됨
lengthuintY내부적으로 사용하는 문자열 버퍼의 길이

Returns

TypeDescription
IStoveResult호출 결과. result.IsSuccessful로 성공 여부를 확인

Error Codes

CodeNameDescriptionShow to UserIn-Game Message
0k_EStoveCommonResultCode_Success성공x
5k_EStoveCommonResultCode_InvalidParam버퍼가 null이거나 length가 0, 혹은 버퍼가 작아 문자열이 잘림 (length 값을 늘려 재시도)x
251k_EStoveCommonResultCode_PcsdkDllNotFoundDLL 경로를 찾지 못함 (SDK 배포 상태 확인)x
253k_EStoveCommonResultCode_UnmanagedExceptionSDK 내부에서 알 수 없는 예외 발생 (로그 확인 후 재시도)O일시적으로 문제가 발생했습니다. 다시 시도해 주세요. [확인]
254k_EStoveCommonResultCode_ManagedException래퍼에서 예외 발생 시 반환값으로 전달 (로그 확인 후 재시도)O일시적으로 문제가 발생했습니다. 다시 시도해 주세요. [확인]

전체 목록: EStoveCommonResultCode

Example

csharp
using static Stove.PCSDK.V3.Base;

string version = null;
IStoveResult result = Stove_GetVersion(ref version, 64);
if (result.IsSuccessful)
{
    // 성공 시 로직을 구현해 주세요. version을 사용합니다.
}
else
{
    // 실패 시 로직을 구현해 주세요.
}

Notes

  • 이 함수는 동기 함수이며 콜백을 받지 않아요.

Stove_Initialize

종류 함수 · 모듈 Base · 버전 3.5.0

Description

SDK를 초기화해요. 이 API에는 두 가지 오버로드가 있어요.

  • 인자 없는 오버로드: SDK만 초기화해요. Stove_RestartAppIfNecessary()가 캐시해 둔 environment/gameId/appKey 값을 재사용해요.
  • IStoveInitializeParam을 받는 오버로드: 단일바이너리(BaseSDK Consolidation) 통합 이후, SDK 초기화와 함께 View · IAP 모듈의 초기화도 함께 처리해요. SDK 부분은 마찬가지로 Stove_RestartAppIfNecessary()가 캐시한 environment/gameId/appKey 값을 재사용해요. 여기에 더해 initParam.MainWndHandle이 0이 아니면 View 모듈이 초기화되고, initParam.ShopKey가 비어 있지 않고 MainWndHandle도 지정되어 있으면 IAP 모듈까지 함께 초기화돼요.

이 API를 호출하기 전에 Stove_RestartAppIfNecessary()를 먼저 호출해야 해요.

Declaration

csharp
public static IStoveResult Stove_Initialize()
public static IStoveResult Stove_Initialize(IStoveInitializeParam initParam)

Parameters

NameTypeRequiredDescription
initParamIStoveInitializeParamNShopKey, MainWndHandle을 담은 파라미터. 생략(무인자 오버로드)하면 SDK만 초기화

Returns

TypeDescription
IStoveResult호출 결과. result.IsSuccessful로 성공 여부를 확인

Error Codes

CodeNameDescriptionShow to UserIn-Game Message
0k_EStoveCommonResultCode_Success성공x
1k_EStoveCommonResultCode_Fail필수 정보 파싱 실패(하위 계층) (로그 확인 후 재시도)x
5k_EStoveCommonResultCode_InvalidParamenvironment/gameId/appKey 중 하나라도 비어 있음(Stove_RestartAppIfNecessary에서 캐시된 값 기준) (Stove_RestartAppIfNecessary 호출 파라미터 확인)x
18k_EStoveCommonResultCode_AlreadyInitialized이미 초기화됨 (Stove_Uninitialize() 호출 후 재시도)x
251k_EStoveCommonResultCode_PcsdkDllNotFound내부 버전 조회(GetVersion) 실패 결과가 그대로 전파됨 (SDK 배포 상태 확인)x
253k_EStoveCommonResultCode_UnmanagedExceptionSDK 내부에서 알 수 없는 예외 발생 (로그 확인 후 재시도)O일시적으로 문제가 발생했습니다. 다시 시도해 주세요. [확인]
254k_EStoveCommonResultCode_ManagedException래퍼에서 예외 발생 시 반환값으로 전달 (로그 확인 후 재시도)O일시적으로 문제가 발생했습니다. 다시 시도해 주세요. [확인]
302k_EStoveResultCode_NotFoundRequiredInformation하위 계층(TokenActor)에서 필수 파라미터 누락 감지 (Stove_RestartAppIfNecessary 호출 파라미터 확인)x
304k_EStoveResultCode_NeedStoveLauncherStove_RestartAppIfNecessary를 먼저 호출하지 않음 (Stove_RestartAppIfNecessary 선행 호출)O게임이 스토브 PC 클라이언트를 통해 실행되지 않아 종료됩니다.클라이언트에서 다시 게임을 실행해주세요.클라이언트 미설치 시 스토브 홈페이지에서 설치해주세요.[확인]

전체 목록: EStoveCommonResultCode, EStoveResultCode

아래 코드를 받으면 반드시 게임을 종료해야 해요. 정상 진행이 불가능한 상태예요.

  • 304 k_EStoveResultCode_NeedStoveLauncher — 게임 종료 후 재실행이 필요해요

Example

csharp
using static Stove.PCSDK.V3.Base;

var initParam = new IStoveInitializeParam
{
    ShopKey = "your_shop_key",
    MainWndHandle = hWnd
};

IStoveResult result = Stove_Initialize(initParam);
if (result.IsSuccessful)
{
    // 성공 시 로직을 구현해 주세요.
}
else
{
    // 실패 시 로직을 구현해 주세요.
}

Notes

  • IStoveInitializeParam 오버로드는 성공 시 View/IAP 서브 초기화까지 수행해요. 그 서브 초기화가 실패하면 이 API 자체가 IAP/View 실패 코드로 실패 반환되지만, SDK 자체는 계속 동작해요.
  • IStoveInitializeParam에 있던 Environment/GameId/AppKey 필드는 Stove_RestartAppIfNecessaryIStoveRestartAppIfNecessaryParam으로 옮겨졌어요. 이 API의 IStoveInitializeParamShopKey/MainWndHandle 2개 필드만 가져요.
  • 종료할 때는 반드시 Stove_Uninitialize를 호출해야 해요.

See Also


Stove_ManualPopup

종류 함수 · 모듈 View · 버전 3.5.0

Description

Stove_ManualPopuppopupParam.ResourceKey로 지정한 팝업 콘텐츠를 서버에서 조회해 웹뷰로 표시해요. Stove_AutoPopup과 달리 게임이 원하는 시점에 임의로 호출할 수 있어요.

SDK 초기화(Stove_Initialize) 이후에 호출해야 해요.

팝업이 하나도 생성되지 않고 종료되는 모든 경로(파라미터 오류, 미초기화, 조회 결과 없음, 웹뷰 생성 실패 등)에서 onDestroyk_EStoveCommonResultCode_PopupNotCreated(33)가 1회 전달돼요. 이 코드는 내부 정리 신호이며 onFinished에는 전달되지 않아요.

Declaration

csharp
public static void Stove_ManualPopup(IStoveManualPopupParam popupParam, OnViewPopupCallback onFinished, OnViewPopupDestroyCallback onDestroy);

Parameters

NameTypeRequiredDescription
popupParamIStoveManualPopupParamY웹뷰 표시 모드(WebViewMode)와 표시할 팝업을 지정하는 ResourceKey를 담은 파라미터예요.
onFinishedOnViewPopupCallbackY팝업 표시가 완료되었을 때 호출되는 콜백이에요.
onDestroyOnViewPopupDestroyCallbackN팝업 웹뷰가 완전히 파괴되었을 때 호출되는 콜백이에요.

Returns

없음 (void 함수)

Callback

csharp
public delegate void OnViewPopupCallback(IStoveCallbackResult callbackResult);
public delegate void OnViewPopupDestroyCallback(IStoveCallbackResult callbackResult);
NameTypeDescription
callbackResultIStoveCallbackResult호출 결과예요. callbackResult.Result.IsSuccessful로 성공 여부를 확인해요.

onFinished는 팝업 표시가 확정된 시점에 1회 호출돼요. onDestroy는 웹뷰가 화면에서 완전히 사라진 시점에 1회 호출돼요. 두 콜백 모두 Stove_RunCallback()을 호출한 스레드에서 실행돼요.

Error Codes

onFinished

CodeNameDescriptionShow to UserIn-Game Message
0k_EStoveCommonResultCode_Success성공x
5k_EStoveCommonResultCode_InvalidParampopupParam.ResourceKey가 빈 문자열 (호출부에서 ResourceKey 값 확인)x
17k_EStoveCommonResultCode_NotInitialized팝업 기능이 초기화되지 않음 (Stove_Initialize 선행 호출 확인)x
60k_EStoveCommonResultCode_ViewUiNotInitialized팝업 UI 서브시스템이 초기화되지 않음(정상 흐름에서는 발생하지 않는 방어적 코드) (재현되면 SDK 지원팀 문의)x
65k_EStoveCommonResultCode_WebviewCloseAllFail팝업 생성 전 기존 웹뷰 일괄 닫기 실패 (로그 확인)x
62k_EStoveCommonResultCode_WebviewCreateFail웹뷰 생성 실패 (재시도 또는 로그 확인)x
63k_EStoveCommonResultCode_WebviewLoadUrlFail웹뷰 URL 로드 실패 (네트워크 상태 확인 후 재시도)x
67k_EStoveCommonResultCode_NoPopupDataResourceKey에 해당하는 팝업 데이터가 0건 (ResourceKey 값 확인)O팝업 설정 정보가 존재하지 않아 표시할 창이 없습니다. [확인]
254k_EStoveCommonResultCode_ManagedException래퍼에서 예외 발생 시 콜백으로 전달 (callbackResult.Result.ExceptionMessage 로그 확인)O일시적으로 문제가 발생했습니다. 다시 시도해 주세요. [확인]

onDestroy

CodeNameDescriptionShow to UserIn-Game Message
0k_EStoveCommonResultCode_Success웹뷰 정상 종료x
66k_EStoveCommonResultCode_WebviewCloseFail웹뷰 닫기 실패 (로그 확인)x
33k_EStoveCommonResultCode_PopupNotCreated웹뷰가 생성되지 않고 조기 종료됨(파라미터 오류 포함, 내부 정리 신호) (별도 처리 불필요)x
254k_EStoveCommonResultCode_ManagedException래퍼에서 예외 발생 시 콜백으로 전달 (callbackResult.Result.ExceptionMessage 로그 확인)O일시적으로 문제가 발생했습니다. 다시 시도해 주세요. [확인]

전체 목록: EStoveCommonResultCode

Example

csharp
using static Stove.PCSDK.V3.View;

var popupParam = new IStoveManualPopupParam
{
    WebViewMode = EStoveWebViewMode.k_EStoveWebViewMode_Internal,
    ResourceKey = "event_2026_summer"
};

Stove_ManualPopup(popupParam,
    onFinished: (callbackResult) =>
    {
        if (callbackResult.Result.IsSuccessful)
        {
            // 성공 시 로직을 구현해 주세요.
        }
        else
        {
            // 실패 시 로직을 구현해 주세요.
        }
    },
    onDestroy: (callbackResult) =>
    {
        if (callbackResult.Result.IsSuccessful)
        {
            // 성공 시 로직을 구현해 주세요.
        }
        else
        {
            // 실패 시 로직을 구현해 주세요. (코드 33은 무시해도 됩니다.)
        }
    });

Notes

  • Stove_AutoPopup은 서버가 자동으로 선정한 팝업을 보여주는 반면, Stove_ManualPopup은 게임이 ResourceKey로 특정 팝업 콘텐츠를 직접 지정해요.
  • 33(PopupNotCreated)은 onDestroy 전용 코드이며 onFinished에는 절대 전달되지 않아요.

See Also


Stove_NewsPopup

종류 함수 · 모듈 View · 버전 3.5.0

Description

Stove_NewsPopup은 서버에서 뉴스(공지) 팝업 목록을 조회해 웹뷰로 표시해요.

SDK 초기화(Stove_Initialize) 이후에 호출해야 해요. 표시할 팝업 데이터가 없으면 웹뷰를 띄우지 않고 종료해요.

팝업이 하나도 생성되지 않고 종료되는 모든 경로(미초기화, 조회 결과 없음, 웹뷰 생성 실패 등)에서 onDestroyk_EStoveCommonResultCode_PopupNotCreated(33)가 1회 전달돼요. 이 코드는 내부 정리 신호이며 onFinished에는 전달되지 않아요.

Declaration

csharp
public static void Stove_NewsPopup(IStovePopupParam popupParam, OnViewPopupCallback onFinished, OnViewPopupDestroyCallback onDestroy);

Parameters

NameTypeRequiredDescription
popupParamIStovePopupParamY웹뷰 표시 모드(WebViewMode)를 담은 파라미터예요.
onFinishedOnViewPopupCallbackY팝업 표시가 완료(또는 표시할 데이터가 없어 종료)되었을 때 호출되는 콜백이에요.
onDestroyOnViewPopupDestroyCallbackN팝업 웹뷰가 완전히 파괴되었을 때 호출되는 콜백이에요.

Returns

없음 (void 함수)

Callback

csharp
public delegate void OnViewPopupCallback(IStoveCallbackResult callbackResult);
public delegate void OnViewPopupDestroyCallback(IStoveCallbackResult callbackResult);
NameTypeDescription
callbackResultIStoveCallbackResult호출 결과예요. callbackResult.Result.IsSuccessful로 성공 여부를 확인해요.

onFinished는 팝업 표시(또는 데이터 없음으로 인한 종료)가 확정된 시점에 1회 호출돼요. onDestroy는 웹뷰가 화면에서 완전히 사라진 시점에 1회 호출돼요. 두 콜백 모두 Stove_RunCallback()을 호출한 스레드에서 실행돼요.

Error Codes

onFinished

CodeNameDescriptionShow to UserIn-Game Message
0k_EStoveCommonResultCode_Success성공x
17k_EStoveCommonResultCode_NotInitialized팝업 기능이 초기화되지 않음 (Stove_Initialize 선행 호출 확인)x
60k_EStoveCommonResultCode_ViewUiNotInitialized팝업 UI 서브시스템이 초기화되지 않음(정상 흐름에서는 발생하지 않는 방어적 코드) (재현되면 SDK 지원팀 문의)x
65k_EStoveCommonResultCode_WebviewCloseAllFail팝업 생성 전 기존 웹뷰 일괄 닫기 실패 (로그 확인)x
62k_EStoveCommonResultCode_WebviewCreateFail웹뷰 생성 실패 (재시도 또는 로그 확인)x
63k_EStoveCommonResultCode_WebviewLoadUrlFail웹뷰 URL 로드 실패 (네트워크 상태 확인 후 재시도)x
67k_EStoveCommonResultCode_NoPopupData서버 조회 결과 표시할 팝업이 0건 (정상 종료로 처리)O팝업 설정 정보가 존재하지 않아 표시할 창이 없습니다. [확인]
254k_EStoveCommonResultCode_ManagedException래퍼에서 예외 발생 시 콜백으로 전달 (callbackResult.Result.ExceptionMessage 로그 확인)O일시적으로 문제가 발생했습니다. 다시 시도해 주세요. [확인]

onDestroy

CodeNameDescriptionShow to UserIn-Game Message
0k_EStoveCommonResultCode_Success웹뷰 정상 종료x
66k_EStoveCommonResultCode_WebviewCloseFail웹뷰 닫기 실패 (로그 확인)x
33k_EStoveCommonResultCode_PopupNotCreated웹뷰가 생성되지 않고 조기 종료됨(내부 정리 신호) (별도 처리 불필요)x
254k_EStoveCommonResultCode_ManagedException래퍼에서 예외 발생 시 콜백으로 전달 (callbackResult.Result.ExceptionMessage 로그 확인)O일시적으로 문제가 발생했습니다. 다시 시도해 주세요. [확인]

전체 목록: EStoveCommonResultCode

Example

csharp
using static Stove.PCSDK.V3.View;

var popupParam = new IStovePopupParam
{
    WebViewMode = EStoveWebViewMode.k_EStoveWebViewMode_Internal
};

Stove_NewsPopup(popupParam,
    onFinished: (callbackResult) =>
    {
        if (callbackResult.Result.IsSuccessful)
        {
            // 성공 시 로직을 구현해 주세요.
        }
        else
        {
            // 실패 시 로직을 구현해 주세요.
        }
    },
    onDestroy: (callbackResult) =>
    {
        if (callbackResult.Result.IsSuccessful)
        {
            // 성공 시 로직을 구현해 주세요.
        }
        else
        {
            // 실패 시 로직을 구현해 주세요. (코드 33은 무시해도 됩니다.)
        }
    });

Notes

  • 33(PopupNotCreated)은 onDestroy 전용 코드이며 onFinished에는 절대 전달되지 않아요.
  • 콜백 오류코드 구성은 Stove_CouponPopup과 동일해요.

See Also


Stove_OpenExternalUrl

종류 함수 · 모듈 Base · 버전 3.5.0

Description

외부 브라우저로 URL을 열어요. Onstove 관련 도메인(예: *.onstove.com)을 열 때는 SSO 처리를 함께 수행해요.

Declaration

csharp
public static void Stove_OpenExternalUrl(string url, OnOpenExternalUrlCallback onFinished)

Parameters

NameTypeRequiredDescription
urlstringY열고자 하는 URL
onFinishedOnOpenExternalUrlCallbackY결과를 받을 콜백

Returns

없음

Callback

csharp
public delegate void OnOpenExternalUrlCallback(IStoveCallbackResult callbackResult);
NameTypeDescription
callbackResultIStoveCallbackResult호출 결과

이 콜백은 Stove_RunCallback()을 호출한 스레드에서 실행돼요. 1회성 콜백이에요.

Error Codes

CodeNameDescriptionShow to UserIn-Game Message
0k_EStoveCommonResultCode_Success성공(URL 오픈 성공)x
5k_EStoveCommonResultCode_InvalidParamonFinished가 null (콜백 등록 여부 확인)x
16k_EStoveCommonResultCode_BaseNotInitializedSDK가 초기화되지 않음 (Stove_Initialize() 호출 여부 확인)x
253k_EStoveCommonResultCode_UnmanagedException브라우저 실행에 실패했거나, 실행 중 알 수 없는 예외가 발생함 (URL 형식과 브라우저 설치 상태 확인)O일시적으로 문제가 발생했습니다. 다시 시도해 주세요. [확인]
254k_EStoveCommonResultCode_ManagedException래퍼에서 예외 발생 시 콜백으로 전달 (로그 확인)O일시적으로 문제가 발생했습니다. 다시 시도해 주세요. [확인]

전체 목록: EStoveCommonResultCode

Example

csharp
using static Stove.PCSDK.V3.Base;

Stove_OpenExternalUrl("https://www.onstove.com", (callbackResult) =>
{
    if (callbackResult.Result.IsSuccessful)
    {
        // 성공 시 로직을 구현해 주세요.
    }
    else
    {
        // 실패 시 로직을 구현해 주세요.
    }
});

Notes

  • Onstove 관련 도메인(*.onstove.com 등)을 열 때는 SSO 처리가 함께 수행돼요.

Stove_OverImmersionNotification

종류 함수 · 모듈 Base · 버전 3.5.0

Description

한국 과몰입 방지 규제 대상 사용자에게 매시간 알림을 콜백으로 전달해요. 한국 전용 API예요.

이 콜백은 1회성이 아니라 대상 사용자에게 매시간 반복해서 전달돼요.

Declaration

csharp
public static void Stove_OverImmersionNotification(OnOverImmersionNotificationCallback onFinished)

Parameters

NameTypeRequiredDescription
onFinishedOnOverImmersionNotificationCallbackN결과를 받을 콜백

Returns

없음

Callback

csharp
public delegate void OnOverImmersionNotificationCallback(IStoveCallbackResult callbackResult, IStoveOverImmersionInfo overImmersion);
NameTypeDescription
callbackResultIStoveCallbackResult호출 결과
overImmersionIStoveOverImmersionInfo과몰입 방지 알림 정보. 경고 메시지(Msg), 누적 게임 시간(ElapsedHours, 시간 단위), 메시지 노출 시간(ExposureTime, 초 단위)을 제공

이 콜백은 Stove_RunCallback()을 호출한 스레드에서 실행돼요. 대상 사용자에게 매시간 반복해서 전달돼요.

Error Codes

CodeNameDescriptionShow to UserIn-Game Message
0k_EStoveCommonResultCode_Success성공x
5k_EStoveCommonResultCode_InvalidParamonFinished가 null(콜백이 없어 실제로는 전달되지 않는 내부 값) (콜백 등록 여부 확인)x
16k_EStoveCommonResultCode_BaseNotInitializedSDK가 초기화되지 않음 (Stove_Initialize() 호출 여부 확인)x
31k_EStoveCommonResultCode_NotSupportedCountry로그인 사용자의 GDS 국가가 한국(kr)이 아님 (국가별 분기 처리)x
253k_EStoveCommonResultCode_UnmanagedExceptionSDK 내부에서 알 수 없는 예외 발생 (로그 확인)O일시적으로 문제가 발생했습니다. 다시 시도해 주세요. [확인]
254k_EStoveCommonResultCode_ManagedException래퍼에서 예외 발생 시 콜백으로 전달 (로그 확인)O일시적으로 문제가 발생했습니다. 다시 시도해 주세요. [확인]

전체 목록: EStoveCommonResultCode

Example

csharp
using static Stove.PCSDK.V3.Base;

Stove_OverImmersionNotification((callbackResult, overImmersion) =>
{
    if (callbackResult.Result.IsSuccessful)
    {
        // 성공 시 로직을 구현해 주세요.
        string msg = overImmersion.Msg;
        int exposureTime = overImmersion.ExposureTime;
    }
    else
    {
        // 실패 시 로직을 구현해 주세요.
    }
});

Notes

  • 한국 전용 API예요.
  • 대상 사용자에게 매시간 반복해서 전달되는 콜백이에요.

See Also


Stove_PCBangCheckStatus

종류 함수 · 모듈 PCBang · 버전 3.5.0

Description

사용자가 현재 이용 중인 PC방의 상태(프리미엄 여부, PSN, 제품 코드)를 조회해요. Stove_PCBangLogin과 별개로 언제든 호출할 수 있는 단발성 조회 API예요.

SDK 초기화 이후에 호출해야 해요.

Declaration

csharp
public static void Stove_PCBangCheckStatus(OnPCBangCheckStatusCallback onFinished)

Parameters

NameTypeRequiredDescription
onFinishedOnPCBangCheckStatusCallbackY조회 결과를 전달받을 콜백

Returns

없음

Callback

csharp
public delegate void OnPCBangCheckStatusCallback(IStoveCallbackResult callbackResult, IStovePCBangStatus status);
NameTypeDescription
callbackResultIStoveCallbackResult호출 결과
statusIStovePCBangStatus프리미엄 상태, PSN, 제품 코드를 담은 조회 결과

Stove_RunCallback()을 호출한 스레드에서 1회 실행돼요.

콜백은 Stove_RunCallback() 을 호출한 스레드에서 실행돼요. SDK 내부 스레드가 아니에요.

Error Codes

CodeNameDescriptionShow to UserIn-Game Message
0k_EStoveCommonResultCode_Success성공x
5k_EStoveCommonResultCode_InvalidParamonFinishednull (콜백 등록 여부 확인)x
17k_EStoveCommonResultCode_NotInitializedPC방 기능이 초기화되지 않음 (Stove_Initialize 선행 호출 확인)x
22k_EStoveCommonResultCode_HttpError요청 HTTP 상태 코드가 200이 아님 (네트워크 상태 확인 후 재시도)O네트워크 연결이 원활하지 않습니다. 네트워크 상태를 확인하고 다시 실행해 주세요. [확인]
23k_EStoveCommonResultCode_ResponseError응답에 code/message 필드가 없거나 서버가 비즈니스 오류(code != 0)를 반환 (ExternalError 확인 후 재시도)O네트워크 연결이 원활하지 않습니다. 네트워크 상태를 확인하고 다시 실행해 주세요. [확인]
25k_EStoveCommonResultCode_ResponseValueIsNull응답의 value/data가 JSON null (서버 응답 확인)O네트워크 연결이 원활하지 않습니다. 네트워크 상태를 확인하고 다시 실행해 주세요. [확인]
249k_EStoveCommonResultCode_NetworkTransportError네트워크 전송 계층 오류(WinHTTP 등) (네트워크 상태 확인 후 재시도)x
254k_EStoveCommonResultCode_ManagedException래퍼에서 예외 발생 시 콜백으로 전달 (예외 메시지 로깅 후 재시도)O일시적으로 문제가 발생했습니다. 다시 시도해 주세요. [확인]

실패 시 statusPremiumCheck은 오류 상태 값으로 무효처리되어 전달돼요.

전체 목록: EStoveCommonResultCode

Example

csharp
using static Stove.PCSDK.V3.PCBang;

PCBang.Stove_PCBangCheckStatus((callbackResult, status) =>
{
    if (callbackResult.Result.IsSuccessful)
    {
        // 성공 시 로직을 구현해 주세요.
    }
    else
    {
        // 실패 시 로직을 구현해 주세요.
    }
});

Notes

  • Stove_PCBangLogin을 호출하지 않은 상태에서도 호출할 수 있는 단발성 조회 API예요.

See Also


Stove_PCBangLogin

종류 함수 · 모듈 PCBang · 버전 3.5.0

Description

로그인한 게임 사용자를 PC방 서비스에 로그인시켜요. 성공하면 onUserLogin 콜백이 1회 호출되고, 이후 onRefreshBenefit 콜백이 4분 주기로 반복 호출되어 갱신된 혜택 정보를 전달해요.

SDK 초기화 이후에 호출해야 해요. 로그아웃(Stove_PCBangLogout)을 호출하기 전까지는 onRefreshBenefit 콜백이 계속 등록된 상태로 유지돼요.

onRefreshBenefit은 PC방 프리미엄 사용자뿐 아니라 무료(Free) 상태에서도 4분마다 반복 호출돼요. 갱신에 실패해도 반복 호출은 멈추지 않아요.

Declaration

csharp
public static void Stove_PCBangLogin(OnPCBangLoginCallback onUserLogin, OnRefreshPCBangBenefitCallback onRefreshBenefit)

Parameters

NameTypeRequiredDescription
onUserLoginOnPCBangLoginCallbackN최초 로그인 완료 결과를 1회 전달받을 콜백
onRefreshBenefitOnRefreshPCBangBenefitCallbackN로그인 성공 후 4분 주기로 갱신된 혜택 정보를 반복 전달받을 콜백

두 콜백 중 하나라도 null이면 로그인 요청만 보내고 어떤 콜백도 등록되지 않아요(결과를 전달받을 수 없음).

Returns

없음

Callback

csharp
public delegate void OnPCBangLoginCallback(IStoveCallbackResult callbackResult, IStovePCBangLoginOutcome loginOutcome);
public delegate void OnRefreshPCBangBenefitCallback(IStoveCallbackResult callbackResult, IStovePCBangBenefitInfo benefitInfo);
NameTypeDescription
callbackResultIStoveCallbackResult호출 결과
loginOutcomeIStovePCBangLoginOutcomeonUserLogin에 전달되는 로그인 결과(프리미엄 상태, PSN, 잔여 시간)
benefitInfoIStovePCBangBenefitInfoonRefreshBenefit에 전달되는 갱신된 혜택 정보(프리미엄 상태, 잔여 시간)

두 콜백 모두 Stove_RunCallback()을 호출한 스레드에서 실행돼요. onUserLogin은 최초 로그인 완료 시 1회만 호출되고, onRefreshBenefit은 로그인 성공 후 로그아웃 전까지 4분 주기로 반복 호출돼요.

Error Codes

CodeNameDescriptionShow to UserIn-Game MessageCallback
0k_EStoveCommonResultCode_Success성공x둘 다
5k_EStoveCommonResultCode_InvalidParamonFinishednull (콜백 등록 여부 확인)x둘 다
17k_EStoveCommonResultCode_NotInitializedPC방 기능이 초기화되지 않음 (Stove_Initialize 선행 호출 확인)x둘 다
22k_EStoveCommonResultCode_HttpError요청 HTTP 상태 코드가 200이 아님 (네트워크 상태 확인 후 재시도)O네트워크 연결이 원활하지 않습니다. 네트워크 상태를 확인하고 다시 실행해 주세요. [확인]둘 다
23k_EStoveCommonResultCode_ResponseError응답에 code/message 필드가 없거나 서버가 비즈니스 오류(code != 0)를 반환 (ExternalError 확인 후 재시도)O네트워크 연결이 원활하지 않습니다. 네트워크 상태를 확인하고 다시 실행해 주세요. [확인]둘 다
25k_EStoveCommonResultCode_ResponseValueIsNull응답의 value/data가 JSON null (서버 응답 확인)O네트워크 연결이 원활하지 않습니다. 네트워크 상태를 확인하고 다시 실행해 주세요. [확인]둘 다
26k_EStoveCommonResultCode_ResponseInvalidValueFormat복호화된 응답 문자열이 JSON 파싱에 실패 (재시도, 반복되면 문의)O네트워크 연결이 원활하지 않습니다. 네트워크 상태를 확인하고 다시 실행해 주세요. [확인]둘 다
249k_EStoveCommonResultCode_NetworkTransportError네트워크 전송 계층 오류(WinHTTP 등) (네트워크 상태 확인 후 재시도)x둘 다
254k_EStoveCommonResultCode_ManagedException래퍼에서 예외 발생 시 콜백으로 전달 (예외 메시지 로깅 후 재시도)O일시적으로 문제가 발생했습니다. 다시 시도해 주세요. [확인]둘 다

전체 목록: EStoveCommonResultCode

Example

csharp
using static Stove.PCSDK.V3.PCBang;

PCBang.Stove_PCBangLogin(
    (callbackResult, loginOutcome) =>
    {
        if (callbackResult.Result.IsSuccessful)
        {
            // 성공 시 로직을 구현해 주세요.
        }
        else
        {
            // 실패 시 로직을 구현해 주세요.
        }
    },
    (callbackResult, benefitInfo) =>
    {
        if (callbackResult.Result.IsSuccessful)
        {
            // 갱신된 혜택 정보 처리 로직을 구현해 주세요.
        }
        else
        {
            // 실패 시 로직을 구현해 주세요.
        }
    });

Notes

  • onRefreshBenefit은 로그인 성공 후 4분 주기로 반복 호출되며, PC방 프리미엄 상태뿐 아니라 무료(Free) 상태에서도 계속 호출돼요. 한 번 갱신에 실패해도 반복 호출 자체는 멈추지 않아요.
  • onUserLogin의 예외 콜백은 메서드 코드 k_EStovePCBangMethodCode_Login(3000)을, onRefreshBenefit의 예외 콜백은 k_EStovePCBangMethodCode_RefreshBenefit(3003)을 사용해요 — 두 콜백이 서로 다른 메서드 코드를 가진다는 점에 유의하세요.
  • 로그인 성공 시점부터 Stove_PCBangLogout을 호출하기 전까지 onRefreshBenefit 등록이 유지돼요.

See Also


Stove_PCBangLogout

종류 함수 · 모듈 PCBang · 버전 3.5.0

Description

Stove_PCBangLogin으로 로그인한 사용자를 PC방 서비스에서 로그아웃시켜요. 성공하면 Stove_PCBangLogin에서 시작된 혜택 갱신(onRefreshBenefit) 반복 호출이 중단돼요.

SDK 초기화 이후에 호출해야 해요.

Declaration

csharp
public static void Stove_PCBangLogout(OnPCBangLogoutCallback onFinished)

Parameters

NameTypeRequiredDescription
onFinishedOnPCBangLogoutCallbackY로그아웃 결과를 전달받을 콜백

Returns

없음

Callback

csharp
public delegate void OnPCBangLogoutCallback(IStoveCallbackResult callbackResult);
NameTypeDescription
callbackResultIStoveCallbackResult호출 결과

Stove_RunCallback()을 호출한 스레드에서 1회 실행돼요.

콜백은 Stove_RunCallback() 을 호출한 스레드에서 실행돼요. SDK 내부 스레드가 아니에요.

Error Codes

CodeNameDescriptionShow to UserIn-Game Message
0k_EStoveCommonResultCode_Success성공x
5k_EStoveCommonResultCode_InvalidParamonFinishednull (콜백 등록 여부 확인)x
17k_EStoveCommonResultCode_NotInitializedPC방 기능이 초기화되지 않음 (Stove_Initialize 선행 호출 확인)x
22k_EStoveCommonResultCode_HttpError요청 HTTP 상태 코드가 200이 아님 (네트워크 상태 확인 후 재시도)O네트워크 연결이 원활하지 않습니다. 네트워크 상태를 확인하고 다시 실행해 주세요. [확인]
23k_EStoveCommonResultCode_ResponseError응답에 code/message 필드가 없거나 서버가 비즈니스 오류(code != 0)를 반환 (ExternalError 확인 후 재시도)O네트워크 연결이 원활하지 않습니다. 네트워크 상태를 확인하고 다시 실행해 주세요. [확인]
25k_EStoveCommonResultCode_ResponseValueIsNull응답의 value/data가 JSON null (서버 응답 확인)O네트워크 연결이 원활하지 않습니다. 네트워크 상태를 확인하고 다시 실행해 주세요. [확인]
249k_EStoveCommonResultCode_NetworkTransportError네트워크 전송 계층 오류(WinHTTP 등) (네트워크 상태 확인 후 재시도)x
254k_EStoveCommonResultCode_ManagedException래퍼에서 예외 발생 시 콜백으로 전달 (예외 메시지 로깅 후 재시도)O일시적으로 문제가 발생했습니다. 다시 시도해 주세요. [확인]

로그아웃은 AES 복호화 단계를 거치지 않으므로 k_EStoveCommonResultCode_ResponseInvalidValueFormat(26)은 발생하지 않아요.

전체 목록: EStoveCommonResultCode

Example

csharp
using static Stove.PCSDK.V3.PCBang;

PCBang.Stove_PCBangLogout((callbackResult) =>
{
    if (callbackResult.Result.IsSuccessful)
    {
        // 성공 시 로직을 구현해 주세요.
    }
    else
    {
        // 실패 시 로직을 구현해 주세요.
    }
});

Notes

  • 로그아웃 성공 시 Stove_PCBangLogin에서 시작된 onRefreshBenefit 반복 호출이 중단돼요.
  • 게임 종료 시점에 별도로 로그아웃을 호출할 필요는 없지만, PC방 이용을 명시적으로 마치는 흐름(캐릭터 선택 화면 복귀 등)에서 호출하는 것을 권장해요.

See Also


Stove_RestartAppIfNecessary

종류 함수 · 모듈 Base · 버전 3.5.0

Description

이 API는 게임 실행 파일이 스토브 런처를 통해 실행되었는지 확인해요. 런처를 통하지 않았다면 SDK가 내부적으로 런처를 실행해 앱을 재시작시키고 현재 프로세스는 종료돼요.

이 API는 Stove_Initialize()보다 먼저 호출해야 해요. Stove_Initialize()는 이 API가 캐싱해 둔 environment/gameId/appKey 값을 재사용해요.

재시작이 필요한 경우 현재 프로세스가 종료되므로, 이 API 호출 이후의 코드가 실행되지 않을 수 있어요.

Declaration

csharp
public static void Stove_RestartAppIfNecessary(IStoveRestartAppIfNecessaryParam initParam, OnRestartAppIfNecessaryCallback onFinished)

Parameters

NameTypeRequiredDescription
initParamIStoveRestartAppIfNecessaryParamYEnvironment, GameId, AppKey, WaitTimeMilliSec, LaunchStoveLauncher, PlatformName을 담은 파라미터
onFinishedOnRestartAppIfNecessaryCallbackY결과를 받을 콜백

Returns

없음

Callback

csharp
public delegate void OnRestartAppIfNecessaryCallback(IStoveCallbackResult callbackResult, IStoveRestartAppIfNecessaryOutcome outcome);
NameTypeDescription
callbackResultIStoveCallbackResult호출 결과
outcomeIStoveRestartAppIfNecessaryOutcomeIsRestartRequired 프로퍼티로 재시작 필요 여부를 전달

이 콜백은 Stove_RunCallback()을 호출한 스레드에서 실행돼요. 1회성 콜백이며, 재시작이 필요 없어 그대로 진행할 수 있는 경우에도 결과가 전달돼요.

Error Codes

CodeNameDescriptionShow to UserIn-Game Message
0k_EStoveCommonResultCode_Success성공x
29k_EStoveCommonResultCode_AsyncOperationInProgress직전 비동기 재시작 스레드가 아직 실행 중 (이전 호출 완료 후 재시도)x
30k_EStoveCommonResultCode_BaseUninitialized대기 중 IPC 상태가 초기 상태로 돌아감 (재시도)x
253k_EStoveCommonResultCode_UnmanagedExceptionSDK 내부에서 알 수 없는 예외 발생 (로그 확인 후 재시도)O일시적으로 문제가 발생했습니다. 다시 시도해 주세요. [확인]
254k_EStoveCommonResultCode_ManagedException래퍼에서 예외 발생 시 콜백으로 전달 (로그 확인 후 재시도)O일시적으로 문제가 발생했습니다. 다시 시도해 주세요. [확인]
307k_EStoveResultCode_IpcConnectFailed런처와의 IPC 연결 실패 (런처 실행 상태 확인 후 재시도)O게임이 스토브 PC 클라이언트를 통해 실행되지 않아 종료됩니다.클라이언트에서 다시 게임을 실행해주세요.클라이언트 미설치 시 스토브 홈페이지에서 설치해주세요.[확인]
308k_EStoveResultCode_IpcAesKeyNotReceivedIPC로 AES 키를 수신하지 못함 (런처 실행 상태 확인 후 재시도)O게임이 스토브 PC 클라이언트를 통해 실행되지 않아 종료됩니다.클라이언트에서 다시 게임을 실행해주세요.클라이언트 미설치 시 스토브 홈페이지에서 설치해주세요.[확인]
309k_EStoveResultCode_IpcTimeout런처와의 통신이 WaitTimeMilliSec를 초과 (대기 시간을 늘려 재시도)O게임이 스토브 PC 클라이언트를 통해 실행되지 않아 종료됩니다.클라이언트에서 다시 게임을 실행해주세요.클라이언트 미설치 시 스토브 홈페이지에서 설치해주세요.[확인]

전체 목록: EStoveCommonResultCode, EStoveResultCode

아래 코드를 받으면 반드시 게임을 종료해야 해요. 정상 진행이 불가능한 상태예요.

  • 307 k_EStoveResultCode_IpcConnectFailed — 게임 종료 후 재실행이 필요해요
  • 308 k_EStoveResultCode_IpcAesKeyNotReceived — 게임 종료 후 재실행이 필요해요
  • 309 k_EStoveResultCode_IpcTimeout — 게임 종료 후 재실행이 필요해요

Example

csharp
using static Stove.PCSDK.V3.Base;

var initParam = new IStoveRestartAppIfNecessaryParam
{
    Environment = "real",
    GameId = "your_game_id",
    AppKey = "your_app_key",
    WaitTimeMilliSec = 10000,
    LaunchStoveLauncher = true,
    PlatformName = "Stove"
};

Stove_RestartAppIfNecessary(initParam, (callbackResult, outcome) =>
{
    if (callbackResult.Result.IsSuccessful)
    {
        if (outcome.IsRestartRequired)
        {
            // 런처를 통해 재시작이 진행 중이므로 별도 처리가 필요하지 않습니다.
        }
        else
        {
            // 이미 런처를 통해 실행 중이므로 Stove_Initialize()를 계속 진행해 주세요.
        }
    }
    else
    {
        // 실패 시 로직을 구현해 주세요.
    }
});

Notes

  • IStoveInitializeParam이 분리되면서 Environment/GameId/AppKey 필드가 이 API의 IStoveRestartAppIfNecessaryParam으로 옮겨졌어요. 신규 Stove_Initialize의 파라미터에는 이 필드들이 없어요.
  • Stove_Initialize() 호출 전에 반드시 이 API를 먼저 호출해야 해요.

See Also


Stove_RunCallback

종류 함수 · 모듈 Base · 버전 3.5.0

Description

비동기 API 호출의 결과(콜백)를 처리(dispatch)해요. 게임의 UI(메인) 스레드에서 호출해야 해요.

SDK가 등록해 둔 콜백들은 SDK 내부 스레드가 아니라, 이 함수를 호출한 스레드에서 실행돼요.

게임 루프(예: 매 프레임 또는 매 틱)에서 호출해야 해요. while(true) 형태로 이 함수만 반복 호출하는 방식으로 사용하지 않아요.

Declaration

csharp
public static void Stove_RunCallback()

Parameters

없음

Returns

없음

Error Codes

없음

Example

csharp
using static Stove.PCSDK.V3.Base;

// 게임 루프 예시
while (isGameRunning)
{
    // ... 게임 로직 ...

    Stove_RunCallback();

    // ... 렌더링 등 나머지 루프 로직 ...
}

Notes

  • 모든 비동기 API의 콜백은 이 함수를 호출한 스레드에서 실행돼요.
  • 게임 루프 안에서 주기적으로 호출해야 콜백이 지연 없이 처리돼요.
  • 대기 시간을 지정하려면 Stove_RunCallbackWithTimeout을 사용해요.

See Also


Stove_RunCallbackWithTimeout

종류 함수 · 모듈 Base · 버전 3.5.0

Description

Stove_RunCallback의 타임아웃 버전이에요. timeoutMillisec으로 대기 시간을 지정할 수 있어요.

게임의 UI(메인) 스레드에서 호출해야 하며, 등록된 콜백은 이 함수를 호출한 스레드에서 실행돼요.

Declaration

csharp
public static void Stove_RunCallbackWithTimeout(uint timeoutMillisec)

Parameters

NameTypeRequiredDescription
timeoutMillisecuintY대기 시간(밀리초)

Returns

없음

Error Codes

없음

Example

csharp
using static Stove.PCSDK.V3.Base;

// 게임 루프 예시 (최대 10ms 대기)
while (isGameRunning)
{
    // ... 게임 로직 ...

    Stove_RunCallbackWithTimeout(10);

    // ... 렌더링 등 나머지 루프 로직 ...
}

Notes

  • 모든 비동기 API의 콜백은 이 함수를 호출한 스레드에서 실행돼요.
  • 일반적인 사용에는 Stove_RunCallback을 사용하고, 대기 시간 제어가 필요할 때 이 함수를 사용해요.

See Also


Stove_SendLog

종류 함수 · 모듈 Log · 버전 3.5.0

Description

로그 항목을 로컬 데이터베이스에 기록한 뒤 Stove 로그 백엔드로 전송해요.

SDK 초기화 이후에 호출해야 해요.

onFinished 콜백의 성공(SUCCESS)은 로그가 로컬 SQLite DB에 기록되는 데 성공했다는 뜻이며, 서버로의 실제 전송 완료를 의미하지 않아요. 서버 전송은 별도의 내부 재전송 경로에서 비동기로 처리되며, 그 과정의 HTTP/네트워크 실패는 이 콜백으로 전달되지 않아요.

Declaration

csharp
public static void Stove_SendLog(IStoveSendLogParam logSendParam, OnSendLogCallback onFinished)

Parameters

NameTypeRequiredDescription
logSendParamIStoveSendLogParamY전송할 로그 항목의 내용
onFinishedOnSendLogCallbackY로컬 DB 기록 결과를 전달받을 콜백

Returns

없음

Callback

csharp
public delegate void OnSendLogCallback(IStoveCallbackResult callbackResult);
NameTypeDescription
callbackResultIStoveCallbackResult호출 결과(로컬 DB 기록 결과)

Stove_RunCallback()을 호출한 스레드에서 1회 실행돼요.

콜백은 Stove_RunCallback() 을 호출한 스레드에서 실행돼요. SDK 내부 스레드가 아니에요.

Error Codes

CodeNameDescriptionShow to UserIn-Game Message
0k_EStoveCommonResultCode_Success로컬 DB 기록 성공(서버 전송 완료를 의미하지 않음)x
5k_EStoveCommonResultCode_InvalidParamonFinishednull (콜백 등록 여부 확인)x
5k_EStoveCommonResultCode_InvalidParamlogSendParam.Contents가 비어있지 않은데 유효한 JSON 형식이 아님 (Contents 값의 JSON 형식 확인)x
17k_EStoveCommonResultCode_NotInitialized로그 기능이 초기화되지 않음 (Stove_Initialize 선행 호출 확인)x
44k_EStoveCommonResultCode_LocalDbWriteFailed로컬 DB에 로그 레코드 기록 실패 (디스크 공간/권한 확인)x
82k_EStoveCommonResultCode_PayloadSizeExceededUTF-8로 인코딩한 로그 콘텐츠가 50KB를 초과 (Contents 크기 축소)x
253k_EStoveCommonResultCode_UnmanagedException실행 중 알 수 없는 예외 발생 (예외 로깅 후 재시도)O일시적으로 문제가 발생했습니다. 다시 시도해 주세요. [확인]
254k_EStoveCommonResultCode_ManagedException래퍼에서 예외 발생 시 콜백으로 전달 (예외 메시지 로깅 후 재시도)O일시적으로 문제가 발생했습니다. 다시 시도해 주세요. [확인]

전체 목록: EStoveCommonResultCode

Example

csharp
using static Stove.PCSDK.V3.Log;

var logSendParam = new IStoveSendLogParam
{
    Auid = 123456789L,
    Cuid = 1L,
    LogGroupId = "login_flow",
    Contents = "{\"event\":\"login\"}",
};

Log.Stove_SendLog(logSendParam, (callbackResult) =>
{
    if (callbackResult.Result.IsSuccessful)
    {
        // 성공 시 로직을 구현해 주세요.
    }
    else
    {
        // 실패 시 로직을 구현해 주세요.
    }
});

Notes

  • 이 콜백은 로컬 DB 기록 시점의 결과만 전달해요. 서버 전송이 실제로 실패해도(HTTP 오류, 네트워크 오류 등) 게임 클라이언트에는 알려지지 않으며, 실패한 로그는 다음 전송 시도 때 재전송을 시도하는 구조예요.
  • 문자열 필드는 대부분 선택 항목이에요. 값을 설정하지 않은 필드는 null로 두면 되며, null과 빈 문자열("")은 서버에 서로 다른 값으로 전달되므로 혼용하지 않아야 해요.
  • 디바이스 정보, GDS 정보, 세션 ID, 타임스탬프, 게임 ID·환경 등은 SDK 가 자동으로 채워 전송해요. 게임 측에서는 IStoveSendLogParam 에 노출된 필드만 채우면 돼요.
  • 로컬 DB 기록 실패(k_EStoveCommonResultCode_LocalDbWriteFailed 등)를 제외하면 이 콜백은 사실상 항상 성공을 돌려줘요. 게임 로직을 이 콜백의 결과로 분기하도록 설계하지 않는 것을 권장해요.

See Also

  • 없음

Stove_SetGameProfile

종류 함수 · 모듈 Base · 버전 3.5.0

Description

게임 프로필 정보를 설정해요.

Declaration

csharp
public static IStoveResult Stove_SetGameProfile(IStoveSetGameProfileParam gameProfile)

Parameters

NameTypeRequiredDescription
gameProfileIStoveSetGameProfileParamY게임 프로필 정보(WorldId, CharacterNo)

Returns

TypeDescription
IStoveResult호출 결과. result.IsSuccessful로 성공 여부를 확인

Error Codes

CodeNameDescriptionShow to UserIn-Game Message
0k_EStoveCommonResultCode_Success성공x
5k_EStoveCommonResultCode_InvalidParamgameProfileParams가 null(표면 레벨 검증) (파라미터 확인)x
16k_EStoveCommonResultCode_BaseNotInitializedSDK가 초기화되지 않음 (Stove_Initialize() 호출 여부 확인)x
253k_EStoveCommonResultCode_UnmanagedExceptionSDK 내부에서 알 수 없는 예외 발생 (로그 확인 후 재시도)O일시적으로 문제가 발생했습니다. 다시 시도해 주세요. [확인]
254k_EStoveCommonResultCode_ManagedException래퍼에서 예외 발생 시 반환값으로 전달 (로그 확인 후 재시도)O일시적으로 문제가 발생했습니다. 다시 시도해 주세요. [확인]

전체 목록: EStoveCommonResultCode

Example

csharp
using static Stove.PCSDK.V3.Base;

var gameProfile = new IStoveSetGameProfileParam
{
    WorldId = "world_01",
    CharacterNo = 12345
};

IStoveResult result = Stove_SetGameProfile(gameProfile);
if (result.IsSuccessful)
{
    // 성공 시 로직을 구현해 주세요.
}
else
{
    // 실패 시 로직을 구현해 주세요.
}

Notes

  • gameProfile.CharacterNo는 캐릭터 번호를 나타내요. 예전 StoveGameProfileParams의 "worldId Length"라는 필드명은 문서상의 오기였어요.

Stove_SetLanguage

종류 함수 · 모듈 Base · 버전 3.5.0 · 폐기 예정

Description

이 API는 사용이 중단(Deprecated)되었어요. 대신 Stove_SetLanguageEx를 사용해야 해요.

PCSDK가 사용할 언어를 EStoveLocale 열거값으로 설정해요. 신규 flat C 인터페이스는 열거값 기반 언어 설정 API를 더 이상 제공하지 않으므로, 이 함수는 내부적으로 열거값을 문자열로 변환한 뒤 Stove_SetLanguageEx가 사용하는 것과 동일한 네이티브 API에 위임해요.

Declaration

csharp
[Obsolete("Use Stove_SetLanguageEx(string language) instead.")]
public static IStoveResult Stove_SetLanguage(EStoveLocale language)

Parameters

NameTypeRequiredDescription
languageEStoveLocaleY설정할 언어. 내부적으로 문자열로 변환되어 네이티브 API에 전달됨

Returns

TypeDescription
IStoveResult호출 결과. result.IsSuccessful로 성공 여부를 확인

Error Codes

CodeNameDescriptionShow to UserIn-Game Message
0k_EStoveCommonResultCode_Success성공x
5k_EStoveCommonResultCode_InvalidParam지원하지 않는 언어로 판정됨 (지원 언어 목록 확인)x
16k_EStoveCommonResultCode_BaseNotInitializedSDK가 초기화되지 않음 (Stove_Initialize() 호출 여부 확인)x
253k_EStoveCommonResultCode_UnmanagedExceptionSDK 내부에서 알 수 없는 예외 발생 (로그 확인 후 재시도)O일시적으로 문제가 발생했습니다. 다시 시도해 주세요. [확인]
254k_EStoveCommonResultCode_ManagedException래퍼에서 예외 발생 시 반환값으로 전달 (로그 확인 후 재시도)O일시적으로 문제가 발생했습니다. 다시 시도해 주세요. [확인]

전체 목록: EStoveCommonResultCode

Example

csharp
using static Stove.PCSDK.V3.Base;

IStoveResult result = Stove_SetLanguage(EStoveLocale.k_EStoveLocale_Ko);
if (result.IsSuccessful)
{
    // 성공 시 로직을 구현해 주세요.
}
else
{
    // 실패 시 로직을 구현해 주세요.
}

Notes

  • 사용이 중단(Deprecated)된 API예요. 신규 코드에서는 Stove_SetLanguageEx를 사용해야 해요.
  • 이 함수는 동기 함수이며 콜백을 받지 않아요.

See Also


Stove_SetLanguageEx

종류 함수 · 모듈 Base · 버전 3.5.0

Description

PCSDK가 사용할 언어를 문자열로 설정해요. 열거값 기반의 Stove_SetLanguage는 사용이 중단(Deprecated)되었으므로, 언어 설정에는 이 함수를 사용해야 해요.

Declaration

csharp
public static IStoveResult Stove_SetLanguageEx(string language)

Parameters

NameTypeRequiredDescription
languagestringY언어 정보 문자열

Returns

TypeDescription
IStoveResult호출 결과. result.IsSuccessful로 성공 여부를 확인

Error Codes

CodeNameDescriptionShow to UserIn-Game Message
0k_EStoveCommonResultCode_Success성공x
5k_EStoveCommonResultCode_InvalidParam지원하지 않는 언어 문자열로 판정됨 (지원 언어 목록 확인)x
16k_EStoveCommonResultCode_BaseNotInitializedSDK가 초기화되지 않음 (Stove_Initialize() 호출 여부 확인)x
253k_EStoveCommonResultCode_UnmanagedExceptionSDK 내부에서 알 수 없는 예외 발생 (로그 확인 후 재시도)O일시적으로 문제가 발생했습니다. 다시 시도해 주세요. [확인]
254k_EStoveCommonResultCode_ManagedException래퍼에서 예외 발생 시 반환값으로 전달 (로그 확인 후 재시도)O일시적으로 문제가 발생했습니다. 다시 시도해 주세요. [확인]

전체 목록: EStoveCommonResultCode

Example

csharp
using static Stove.PCSDK.V3.Base;

IStoveResult result = Stove_SetLanguageEx("ko");
if (result.IsSuccessful)
{
    // 성공 시 로직을 구현해 주세요.
}
else
{
    // 실패 시 로직을 구현해 주세요.
}

Notes

  • 이 함수는 동기 함수이며 콜백을 받지 않아요.
  • 열거값 기반의 Stove_SetLanguage를 대체하는 함수예요.

See Also


Stove_SetPopupDisallowed

종류 함수 · 모듈 View · 버전 3.5.0

Description

Stove_SetPopupDisalloweddisallowedParam.PopupId로 지정한 팝업을, disallowedParam.Days로 지정한 일수 동안 다시 표시되지 않도록 로컬에 기록해요.

SDK 초기화(Stove_Initialize) 이후에 호출해야 해요.

Declaration

csharp
public static void Stove_SetPopupDisallowed(IStoveSetPopupDisallowedParam disallowedParam, OnSetPopupDisallowedCallback onFinished);

Parameters

NameTypeRequiredDescription
disallowedParamIStoveSetPopupDisallowedParamY억제할 팝업 식별자(PopupId)와 억제 기간(Days, 일 단위)을 담은 파라미터예요.
onFinishedOnSetPopupDisallowedCallbackY처리 결과를 전달받는 콜백이에요.

Returns

없음 (void 함수)

Callback

csharp
public delegate void OnSetPopupDisallowedCallback(IStoveCallbackResult callbackResult);
NameTypeDescription
callbackResultIStoveCallbackResult호출 결과예요. callbackResult.Result.IsSuccessful로 성공 여부를 확인해요.

onFinished는 1회 호출돼요. Stove_RunCallback()을 호출한 스레드에서 실행돼요.

Error Codes

CodeNameDescriptionShow to UserIn-Game Message
0k_EStoveCommonResultCode_Success로컬 설정 파일에 억제 정보 기록 성공x
1k_EStoveCommonResultCode_Fail로컬 설정 파일 쓰기 실패 (재시도 또는 로그 확인)x
17k_EStoveCommonResultCode_NotInitialized팝업 기능이 초기화되지 않음 (Stove_Initialize 선행 호출 확인)x
254k_EStoveCommonResultCode_ManagedException래퍼에서 예외 발생 시 콜백으로 전달 (callbackResult.Result.ExceptionMessage 로그 확인)O일시적으로 문제가 발생했습니다. 다시 시도해 주세요. [확인]

전체 목록: EStoveCommonResultCode

Example

csharp
using static Stove.PCSDK.V3.View;

var disallowedParam = new IStoveSetPopupDisallowedParam
{
    PopupId = 12345,
    Days = 7
};

Stove_SetPopupDisallowed(disallowedParam, (callbackResult) =>
{
    if (callbackResult.Result.IsSuccessful)
    {
        // 성공 시 로직을 구현해 주세요.
    }
    else
    {
        // 실패 시 로직을 구현해 주세요.
    }
});

Notes

  • 이 함수는 화면에 표시된 팝업을 즉시 닫는 API가 아니라, 이후 지정한 기간 동안 해당 팝업이 다시 표시되지 않도록 억제하는 API예요.
  • 억제 정보는 로컬 파일(popupConfig.json)에 기록되며, 이후 Stove_AutoPopup 등이 팝업 목록을 필터링할 때 참조해요.
  • 이 API는 onDestroy 콜백이 없는 단일 콜백 구조예요.

See Also


Stove_ShutdownNotification

종류 함수 · 모듈 Base · 버전 3.5.0

Description

셧다운 적용 대상 사용자에게 셧다운 알림을 콜백으로 전달해요.

이 API는 한국 전용이 아니에요. 셧다운 정책이 적용된 계정이라면 해외 사용자에게도 동작해요.

Declaration

csharp
public static void Stove_ShutdownNotification(OnShutdownNotificationCallback onFinished)

Parameters

NameTypeRequiredDescription
onFinishedOnShutdownNotificationCallbackN결과를 받을 콜백

Returns

없음

Callback

csharp
public delegate void OnShutdownNotificationCallback(IStoveCallbackResult callbackResult, IStoveShutdownInfo shutdown);
NameTypeDescription
callbackResultIStoveCallbackResult호출 결과
shutdownIStoveShutdownInfo셧다운 알림 정보. 알림 메시지(Msg), 메시지 노출 시간(ExposureTime, 초 단위), 셧다운까지 남은 시간(InadvanceMinutes, 분 단위)을 제공

이 콜백은 Stove_RunCallback()을 호출한 스레드에서 실행돼요.

Error Codes

CodeNameDescriptionShow to UserIn-Game Message
0k_EStoveCommonResultCode_Success성공x
5k_EStoveCommonResultCode_InvalidParamonFinished가 null(콜백이 없어 실제로는 전달되지 않는 내부 값) (콜백 등록 여부 확인)x
16k_EStoveCommonResultCode_BaseNotInitializedSDK가 초기화되지 않음 (Stove_Initialize() 호출 여부 확인)x
253k_EStoveCommonResultCode_UnmanagedExceptionSDK 내부에서 알 수 없는 예외 발생 (로그 확인)O일시적으로 문제가 발생했습니다. 다시 시도해 주세요. [확인]
254k_EStoveCommonResultCode_ManagedException래퍼에서 예외 발생 시 콜백으로 전달 (로그 확인)O일시적으로 문제가 발생했습니다. 다시 시도해 주세요. [확인]

전체 목록: EStoveCommonResultCode

Example

csharp
using static Stove.PCSDK.V3.Base;

Stove_ShutdownNotification((callbackResult, shutdown) =>
{
    if (callbackResult.Result.IsSuccessful)
    {
        // 성공 시 로직을 구현해 주세요.
        string msg = shutdown.Msg;
        int inadvanceMinutes = shutdown.InadvanceMinutes;
    }
    else
    {
        // 실패 시 로직을 구현해 주세요.
    }
});

Notes

  • 한국 전용 API가 아니에요. 셧다운 정책이 적용된 계정이면 해외에서도 동작해요.
  • 이 콜백은 1회성이 아니에요. 한 번 등록해 두면, 서버가 내려준 사전 안내 시점(예: 셧다운 30분 전, 10분 전 등)마다 그리고 실제 셧다운 시각이 되었을 때 각각 한 번씩, 서버가 지정한 안내 횟수만큼 반복 호출돼요.

See Also


Stove_StartPurchase

종류 함수 · 모듈 IAP · 버전 3.5.0

Description

startPurchaseParam.Products로 전달한 주문 상품 목록에 대해 구매 절차를 시작해요. 진행 방식은 startPurchaseParam.PurchaseParam.Operation(EStovePurchaseOperation) 값에 따라 달라져요.

  • k_EStovePurchaseOperation_Default: Stove Webview를 사용하지 않아요. onFinished로 전달되는 IStoveStartPurchaseOutcome.TempPaymentUrl을 이용해 호출자가 직접 결제 페이지를 열어야 하며, 결제 후에는 Stove_ConfirmPurchase를 호출해 구매를 확정해야 해요.
  • k_EStovePurchaseOperation_WithWebView: Stove 결제 페이지를 Stove Webview 안에서 열어요. 이 경우에도 결제가 끝나면 호출자가 Stove_ConfirmPurchase를 호출해 구매를 확정해야 해요.
  • k_EStovePurchaseOperation_WithWebViewAndConfirmResult: Stove 결제 페이지를 Stove Webview 안에서 열고, 결제 성공 시 SDK가 자동으로 Stove_ConfirmPurchase를 호출하여 확정된 구매 결과(IsPurchased, PurchasedProducts, ChargeInfos)를 onFinished로 돌려줘요. 이 경우 호출자가 별도로 Stove_ConfirmPurchase를 호출할 필요가 없어요.

SDK 초기화(Stove_Initialize) 이후에 호출해야 해요.

Declaration

csharp
public static void Stove_StartPurchase(IStoveStartPurchaseParam startPurchaseParam, OnStartPurchaseCallback onFinished, OnIAPPopupDestroyCallback onDestroy)

Parameters

NameTypeRequiredDescription
startPurchaseParamIStoveStartPurchaseParamY주문 상품 목록과 구매 동작 파라미터
onFinishedOnStartPurchaseCallbackY구매 결과를 받을 콜백
onDestroyOnIAPPopupDestroyCallbackN이 호출로 생성된 팝업이 모두 닫혔을 때 전달되는 콜백

Returns

없음

Callback

csharp
public delegate void OnStartPurchaseCallback(IStoveCallbackResult callbackResult, IStoveStartPurchaseOutcome outcome);
public delegate void OnIAPPopupDestroyCallback(IStoveCallbackResult callbackResult);
NameTypeDescription
callbackResultIStoveCallbackResult호출 결과
outcomeIStoveStartPurchaseOutcome구매 결과. 어떤 필드가 채워지는지는 Operation 값에 따라 달라요(개요 참고)

Stove_RunCallback()을 호출한 스레드에서 실행돼요.

  • onFinished는 호출 1건당 1회만 전달돼요.
  • onDestroy는 이 호출로 생성된 팝업이 모두 닫힌 뒤 전달돼요. 웹뷰가 한 번도 생성되지 않고 종료된 경우에도 PopupNotCreated(33)와 함께 1회 전달돼요.

Error Codes

CallbackCodeNameDescriptionShow to UserIn-Game Message
onFinished0k_EStoveCommonResultCode_Success성공x
onFinished17k_EStoveCommonResultCode_NotInitialized결제 기능이 초기화되지 않음 (Stove_Initialize 선행 호출)x
onFinished5k_EStoveCommonResultCode_InvalidParamonFinishednull이면 내부적으로 설정되지만 콜백이 없어 실제로 전달되지 않음 (참고용, 별도 처리 불필요)x
onFinished80k_EStoveCommonResultCode_ParameterLengthExceededServiceTxnNo가 50자 초과, 또는 ExtraData가 500자 초과 (길이 제한에 맞게 값 조정)O결제 정보가 유효하지 않아 결제를 진행할 수 없습니다. 다시 시도해 주세요. [확인]
onFinished81k_EStoveCommonResultCode_InvalidJsonStringExtraData가 비어있지 않은데 유효한 JSON이 아님 (ExtraData 형식 확인)O결제 정보가 유효하지 않아 결제를 진행할 수 없습니다. 다시 시도해 주세요. [확인]
onFinished503k_EStoveResultCode_InvalidOrderProductInformation주문 상품 중 Quantity <= 0 또는 SalePrice < 0인 항목 존재 (주문 상품 값 확인)O결제 정보가 유효하지 않아 결제를 진행할 수 없습니다. 다시 시도해 주세요. [확인]
onFinished252k_EStoveCommonResultCode_NotImplementedPurchaseParam.Operation 값이 알 수 없는 값 (EStovePurchaseOperation 값 중 하나로 지정)x
onFinished60k_EStoveCommonResultCode_ViewUiNotInitialized웹뷰 결제창을 열어야 하는데 View UI가 초기화되지 않음 (SDK 팀 문의)x
onFinished65k_EStoveCommonResultCode_WebviewCloseAllFail새 결제 웹뷰를 열기 전 기존 웹뷰 정리 실패 (재시도)x
onFinished62k_EStoveCommonResultCode_WebviewCreateFail결제 웹뷰 생성 실패 (재시도)x
onFinished63k_EStoveCommonResultCode_WebviewLoadUrlFail결제 웹뷰의 URL 로드 실패 (재시도)x
onFinished34k_EStoveCommonResultCode_WebviewClosedBeforeCompleteWithWebViewAndConfirmResult 동선에서 결제 완료 통지 수신 전 웹뷰가 닫힘 (사용자에게 재구매 안내)O구매가 정상적으로 완료되지 않았습니다. 다시 시도해 주세요. [확인]
onFinished254k_EStoveCommonResultCode_ManagedException래퍼에서 예외 발생 시 콜백으로 전달 (ExceptionMessage 로깅)O일시적으로 문제가 발생했습니다. 다시 시도해 주세요. [확인]
onFinished253k_EStoveCommonResultCode_UnmanagedException알 수 없는 예외 발생 (로그 확인 후 SDK 팀 문의)O일시적으로 문제가 발생했습니다. 다시 시도해 주세요. [확인]
onDestroy33k_EStoveCommonResultCode_PopupNotCreated웹뷰가 한 번도 생성되지 않고 종료된 모든 조기 실패 경로에서 1회 전달 (무시해도 됨)x
onDestroy66k_EStoveCommonResultCode_WebviewCloseFail웹뷰 정상 종료 시 내부 close 처리 실패 (참고용 로깅)x

전체 목록: EStoveCommonResultCode, EStoveResultCode

Example

csharp
using static Stove.PCSDK.V3.IAP;

var startPurchaseParam = new IStoveStartPurchaseParam
{
    Products = new[]
    {
        new IStoveOrderProductParam { ProductId = productId, SalePrice = salePrice, Quantity = 1 }
    },
    PurchaseParam = new IStovePurchaseParam
    {
        Operation = EStovePurchaseOperation.k_EStovePurchaseOperation_Default
    }
};

Stove_StartPurchase(startPurchaseParam,
    (callbackResult, outcome) =>
    {
        if (callbackResult.Result.IsSuccessful)
        {
            // 성공 시 로직을 구현해 주세요.
            // Operation == Default 인 경우 outcome.TempPaymentUrl 로 결제 페이지를 열고,
            // 결제 완료 후 Stove_ConfirmPurchase() 를 호출해 구매를 확정해야 합니다.
            long txnMasterNo = outcome.TxnMasterNo;
        }
        else
        {
            // 실패 시 로직을 구현해 주세요.
        }
    },
    (callbackResult) =>
    {
        // 구매 과정에서 열린 팝업이 모두 닫혔을 때 로직을 구현해 주세요.
    });

Notes

  • 이 함수는 비동기 함수이며 결과는 onFinished 콜백으로만 전달돼요.
  • OperationDefault 또는 WithWebView로 시작한 구매는 반드시 Stove_ConfirmPurchase를 호출해 확정해야 해요. WithWebViewAndConfirmResult는 SDK가 자동으로 확정을 처리해요.
  • outcome.PurchaseProgress(EStovePurchaseProgress) 값으로 결제창을 직접 띄워야 하는지 판단할 수 있어요.
  • onDestroyPopupNotCreated(33)는 신규 C# 표면에서 필터링 없이 그대로 전달돼요(구 인터페이스는 이 값을 삼키고 onDestroy를 호출하지 않아요). 33을 받으면 별도 처리 없이 무시해도 돼요.
  • IStoveStartPurchaseOutcome은 구 인터페이스의 PurchaseResult 계열 타입에서 이름이 바뀌었어요.

See Also


Stove_Uninitialize

종류 함수 · 모듈 Base · 버전 3.5.0

Description

SDK를 종료해요. 게임을 끝낼 때 Stove_Initialize()와 짝을 이루어 호출해야 해요.

Declaration

csharp
public static IStoveResult Stove_Uninitialize()

Parameters

없음

Returns

TypeDescription
IStoveResult호출 결과. result.IsSuccessful로 성공 여부를 확인

Error Codes

CodeNameDescriptionShow to UserIn-Game Message
0k_EStoveCommonResultCode_Success성공x
16k_EStoveCommonResultCode_BaseNotInitialized초기화되지 않은 상태에서 호출됨(이 경우에도 이후 정리 루틴은 계속 진행됨) (Stove_Initialize() 호출 여부 확인)x
253k_EStoveCommonResultCode_UnmanagedExceptionSDK 내부에서 알 수 없는 예외 발생 (로그 확인)O일시적으로 문제가 발생했습니다. 다시 시도해 주세요. [확인]
254k_EStoveCommonResultCode_ManagedException래퍼에서 예외 발생 시 반환값으로 전달 (로그 확인)O일시적으로 문제가 발생했습니다. 다시 시도해 주세요. [확인]

전체 목록: EStoveCommonResultCode

Example

csharp
using static Stove.PCSDK.V3.Base;

IStoveResult result = Stove_Uninitialize();
if (result.IsSuccessful)
{
    // 성공 시 로직을 구현해 주세요.
}
else
{
    // 실패 시 로직을 구현해 주세요.
}

Notes

  • 종료가 진행되는 동안 대기 중이던 콜백 큐는 폐기 모드로 drain되어, 대기 중이던 사용자 delegate는 호출되지 않아요.
  • API 이름은 Stove_Uninitialize이며, Stove_UnInitialize(대문자 I)가 아니에요.

See Also


Stove_VerifyIdentificationPopup

종류 함수 · 모듈 View · 버전 3.5.0

Description

Stove_VerifyIdentificationPopup은 본인인증 팝업을 웹뷰로 표시해요. popupParam.CompareIdentifier가 true이면 인증된 식별자를 로그인한 사용자와 비교해요.

SDK 초기화(Stove_Initialize) 이후에 호출해야 해요.

한국(kr) 이외의 GDS 국가에서 호출하면 k_EStoveCommonResultCode_NotSupportedCountry(31)로 실패해요. 웹뷰가 생성되지 않으므로 onDestroy에도 k_EStoveCommonResultCode_PopupNotCreated(33)가 함께 전달돼요.

Declaration

csharp
public static void Stove_VerifyIdentificationPopup(IStoveVerifyIdentificationPopupParam popupParam, OnViewPopupCallback onFinished, OnVerifyIdentificationPopupDestroyCallback onDestroy);

Parameters

NameTypeRequiredDescription
popupParamIStoveVerifyIdentificationPopupParamY웹뷰 표시 모드(WebViewMode)와 인증된 식별자를 로그인 사용자와 비교할지 여부(CompareIdentifier)를 담은 파라미터예요.
onFinishedOnViewPopupCallbackY팝업 표시가 완료되었을 때 호출되는 콜백이에요.
onDestroyOnVerifyIdentificationPopupDestroyCallbackN팝업 웹뷰가 완전히 파괴되었을 때 호출되는 콜백이에요. 발급된 SIM 키를 함께 전달해요.

Returns

없음 (void 함수)

Callback

csharp
public delegate void OnViewPopupCallback(IStoveCallbackResult callbackResult);
public delegate void OnVerifyIdentificationPopupDestroyCallback(IStoveCallbackResult callbackResult, IStoveVerifyIdentificationPopupDestroyInfo info);
NameTypeDescription
callbackResultIStoveCallbackResult호출 결과예요. callbackResult.Result.IsSuccessful로 성공 여부를 확인해요.
infoIStoveVerifyIdentificationPopupDestroyInfoinfo.SimKey에 인증 성공 시 발급된 SIM 키가 담겨요. 인증 실패 시 빈 문자열("")이에요.

onFinished는 팝업 표시가 확정된 시점에 1회 호출돼요. onDestroy는 웹뷰가 화면에서 완전히 사라진 시점에 1회 호출돼요. 두 콜백 모두 Stove_RunCallback()을 호출한 스레드에서 실행돼요.

Error Codes

onFinished

CodeNameDescriptionShow to UserIn-Game Message
0k_EStoveCommonResultCode_Success성공x
17k_EStoveCommonResultCode_NotInitialized팝업 기능이 초기화되지 않음 (Stove_Initialize 선행 호출 확인)x
31k_EStoveCommonResultCode_NotSupportedCountry로그인한 사용자의 GDS 국가가 한국(kr)이 아님 (한국 외 국가에서는 이 API를 호출하지 않도록 처리)x
60k_EStoveCommonResultCode_ViewUiNotInitialized팝업 UI 서브시스템이 초기화되지 않음(정상 흐름에서는 발생하지 않는 방어적 코드) (재현되면 SDK 지원팀 문의)x
65k_EStoveCommonResultCode_WebviewCloseAllFail팝업 생성 전 기존 웹뷰 일괄 닫기 실패 (로그 확인)x
62k_EStoveCommonResultCode_WebviewCreateFail웹뷰 생성 실패 (재시도 또는 로그 확인)x
63k_EStoveCommonResultCode_WebviewLoadUrlFail웹뷰 URL 로드 실패 (네트워크 상태 확인 후 재시도)x
67k_EStoveCommonResultCode_NoPopupData서버 조회 결과 표시할 팝업이 0건 (정상 종료로 처리)O팝업 설정 정보가 존재하지 않아 표시할 창이 없습니다. [확인]
254k_EStoveCommonResultCode_ManagedException래퍼에서 예외 발생 시 콜백으로 전달 (callbackResult.Result.ExceptionMessage 로그 확인)O일시적으로 문제가 발생했습니다. 다시 시도해 주세요. [확인]

onDestroy

CodeNameDescriptionShow to UserIn-Game Message
0k_EStoveCommonResultCode_Success웹뷰 정상 종료x
66k_EStoveCommonResultCode_WebviewCloseFail웹뷰 닫기 실패 (로그 확인)x
33k_EStoveCommonResultCode_PopupNotCreated웹뷰가 생성되지 않고 조기 종료됨(국가 제한 포함, 내부 정리 신호). 이 경우 info.SimKey는 빈 문자열이에요. (별도 처리 불필요)x
254k_EStoveCommonResultCode_ManagedException래퍼에서 예외 발생 시 콜백으로 전달 (callbackResult.Result.ExceptionMessage 로그 확인)O일시적으로 문제가 발생했습니다. 다시 시도해 주세요. [확인]

전체 목록: EStoveCommonResultCode

Example

csharp
using static Stove.PCSDK.V3.View;

var popupParam = new IStoveVerifyIdentificationPopupParam
{
    WebViewMode = EStoveWebViewMode.k_EStoveWebViewMode_Internal,
    CompareIdentifier = true
};

Stove_VerifyIdentificationPopup(popupParam,
    onFinished: (callbackResult) =>
    {
        if (callbackResult.Result.IsSuccessful)
        {
            // 성공 시 로직을 구현해 주세요.
        }
        else
        {
            // 실패 시 로직을 구현해 주세요.
        }
    },
    onDestroy: (callbackResult, info) =>
    {
        if (callbackResult.Result.IsSuccessful)
        {
            // info.SimKey를 필요한 곳에 사용해 주세요.
        }
        else
        {
            // 실패 시 로직을 구현해 주세요. (코드 33은 무시해도 됩니다.)
        }
    });

Notes

  • 이 API는 한국 전용이에요. 로그인한 사용자의 GDS 국가가 한국이 아니면 항상 NotSupportedCountry(31)로 실패해요.
  • 33(PopupNotCreated)은 onDestroy 전용 코드이며 onFinished에는 절대 전달되지 않아요.
  • 다른 팝업 API들과 달리 onDestroy 콜백 타입이 OnVerifyIdentificationPopupDestroyCallback으로, IStoveVerifyIdentificationPopupDestroyInfo 인자를 추가로 전달해요.

See Also


Stove_VietnamAgeRatingNotification

종류 함수 · 모듈 Base · 버전 3.5.0

Description

베트남 연령 등급 안내 정보를 콜백으로 전달해요. 베트남 전용 API예요.

1회성 콜백이에요. 렌더링이 가능한 시점 이후에 호출해야 해요.

Declaration

csharp
public static void Stove_VietnamAgeRatingNotification(OnVietnamAgeRatingNotificationCallback onFinished)

Parameters

NameTypeRequiredDescription
onFinishedOnVietnamAgeRatingNotificationCallbackN결과를 받을 콜백

Returns

없음

Callback

csharp
public delegate void OnVietnamAgeRatingNotificationCallback(IStoveCallbackResult callbackResult, IStoveVietnamAgeRatingInfo ageRatingInfo);
NameTypeDescription
callbackResultIStoveCallbackResult호출 결과
ageRatingInfoIStoveVietnamAgeRatingInfo연령 등급 오버레이 정보. 오버레이 표시 상태(OverlayMode), 오버레이 색상 종류(OverlayType, 0=black·1=white), 오버레이 크기(OverlayScale, 0.0 ~ 1.0), 오버레이 투명도(OverlayOpacity, 0.0 ~ 1.0), 게임 등급(AgeRating, 0=전체이용가·12=12세·16=16세·18=18세), 안내 메시지(Msg), 표시 위치 X · Y(DisplayPositionX / DisplayPositionY, 화면 좌상단 기준 0.0 ~ 1.0), 폰트 선택용 언어 코드(Language)를 제공

이 콜백은 Stove_RunCallback()을 호출한 스레드에서 실행돼요. 1회성 콜백이며, 렌더링이 가능한 시점 이후에 호출해야 해요.

Error Codes

CodeNameDescriptionShow to UserIn-Game Message
0k_EStoveCommonResultCode_Success성공x
5k_EStoveCommonResultCode_InvalidParamonFinished가 null(콜백이 없어 실제로는 전달되지 않는 내부 값) (콜백 등록 여부 확인)x
16k_EStoveCommonResultCode_BaseNotInitializedSDK가 초기화되지 않음 (Stove_Initialize() 호출 여부 확인)x
31k_EStoveCommonResultCode_NotSupportedCountry로그인 사용자의 GDS 국가가 베트남(vn)이 아님 (국가별 분기 처리)x
253k_EStoveCommonResultCode_UnmanagedExceptionSDK 내부에서 알 수 없는 예외 발생 (로그 확인)O일시적으로 문제가 발생했습니다. 다시 시도해 주세요. [확인]
254k_EStoveCommonResultCode_ManagedException래퍼에서 예외 발생 시 콜백으로 전달 (로그 확인)O일시적으로 문제가 발생했습니다. 다시 시도해 주세요. [확인]

전체 목록: EStoveCommonResultCode

Example

csharp
using static Stove.PCSDK.V3.Base;

Stove_VietnamAgeRatingNotification((callbackResult, ageRatingInfo) =>
{
    if (callbackResult.Result.IsSuccessful)
    {
        // 성공 시 로직을 구현해 주세요.
        int overlayMode = ageRatingInfo.OverlayMode;
        string msg = ageRatingInfo.Msg;
    }
    else
    {
        // 실패 시 로직을 구현해 주세요.
    }
});

Notes

  • 베트남 전용 API예요.
  • 1회성 콜백이며, 렌더링이 가능한 시점 이후에 호출해야 해요.

See Also


Stove_VietnamOverimmersionNotification

종류 함수 · 모듈 Base · 버전 3.5.0

Description

베트남 과몰입 방지 안내 정보를 콜백으로 전달해요. 베트남 전용 API예요.

1회성 콜백이에요. 렌더링이 가능한 시점 이후에 호출해야 해요.

Declaration

csharp
public static void Stove_VietnamOverimmersionNotification(OnVietnamOverimmersionNotificationCallback onFinished)

Parameters

NameTypeRequiredDescription
onFinishedOnVietnamOverimmersionNotificationCallbackN결과를 받을 콜백

Returns

없음

Callback

csharp
public delegate void OnVietnamOverimmersionNotificationCallback(IStoveCallbackResult callbackResult, IStoveVietnamOverimmersionInfo overimmersionInfo);
NameTypeDescription
callbackResultIStoveCallbackResult호출 결과
overimmersionInfoIStoveVietnamOverimmersionInfo과몰입 방지 오버레이 정보. 오버레이 표시 상태(OverlayMode), 오버레이 색상 종류(OverlayType, 0=black·1=white), 오버레이 크기(OverlayScale, 0.0 ~ 1.0), 오버레이 투명도(OverlayOpacity, 0.0 ~ 1.0), 게임 등급(AgeRating, 0=전체이용가·12=12세·16=16세·18=18세), 경고 메시지(Msg), 서식 태그(<b>, <color=#RRGGBBAA> 등)가 포함된 서식 메시지(StyledMsg), 누적 게임 시간(ElapsedMinutes, 분 단위), 메시지 노출 시간(ExposureTime, 초 단위), 확장 애니메이션 시간(ExpandAnimationTime, 초 단위), 표시 위치 X · Y(DisplayPositionX / DisplayPositionY, 화면 좌상단 기준 0.0 ~ 1.0), 폰트 선택용 언어 코드(Language)를 제공

이 콜백은 Stove_RunCallback()을 호출한 스레드에서 실행돼요. 1회성 콜백이며, 렌더링이 가능한 시점 이후에 호출해야 해요.

Error Codes

CodeNameDescriptionShow to UserIn-Game Message
0k_EStoveCommonResultCode_Success성공x
5k_EStoveCommonResultCode_InvalidParamonFinished가 null(콜백이 없어 실제로는 전달되지 않는 내부 값) (콜백 등록 여부 확인)x
16k_EStoveCommonResultCode_BaseNotInitializedSDK가 초기화되지 않음 (Stove_Initialize() 호출 여부 확인)x
31k_EStoveCommonResultCode_NotSupportedCountry로그인 사용자의 GDS 국가가 베트남(vn)이 아님 (국가별 분기 처리)x
253k_EStoveCommonResultCode_UnmanagedExceptionSDK 내부에서 알 수 없는 예외 발생 (로그 확인)O일시적으로 문제가 발생했습니다. 다시 시도해 주세요. [확인]
254k_EStoveCommonResultCode_ManagedException래퍼에서 예외 발생 시 콜백으로 전달 (로그 확인)O일시적으로 문제가 발생했습니다. 다시 시도해 주세요. [확인]

전체 목록: EStoveCommonResultCode

Example

csharp
using static Stove.PCSDK.V3.Base;

Stove_VietnamOverimmersionNotification((callbackResult, overimmersionInfo) =>
{
    if (callbackResult.Result.IsSuccessful)
    {
        // 성공 시 로직을 구현해 주세요.
        string styledMsg = overimmersionInfo.StyledMsg;
        int elapsedMinutes = overimmersionInfo.ElapsedMinutes;
    }
    else
    {
        // 실패 시 로직을 구현해 주세요.
    }
});

Notes

  • 베트남 전용 API예요.
  • 1회성 콜백이며, 렌더링이 가능한 시점 이후에 호출해야 해요.

See Also


StoveReadOnlyArrayEnumerator

종류 구조체 · 모듈 Base · 버전 3.5.0

Description

SDK 의 읽기 전용 목록 래퍼 구조체(IStoveProductList, IStoveInventoryList, IStoveShopCategoryList 등)가 공유하는 boxing 없는 배열 열거자예요. IEnumerator<T> 를 구현해 foreach 순회를 지원해요.

class Base 안이 아니라 namespace Stove.PCSDK.V3 최상위(네임스페이스 레벨)에 선언되어 있어, 특정 모듈 클래스에 속하지 않고 여러 모듈의 목록형 타입이 공통으로 사용해요. 게임 코드가 직접 생성하지 않으며, 목록형 타입의 GetEnumerator() 가 내부적으로 반환해요.

Declaration

csharp
public struct StoveReadOnlyArrayEnumerator<T> : IEnumerator<T>
{
    public T Current { get; }

    public bool MoveNext();
    public void Reset();
    public void Dispose();
}

Members

NameTypeAccessDescription
CurrentT읽기 (프로퍼티)열거자가 현재 가리키는 요소예요.
MoveNextbool메서드다음 요소로 이동해요. 이동에 성공하면 true, 배열의 끝에 도달하면 false 를 반환해요.
Resetvoid메서드열거자를 초기 위치(요소를 가리키기 전)로 되돌려요.
Disposevoid메서드IDisposable 구현이에요. 별도로 해제할 리소스가 없어 아무 동작도 하지 않아요.

Example

csharp
using static Stove.PCSDK.V3.Base;
using static Stove.PCSDK.V3.IAP;

void OnFetchProductsCallback(IStoveCallbackResult callbackResult, IStoveProductList products)
{
    if (callbackResult.Result.IsSuccessful)
    {
        // IStoveProductList.GetEnumerator() 가 StoveReadOnlyArrayEnumerator<IStoveProduct> 를 반환하므로
        // 게임 코드는 foreach 로 목록을 그대로 순회할 수 있습니다.
        foreach (IStoveProduct product in products)
        {
            // 각 항목을 처리하는 로직을 구현해 주세요.
        }
    }
    else
    {
        // 실패 시 로직을 구현해 주세요.
    }
}

Notes

  • 게임 코드가 이 타입을 직접 다룰 일은 거의 없어요. IStoveProductList, IStoveInventoryList, IStoveShopCategoryListIReadOnlyList<T> 를 구현하는 목록형 타입에 foreach 를 사용하면 내부적으로 이 열거자가 쓰예요.
  • 내부 배열이 null 이면 빈 시퀀스로 취급해요(MoveNext() 가 즉시 false 를 반환).
  • 이 타입에는 대응하는 EStoveBaseTypeKind 값이 없어요. 특정 기능의 데이터/파라미터 타입이 아니라 여러 모듈의 목록형 타입이 공유하는 C# 전용 헬퍼이기 때문이에요.

See Also

  • 없음