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

PC SDK unity 레퍼런스 — 3.4.x 이전

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

Contents

NameKindModule
Base_AccessTokenRenewed함수Base
Base_GetAccessToken함수Base
Base_GetGds함수Base
Base_GetSignin함수Base
Base_GetTraceHint함수Base
Base_GetUser함수Base
Base_GetVersion함수Base
Base_Initialize함수Base
Base_InitializeEx함수Base
Base_OpenExternalUrl함수Base
Base_OverImmersionNotification함수Base
Base_RestartAppIfNecessary함수Base
Base_RestartAppIfNecessaryAsync함수Base
Base_RestartAppIfNecessaryAsyncEx함수Base
Base_RestartAppIfNecessaryAsyncEx2함수Base
Base_RunCallback함수Base
Base_RunCallbackWithTimeout함수Base
Base_SetGameProfile함수Base
Base_SetLanguage함수Base
Base_SetLanguageEx함수Base
Base_ShutdownNotification함수Base
Base_UnInitialize함수Base
Base_VietnamAgeRatingNotification함수Base
Base_VietnamOverimmersionNotification함수Base
BaseSDKMethod열거형Base
BaseSDKResultCode결과코드Base
CallbackResult구조체Base
DiscountType열거형IAP
IAP_CloseAllPopups함수IAP
IAP_ConfirmPurchase함수IAP
IAP_FetchInventory함수IAP
IAP_FetchProducts함수IAP
IAP_FetchProductsEx함수IAP
IAP_FetchShopCategories함수IAP
IAP_FetchTermsAgreement함수IAP
IAP_FetchTermsAgreementEx함수IAP
IAP_FetchVoidedPurchases함수IAP
IAP_FetchVoidedPurchasesEx함수IAP
IAP_GetVersion함수IAP
IAP_Initialize함수IAP
IAP_InitializeWithWndInfo함수IAP
IAP_StartPayment함수IAP
IAP_StartPaymentEx함수IAP
IAP_StartPurchase함수IAP
IAP_StartPurchaseEx함수IAP
IAP_UnInitialize함수IAP
IAPSDKMethod열거형IAP
IAPSDKResultCode결과코드IAP
Log_GetVersion함수Log
Log_Initialize함수Log
Log_Send함수Log
Log_UnInitialize함수Log
LogSDKMethod열거형Log
LogSDKResultCode결과코드Log
PCBang_CheckPCBangStatus함수PCBang
PCBang_GetVersion함수PCBang
PCBang_Initialize함수PCBang
PCBang_UnInitialize함수PCBang
PCBang_UserLogin함수PCBang
PCBang_UserLogout함수PCBang
PCBangPremium열거형PCBang
PCBangSDKMethod열거형PCBang
PCBangSDKResultCode결과코드PCBang
ProductTypeCode열거형IAP
PurchaseLimitTypeCode열거형IAP
PurchaseProgress열거형IAP
Result구조체Base
StoveAPI_FreeStruct함수Base
StoveLanguage열거형Base
StoveOverlayMode열거형Base
StovePCBangStatus구조체PCBang
StovePCBangUserLogin구조체PCBang
StovePCChargeInfo구조체IAP
StovePCFetchProductParam구조체IAP
StovePCGameProfile구조체Base
StovePCGds구조체Base
StovePCInitializeParam구조체Base
StovePCInitializeParamEx2구조체Base
StovePCInventoryItem구조체IAP
StovePCLogSendParam구조체Log
StovePCOrderProduct구조체IAP
StovePCOverImmersion구조체Base
StovePCPaymentOperation열거형IAP
StovePCPaymentOption구조체IAP
StovePCPopupDisallowed구조체View
StovePCProduct구조체IAP
StovePCProductEx구조체IAP
StovePCPurchasedProduct구조체IAP
StovePCPurchaseOperation열거형IAP
StovePCPurchaseOption구조체IAP
StovePCPurchaseResult구조체IAP
StovePCRefreshUserBenefits구조체PCBang
StovePCShopCategory구조체IAP
StovePCShutdown구조체Base
StovePCSignin구조체Base
StovePCStartPurchaseParam구조체IAP
StovePCTermsOperation열거형IAP
StovePCTermsOption구조체IAP
StovePCToken구조체Base
StovePCTraceHint구조체Base
StovePCUser구조체Base
StovePCVietnamAgeRatingInfo구조체Base
StovePCVietnamOverimmersionInfo구조체Base
StovePCVoidedPurchase구조체IAP
StovePCVoidedPurchasesEx구조체IAP
StovePCVoidedPurchasesMarketType열거형IAP
View_AutoPopup함수View
View_AutoPopupEx함수View
View_CloseAllPopups함수View
View_CouponPopup함수View
View_CouponPopupEx함수View
View_FetchWebOpenKey함수View
View_GetVersion함수View
View_Initialize함수View
View_InitializeWithWndInfo함수View
View_ManualPopup함수View
View_ManualPopupEx함수View
View_NewsPopup함수View
View_NewsPopupEx함수View
View_SetPopupDisallowed함수View
View_UnInitialize함수View
View_VerifyIdentificationPopup함수View
ViewSDKMethod열거형View
ViewSDKResultCode결과코드View
WebViewMode열거형Base

Base_AccessTokenRenewed

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

Description

Base_AccessTokenRenewed 는 액세스 토큰이 갱신될 때마다 호출될 콜백을 등록하는 함수예요. 한 번 등록해 두면 토큰이 갱신되는 시점마다 콜백이 반복 호출돼요.

onFinished 를 다시 호출하면 이전에 등록된 같은 타입의 콜백은 새 콜백으로 교체돼요.

Declaration

csharp
public static void Base_AccessTokenRenewed(OnRenewTokenFinished onFinished);

Parameters

NameTypeRequiredDescription
onFinishedOnRenewTokenFinishedN토큰 갱신 시 호출될 콜백. null 을 넘기면 등록을 해제해요

Returns

TypeDescription
void없음

Callback

csharp
public delegate void OnRenewTokenFinished(CallbackResult result, StovePCToken token);
NameTypeDescription
resultCallbackResult갱신 결과
tokenStovePCToken갱신된 토큰 정보

콜백은 Base_RunCallback() 을 호출한 스레드에서 실행돼요. 토큰이 갱신될 때마다 반복 호출돼요.

Error Codes

CodeNameDescriptionShow to UserIn-Game Message
0SUCCESS성공x
254MANAGED_EXCEPTIONC# 래퍼 내부(마샬링 등)에서 예외가 발생함. result.exceptionMessage 를 확인해야 해요O일시적으로 문제가 발생했습니다. 다시 시도해 주세요. [확인]

발생 가능한 결과 코드는 BaseSDKResultCode 를 참조하세요.

Example

csharp
using static Stove.PCSDK.Base;

void OnRenewTokenFinished(CallbackResult callbackResult, StovePCToken token)
{
    if (callbackResult.result.IsSuccessful())
    {
        // token.accessToken 을 사용하는 로직을 구현해 주세요.
    }
}

Base_AccessTokenRenewed(OnRenewTokenFinished);

Notes

See Also


Base_GetAccessToken

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

Description

Base_GetAccessToken 은 현재 액세스 토큰을 accessToken 에 채워 돌려주는 함수예요. 초기화 후 호출해야 해요.

Declaration

csharp
public static Result Base_GetAccessToken(ref string accessToken, uint length);

Parameters

NameTypeRequiredDescription
accessTokenref stringY액세스 토큰을 돌려받을 변수
lengthuintYaccessToken 을 채우는 데 내부적으로 사용하는 버퍼 크기(문자 수)

Returns

TypeDescription
Result조회 결과. IsSuccessful() 로 성공 여부를 판정해요

Error Codes

CodeNameDescriptionShow to UserIn-Game Message
0SUCCESS성공x
254MANAGED_EXCEPTIONC# 래퍼 내부(마샬링 등)에서 예외가 발생함. exceptionMessage 를 확인해야 해요O일시적으로 문제가 발생했습니다. 다시 시도해 주세요. [확인]

발생 가능한 결과 코드는 BaseSDKResultCode 를 참조하세요.

Example

csharp
using static Stove.PCSDK.Base;

string accessToken = string.Empty;
Result result = Base_GetAccessToken(ref accessToken, 1024);

if (result.IsSuccessful())
{
    // accessToken 을 사용하는 로직을 구현해 주세요.
}
else
{
    // 실패 시 로직을 구현해 주세요.
}

Notes

  • 토큰이 갱신될 때 알림을 받으려면 Base_AccessTokenRenewed 를 사용해야 해요.
  • 조회한 토큰을 게임에서 따로 보관해 두고 다시 쓰지 마세요. SDK 가 토큰을 주기적으로 갱신하므로 보관해 둔 값은 만료될 수 있어요. 토큰이 필요할 때마다 이 함수를 호출해 그때의 유효한 값을 받아 쓰세요.

See Also


Base_GetGds

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

Description

Base_GetGds 는 유저의 GDS 정보를 StovePCGds 에 채워 돌려주는 함수예요. 초기화 후 호출해야 해요.

Declaration

csharp
public static Result Base_GetGds(ref StovePCGds gds);

Parameters

NameTypeRequiredDescription
gdsref StovePCGdsYGDS 정보를 돌려받을 변수

Returns

TypeDescription
Result조회 결과. IsSuccessful() 로 성공 여부를 판정해요

Error Codes

CodeNameDescriptionShow to UserIn-Game Message
0SUCCESS성공x
83INVALID_GDS_INFOGDS 정보가 올바르지 않음. 초기화 상태를 확인해야 해요x
254MANAGED_EXCEPTIONC# 래퍼 내부(마샬링 등)에서 예외가 발생함. exceptionMessage 를 확인해야 해요O일시적으로 문제가 발생했습니다. 다시 시도해 주세요. [확인]

발생 가능한 결과 코드는 BaseSDKResultCode 를 참조하세요.

Example

csharp
using static Stove.PCSDK.Base;

StovePCGds gds = default;
Result result = Base_GetGds(ref gds);

if (result.IsSuccessful())
{
    // gds.nation, gds.regulation 등을 사용하는 로직을 구현해 주세요.
}
else
{
    // 실패 시 로직을 구현해 주세요.
}

Notes

  • 실패 시 gds 는 기본값(default)으로 유지돼요.

See Also


Base_GetSignin

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

Description

Base_GetSignin 은 유저의 로그인 정보를 StovePCSignin 에 채워 돌려주는 함수예요. 초기화 후 호출해야 해요.

Declaration

csharp
public static Result Base_GetSignin(ref StovePCSignin signin);

Parameters

NameTypeRequiredDescription
signinref StovePCSigninY로그인 정보를 돌려받을 변수

Returns

TypeDescription
Result조회 결과. IsSuccessful() 로 성공 여부를 판정해요

Error Codes

CodeNameDescriptionShow to UserIn-Game Message
0SUCCESS성공x
254MANAGED_EXCEPTIONC# 래퍼 내부(마샬링 등)에서 예외가 발생함. exceptionMessage 를 확인해야 해요O일시적으로 문제가 발생했습니다. 다시 시도해 주세요. [확인]

발생 가능한 결과 코드는 BaseSDKResultCode 를 참조하세요.

Example

csharp
using static Stove.PCSDK.Base;

StovePCSignin signin = default;
Result result = Base_GetSignin(ref signin);

if (result.IsSuccessful())
{
    // signin.personVerify, signin.nationality 등을 사용하는 로직을 구현해 주세요.
}
else
{
    // 실패 시 로직을 구현해 주세요.
}

Notes

  • 실패 시 signin 은 기본값(default)으로 유지돼요.

See Also


Base_GetTraceHint

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

Description

폐기(deprecated)된 기능이에요. 신규 인터페이스에서도 제공하지 않아요.

Base_GetTraceHint 는 로그 추적용 세션 힌트 정보를 StovePCTraceHint 에 채워 돌려주는 함수예요. 초기화 후 호출해야 해요.

Declaration

csharp
public static Result Base_GetTraceHint(ref StovePCTraceHint traceHint);

Parameters

NameTypeRequiredDescription
traceHintref StovePCTraceHintY세션 힌트 정보를 돌려받을 변수

Returns

TypeDescription
Result조회 결과. IsSuccessful() 로 성공 여부를 판정해요

Error Codes

CodeNameDescriptionShow to UserIn-Game Message
0SUCCESS성공x
254MANAGED_EXCEPTIONC# 래퍼 내부(마샬링 등)에서 예외가 발생함. exceptionMessage 를 확인해야 해요O일시적으로 문제가 발생했습니다. 다시 시도해 주세요. [확인]

발생 가능한 결과 코드는 BaseSDKResultCode 를 참조하세요.

Example

csharp
using static Stove.PCSDK.Base;

StovePCTraceHint traceHint = default;
Result result = Base_GetTraceHint(ref traceHint);

if (result.IsSuccessful())
{
    // traceHint.sessionId 등을 로그에 남기는 로직을 구현해 주세요.
}
else
{
    // 실패 시 로직을 구현해 주세요.
}

Notes

  • 실패 시 traceHint 는 기본값(default)으로 유지돼요.
  • 이 함수와 StovePCTraceHint 는 향후 버전에서 제거될 예정이에요.

See Also


Base_GetUser

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

Description

Base_GetUser 는 로그인한 유저 정보를 StovePCUser 에 채워 돌려주는 함수예요. 초기화 후 호출해야 해요.

Declaration

csharp
public static Result Base_GetUser(ref StovePCUser user);

Parameters

NameTypeRequiredDescription
userref StovePCUserY유저 정보를 돌려받을 변수

Returns

TypeDescription
Result조회 결과. IsSuccessful() 로 성공 여부를 판정해요

Error Codes

CodeNameDescriptionShow to UserIn-Game Message
0SUCCESS성공x
254MANAGED_EXCEPTIONC# 래퍼 내부(마샬링 등)에서 예외가 발생함. exceptionMessage 를 확인해야 해요O일시적으로 문제가 발생했습니다. 다시 시도해 주세요. [확인]

발생 가능한 결과 코드는 BaseSDKResultCode 를 참조하세요.

Example

csharp
using static Stove.PCSDK.Base;

StovePCUser user = default;
Result result = Base_GetUser(ref user);

if (result.IsSuccessful())
{
    // user.nickname, user.gameUserId 를 사용하는 로직을 구현해 주세요.
}
else
{
    // 실패 시 로직을 구현해 주세요.
}

Notes

  • 실패 시 user 는 기본값(default)으로 유지돼요.

See Also


Base_GetVersion

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

Description

Base_GetVersion 은 SDK 의 버전 문자열을 version 에 채워 돌려주는 함수예요.

Declaration

csharp
public static Result Base_GetVersion(ref string version, uint length);

Parameters

NameTypeRequiredDescription
versionref stringY버전 문자열을 돌려받을 변수
lengthuintYversion 을 채우는 데 내부적으로 사용하는 버퍼 크기(문자 수)

Returns

TypeDescription
Result조회 결과. IsSuccessful() 로 성공 여부를 판정해요

Error Codes

CodeNameDescriptionShow to UserIn-Game Message
0SUCCESS성공x
254MANAGED_EXCEPTIONC# 래퍼 내부(마샬링 등)에서 예외가 발생함. exceptionMessage 를 확인해야 해요O일시적으로 문제가 발생했습니다. 다시 시도해 주세요. [확인]

발생 가능한 결과 코드는 BaseSDKResultCode 를 참조하세요.

Example

csharp
using static Stove.PCSDK.Base;

string version = string.Empty;
Result result = Base_GetVersion(ref version, 64);

if (result.IsSuccessful())
{
    // version 을 사용하는 로직을 구현해 주세요.
}
else
{
    // 실패 시 로직을 구현해 주세요.
}

Notes

  • 없음

See Also

  • 없음

Base_Initialize

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

Description

Base_InitializeStovePCInitializeParam 을 받아 SDK 를 초기화하는 비동기 함수예요. 결과는 onFinished 콜백으로 전달돼요.

이 함수를 호출하기 전에는 다른 SDK API 를 호출할 수 없어요. 초기화 파라미터 없이 호출하려면 Base_InitializeEx 를 사용해야 해요.

이 함수를 호출하기 전에 Base_RestartAppIfNecessary 계열 함수(Base_RestartAppIfNecessary, Base_RestartAppIfNecessaryAsync, Base_RestartAppIfNecessaryAsyncEx 등)를 먼저 호출해 런처를 통해 실행되었는지 확인해야 해요. 먼저 호출하지 않으면 NEED_STOVE_LAUNCHER(84)로 실패해요.

Declaration

csharp
public static void Base_Initialize(StovePCInitializeParam initParam, OnInitializeFinished onFinished);

Parameters

NameTypeRequiredDescription
initParamStovePCInitializeParamY초기화 파라미터
onFinishedOnInitializeFinishedY결과를 받을 콜백

Returns

TypeDescription
void없음

Callback

csharp
public delegate void OnInitializeFinished(CallbackResult result);
NameTypeDescription
resultCallbackResult초기화 결과

콜백은 Base_RunCallback() 을 호출한 스레드에서 실행돼요. 이 호출 1건에 대해 1회 실행돼요.

Error Codes

CodeNameDescriptionShow to UserIn-Game Message
0SUCCESS성공x
5INVALID_PARAMinitParamenvironment · gameId · applicationKey 중 비어 있는 값이 있음x
18ALREADY_INITIALIZED이미 초기화되어 있음x
84NEED_STOVE_LAUNCHERBase_RestartAppIfNecessary 계열 함수를 먼저 호출하지 않았거나, 런처를 통해 실행되지 않음O게임이 스토브 PC 클라이언트를 통해 실행되지 않아 종료됩니다.클라이언트에서 다시 게임을 실행해주세요.클라이언트 미설치 시 스토브 홈페이지에서 설치해주세요.[확인]
254MANAGED_EXCEPTIONC# 래퍼 내부(마샬링 등)에서 예외가 발생함. result.exceptionMessage 를 확인해야 해요O일시적으로 문제가 발생했습니다. 다시 시도해 주세요. [확인]

발생 가능한 결과 코드는 BaseSDKResultCode 를 참조하세요.

Example

csharp
using static Stove.PCSDK.Base;

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

StovePCInitializeParam initParam = new StovePCInitializeParam
{
    environment = "real",
    gameId = "your_game_id",
    applicationKey = "your_application_key"
};

Base_Initialize(initParam, OnInitializeFinished);

// 게임 루프에서 반복 호출해 콜백을 처리해 주세요.
while (isRunning)
{
    Base_RunCallback();
}

Notes

  • 콜백을 받으려면 게임 루프에서 Base_RunCallback 을 반복 호출해야 해요. 이 함수는 while(true) 형태로 별도 호출하는 것이 아니라 게임 루프 안에서 매 프레임 호출해야 해요.
  • 종료 시에는 Base_UnInitialize 를 호출해야 해요.

See Also


Base_InitializeEx

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

Description

Base_InitializeExBase_Initialize 와 달리 StovePCInitializeParam 을 받지 않고 콜백만 받아요. 초기화 결과는 동일하게 onFinished 콜백으로 전달돼요.

이 함수는 Base_RestartAppIfNecessary 계열 함수(Base_RestartAppIfNecessary, Base_RestartAppIfNecessaryAsync, Base_RestartAppIfNecessaryAsyncEx2 등)가 캐시한 초기화 파라미터를 재사용해요. 이 함수를 호출하기 전에 반드시 Base_RestartAppIfNecessary 계열 함수를 먼저 호출해야 하며, 먼저 호출하지 않으면 NEED_STOVE_LAUNCHER(84)로 실패해요.

Declaration

csharp
public static void Base_InitializeEx(OnInitializeFinished onFinished);

Parameters

NameTypeRequiredDescription
onFinishedOnInitializeFinishedY결과를 받을 콜백

Returns

TypeDescription
void없음

Callback

csharp
public delegate void OnInitializeFinished(CallbackResult result);
NameTypeDescription
resultCallbackResult초기화 결과

콜백은 Base_RunCallback() 을 호출한 스레드에서 실행돼요. 이 호출 1건에 대해 1회 실행돼요.

Error Codes

CodeNameDescriptionShow to UserIn-Game Message
0SUCCESS성공x
5INVALID_PARAMBase_RestartAppIfNecessary 계열 함수가 캐시한 environment · gameId · applicationKey 중 비어 있는 값이 있음x
18ALREADY_INITIALIZED이미 초기화되어 있음x
84NEED_STOVE_LAUNCHERBase_RestartAppIfNecessary 계열 함수를 먼저 호출하지 않았거나, 런처를 통해 실행되지 않음O게임이 스토브 PC 클라이언트를 통해 실행되지 않아 종료됩니다.클라이언트에서 다시 게임을 실행해주세요.클라이언트 미설치 시 스토브 홈페이지에서 설치해주세요.[확인]
254MANAGED_EXCEPTIONC# 래퍼 내부(마샬링 등)에서 예외가 발생함. result.exceptionMessage 를 확인해야 해요O일시적으로 문제가 발생했습니다. 다시 시도해 주세요. [확인]

발생 가능한 결과 코드는 BaseSDKResultCode 를 참조하세요.

Example

csharp
using static Stove.PCSDK.Base;

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

Base_InitializeEx(OnInitializeFinished);

Notes

See Also


Base_OpenExternalUrl

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

Description

Base_OpenExternalUrl 은 지정한 URL 을 외부에서 여는 비동기 함수예요. 결과는 onFinished 콜백으로 전달돼요.

Declaration

csharp
public static void Base_OpenExternalUrl(string url, OnOpenExternalUrlFinished onFinished);

Parameters

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

Returns

TypeDescription
void없음

Callback

csharp
public delegate void OnOpenExternalUrlFinished(CallbackResult result);
NameTypeDescription
resultCallbackResult호출 결과

콜백은 Base_RunCallback() 을 호출한 스레드에서 실행돼요. 이 호출 1건에 대해 1회 실행돼요.

Error Codes

CodeNameDescriptionShow to UserIn-Game Message
0SUCCESS성공x
254MANAGED_EXCEPTIONC# 래퍼 내부(마샬링 등)에서 예외가 발생함. result.exceptionMessage 를 확인해야 해요O일시적으로 문제가 발생했습니다. 다시 시도해 주세요. [확인]

발생 가능한 결과 코드는 BaseSDKResultCode 를 참조하세요.

Example

csharp
using static Stove.PCSDK.Base;

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

Base_OpenExternalUrl("https://www.onstove.com", OnOpenExternalUrlFinished);

Notes

  • onFinished 는 필수예요. 넘기지 않으면 INVALID_PARAM 으로 처리돼요.
  • 기본 브라우저에서 지정한 주소를 열어요. 게임 창은 그대로 유지돼요.
  • 콜백은 Base_RunCallback() 을 호출한 스레드에서 실행돼요.

See Also

  • 없음

Base_OverImmersionNotification

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

Description

Base_OverImmersionNotification 은 과몰입 경고가 발생할 때 호출될 콜백을 등록하는 함수예요. onFinished 를 다시 호출하면 이전에 등록된 같은 타입의 콜백은 새 콜백으로 교체돼요.

Declaration

csharp
public static void Base_OverImmersionNotification(OnOverImmersionFinished onFinished);

Parameters

NameTypeRequiredDescription
onFinishedOnOverImmersionFinishedN과몰입 경고 발생 시 호출될 콜백. null 을 넘기면 등록을 해제해요

Returns

TypeDescription
void없음

Callback

csharp
public delegate void OnOverImmersionFinished(CallbackResult result, StovePCOverImmersion overImmersion);
NameTypeDescription
resultCallbackResult알림 결과
overImmersionStovePCOverImmersion과몰입 경고 내용

콜백은 Base_RunCallback() 을 호출한 스레드에서 실행돼요. 과몰입 경고가 발생할 때마다 호출돼요.

Error Codes

CodeNameDescriptionShow to UserIn-Game Message
0SUCCESS성공x
254MANAGED_EXCEPTIONC# 래퍼 내부(마샬링 등)에서 예외가 발생함. result.exceptionMessage 를 확인해야 해요O일시적으로 문제가 발생했습니다. 다시 시도해 주세요. [확인]

발생 가능한 결과 코드는 BaseSDKResultCode 를 참조하세요.

Example

csharp
using static Stove.PCSDK.Base;

void OnOverImmersionFinished(CallbackResult callbackResult, StovePCOverImmersion overImmersion)
{
    if (callbackResult.result.IsSuccessful())
    {
        // overImmersion.warningMessage 등으로 경고를 표시하는 로직을 구현해 주세요.
    }
}

Base_OverImmersionNotification(OnOverImmersionFinished);

Notes

  • PCBANG_FREE 상태에서도 이 알림은 계속 동작할 수 있어요. 상태와 무관하게 콜백 등록을 유지해야 해요.

See Also


Base_RestartAppIfNecessary

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

Description

Base_RestartAppIfNecessaryStovePCInitializeParam 을 넘겨 필요한 경우 앱을 재시작시키는 동기 함수예요. 콜백 없이 즉시 bool 값을 돌려줘요.

비동기로 처리하려면 Base_RestartAppIfNecessaryAsync 계열을 사용해야 해요.

Declaration

csharp
public static bool Base_RestartAppIfNecessary(StovePCInitializeParam initParam);

Parameters

NameTypeRequiredDescription
initParamStovePCInitializeParamY초기화 파라미터

Returns

TypeDescription
booltrue 이면 스토브 프로토콜 핸들러로 재실행되므로 이후 코드를 실행하지 말고 게임을 종료해야 해요. false 이면 이미 런처로 실행된 상태이므로 이어서 Base_Initialize() 를 호출해요

Error Codes

없음. 이 함수는 Result/CallbackResult 를 반환하지 않으며, 내부에서 예외가 발생하면 C# 예외가 그대로 다시 던져져요(rethrow).

Example

csharp
using static Stove.PCSDK.Base;

StovePCInitializeParam initParam = new StovePCInitializeParam
{
    environment = "real",
    gameId = "your_game_id",
    applicationKey = "your_application_key"
};

bool restarted = Base_RestartAppIfNecessary(initParam);

Notes

See Also


Base_RestartAppIfNecessaryAsync

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

Description

Base_RestartAppIfNecessaryAsyncStovePCInitializeParam 과 대기 시간(waitTimeMillisec)을 받아, 필요한 경우 앱을 비동기로 재시작하고 결과를 콜백으로 알려줘요.

런처 실행 여부를 별도로 지정해야 하면 Base_RestartAppIfNecessaryAsyncEx 를, 확장 초기화 파라미터를 한 구조체로 넘기려면 Base_RestartAppIfNecessaryAsyncEx2 를 사용해야 해요.

Declaration

csharp
public static void Base_RestartAppIfNecessaryAsync(StovePCInitializeParam initParam, uint waitTimeMillisec, OnRestartAppIfNecessaryAsyncFinished onFinished);

Parameters

NameTypeRequiredDescription
initParamStovePCInitializeParamY초기화 파라미터
waitTimeMillisecuintY대기 시간(밀리초)
onFinishedOnRestartAppIfNecessaryAsyncFinishedY결과를 받을 콜백

Returns

TypeDescription
void없음

Callback

csharp
public delegate void OnRestartAppIfNecessaryAsyncFinished(CallbackResult result, bool restartAppIfNecessary);
NameTypeDescription
resultCallbackResult호출 결과
restartAppIfNecessarybool재시작 여부를 나타내는 값이에요

콜백은 Base_RunCallback() 을 호출한 스레드에서 실행돼요. 이 호출 1건에 대해 1회 실행돼요.

Error Codes

CodeNameDescriptionShow to UserIn-Game Message
0SUCCESS성공x
254MANAGED_EXCEPTIONC# 래퍼 내부(마샬링 등)에서 예외가 발생함. result.exceptionMessage 를 확인해야 해요O일시적으로 문제가 발생했습니다. 다시 시도해 주세요. [확인]

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

  • 87 IPC_CONNECT_FAILED · 88 IPC_AES_KEY_NOT_RECEIVED · 89 IPC_TIMEOUT — 스토브 PC 클라이언트를 통해 게임을 다시 실행해야 해요
  • 253 UNMANAGED_EXCEPTION · 254 MANAGED_EXCEPTION — 재시작 여부를 판단할 수 없는 상태이므로 게임을 종료해야 해요

발생 가능한 결과 코드는 BaseSDKResultCode 를 참조하세요.

Example

csharp
using static Stove.PCSDK.Base;

void OnRestartAppIfNecessaryAsyncFinished(CallbackResult callbackResult, bool restartAppIfNecessary)
{
    if (callbackResult.result.IsSuccessful())
    {
        // 성공 시 로직을 구현해 주세요.
    }
    else
    {
        // 실패 시 로직을 구현해 주세요.
    }
}

StovePCInitializeParam initParam = new StovePCInitializeParam
{
    environment = "real",
    gameId = "your_game_id",
    applicationKey = "your_application_key"
};

Base_RestartAppIfNecessaryAsync(initParam, 3000, OnRestartAppIfNecessaryAsyncFinished);

Notes

  • onFinishednull 로 넘기면 콜백 없이 재시작만 처리돼요.
  • 콜백을 받으려면 게임 루프에서 Base_RunCallback 을 반복 호출해야 해요.

See Also


Base_RestartAppIfNecessaryAsyncEx

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

Description

Base_RestartAppIfNecessaryAsyncExBase_RestartAppIfNecessaryAsynclaunchLauncher 매개변수가 추가된 버전이에요. 런처를 함께 실행할지를 호출자가 직접 지정할 수 있어요.

Declaration

csharp
public static void Base_RestartAppIfNecessaryAsyncEx(StovePCInitializeParam initParam, uint waitTimeMillisec, bool launchLauncher, OnRestartAppIfNecessaryAsyncFinished onFinished);

Parameters

NameTypeRequiredDescription
initParamStovePCInitializeParamY초기화 파라미터
waitTimeMillisecuintY대기 시간(밀리초)
launchLauncherboolY런처 실행 여부
onFinishedOnRestartAppIfNecessaryAsyncFinishedY결과를 받을 콜백

Returns

TypeDescription
void없음

Callback

csharp
public delegate void OnRestartAppIfNecessaryAsyncFinished(CallbackResult result, bool restartAppIfNecessary);
NameTypeDescription
resultCallbackResult호출 결과
restartAppIfNecessarybool재시작 여부를 나타내는 값이에요

콜백은 Base_RunCallback() 을 호출한 스레드에서 실행돼요. 이 호출 1건에 대해 1회 실행돼요.

Error Codes

CodeNameDescriptionShow to UserIn-Game Message
0SUCCESS성공x
253UNMANAGED_EXCEPTION네이티브 SDK 내부에서 예외가 발생함O일시적으로 문제가 발생했습니다. 다시 시도해 주세요. [확인]
254MANAGED_EXCEPTIONC# 래퍼 내부(마샬링 등)에서 예외가 발생함. result.exceptionMessage 를 확인해야 해요O일시적으로 문제가 발생했습니다. 다시 시도해 주세요. [확인]

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

  • 87 IPC_CONNECT_FAILED · 88 IPC_AES_KEY_NOT_RECEIVED · 89 IPC_TIMEOUT — 스토브 PC 클라이언트를 통해 게임을 다시 실행해야 해요
  • 253 UNMANAGED_EXCEPTION · 254 MANAGED_EXCEPTION — 재시작 여부를 판단할 수 없는 상태이므로 게임을 종료해야 해요

발생 가능한 결과 코드는 BaseSDKResultCode 를 참조하세요.

Example

csharp
using static Stove.PCSDK.Base;

void OnRestartAppIfNecessaryAsyncFinished(CallbackResult callbackResult, bool restartAppIfNecessary)
{
    if (callbackResult.result.IsSuccessful())
    {
        // 성공 시 로직을 구현해 주세요.
    }
    else
    {
        // 실패 시 로직을 구현해 주세요.
    }
}

StovePCInitializeParam initParam = new StovePCInitializeParam
{
    environment = "real",
    gameId = "your_game_id",
    applicationKey = "your_application_key"
};

Base_RestartAppIfNecessaryAsyncEx(initParam, 3000, true, OnRestartAppIfNecessaryAsyncFinished);

Notes

  • 백그라운드 스레드에서 발생한 예외도 UNMANAGED_EXCEPTION(253) 또는 MANAGED_EXCEPTION(254) 으로 콜백에 전달돼요.
  • Base_RestartAppIfNecessaryAsync 와 시그니처가 다른 점은 launchLauncher 매개변수 하나뿐이에요.

See Also


Base_RestartAppIfNecessaryAsyncEx2

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

Description

스팀 연동 여부와 관계없이 사용할 수 있어요. platformName 만 스토브 외 플랫폼(Steam 등)과 함께 연동할 때 채우는 선택 필드이며, 스토브 단독 연동이라면 값을 설정하지 않거나 빈 문자열("")로 두면 Base_RestartAppIfNecessaryAsyncEx 와 동일하게 동작해요.

Base_RestartAppIfNecessaryAsyncEx2Base_RestartAppIfNecessaryAsyncExinitParam, waitTimeMillisec, launchLauncher 를 하나의 StovePCInitializeParamEx2 구조체로 통합한 버전이에요. platformName 과 예약 필드도 이 구조체를 통해 함께 전달해요.

Declaration

csharp
public static void Base_RestartAppIfNecessaryAsyncEx2(StovePCInitializeParamEx2 initParam, OnRestartAppIfNecessaryAsyncFinished onFinished);

Parameters

NameTypeRequiredDescription
initParamStovePCInitializeParamEx2Y확장 초기화 파라미터
onFinishedOnRestartAppIfNecessaryAsyncFinishedY결과를 받을 콜백

Returns

TypeDescription
void없음

Callback

csharp
public delegate void OnRestartAppIfNecessaryAsyncFinished(CallbackResult result, bool restartAppIfNecessary);
NameTypeDescription
resultCallbackResult호출 결과
restartAppIfNecessarybool재시작 여부를 나타내는 값이에요

콜백은 Base_RunCallback() 을 호출한 스레드에서 실행돼요. 이 호출 1건에 대해 1회 실행돼요.

Error Codes

CodeNameDescriptionShow to UserIn-Game Message
0SUCCESS성공x
253UNMANAGED_EXCEPTION네이티브 SDK 내부에서 예외가 발생함O일시적으로 문제가 발생했습니다. 다시 시도해 주세요. [확인]
254MANAGED_EXCEPTIONC# 래퍼 내부(마샬링 등)에서 예외가 발생함. result.exceptionMessage 를 확인해야 해요O일시적으로 문제가 발생했습니다. 다시 시도해 주세요. [확인]

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

  • 87 IPC_CONNECT_FAILED · 88 IPC_AES_KEY_NOT_RECEIVED · 89 IPC_TIMEOUT — 스토브 PC 클라이언트를 통해 게임을 다시 실행해야 해요
  • 253 UNMANAGED_EXCEPTION · 254 MANAGED_EXCEPTION — 재시작 여부를 판단할 수 없는 상태이므로 게임을 종료해야 해요

발생 가능한 결과 코드는 BaseSDKResultCode 를 참조하세요.

Example

csharp
using static Stove.PCSDK.Base;

void OnRestartAppIfNecessaryAsyncFinished(CallbackResult callbackResult, bool restartAppIfNecessary)
{
    if (callbackResult.result.IsSuccessful())
    {
        // 성공 시 로직을 구현해 주세요.
    }
    else
    {
        // 실패 시 로직을 구현해 주세요.
    }
}

StovePCInitializeParamEx2 initParam = new StovePCInitializeParamEx2
{
    environment = "real",
    gameId = "your_game_id",
    applicationKey = "your_application_key",
    waitTimeMillisec = 3000,
    launchLauncher = true,
    platformName = "your_platform_name"
};

Base_RestartAppIfNecessaryAsyncEx2(initParam, OnRestartAppIfNecessaryAsyncFinished);

Notes

See Also


Base_RunCallback

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

Description

Base_RunCallback 은 대기 중인 비동기 API 콜백을 현재 호출 스레드에서 실행시키는 함수예요. 모든 SDK 비동기 API(예: Base_Initialize)의 콜백은 SDK 내부 스레드가 아니라, 이 함수를 호출한 스레드에서 실행돼요.

게임 루프에서 매 프레임(또는 주기적으로) 호출해야 대기 중인 콜백이 처리돼요.

Declaration

csharp
public static void Base_RunCallback();

Parameters

없음

Returns

TypeDescription
void없음

Error Codes

없음. 이 함수는 Result/CallbackResult 를 반환하지 않으며, 내부에서 예외가 발생하면 C# 예외가 그대로 다시 던져져요(rethrow).

Example

csharp
using static Stove.PCSDK.Base;

// 게임 루프 안에서 매 프레임 호출해 주세요.
void Update()
{
    Base_RunCallback();
}

Notes

  • while(true) 형태로 별도 호출하는 함수가 아니라, 게임 루프 안에서 반복 호출해야 하는 함수예요.
  • 대기 시간을 지정하려면 Base_RunCallbackWithTimeout 을 사용해야 해요.

See Also


Base_RunCallbackWithTimeout

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

Description

Base_RunCallbackWithTimeoutBase_RunCallback 과 같은 역할을 하되, timeoutMillisec 로 대기 시간을 지정할 수 있는 함수예요. 콜백은 이 함수를 호출한 스레드에서 실행돼요.

Declaration

csharp
public static void Base_RunCallbackWithTimeout(uint timeoutMillisec);

Parameters

NameTypeRequiredDescription
timeoutMillisecuintY대기 시간(밀리초)

Returns

TypeDescription
void없음

Error Codes

없음. 이 함수는 Result/CallbackResult 를 반환하지 않으며, 내부에서 예외가 발생하면 C# 예외가 그대로 다시 던져져요(rethrow).

Example

csharp
using static Stove.PCSDK.Base;

Base_RunCallbackWithTimeout(100);

Notes

  • Base_RunCallback 과 마찬가지로 게임 루프에서 반복 호출해야 해요.

See Also


Base_SetGameProfile

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

Description

Base_SetGameProfileStovePCGameProfile 을 SDK 에 전달하는 동기 함수예요.

Declaration

csharp
public static Result Base_SetGameProfile(StovePCGameProfile gameProfile);

Parameters

NameTypeRequiredDescription
gameProfileStovePCGameProfileY설정할 게임 프로필

Returns

TypeDescription
Result설정 결과. IsSuccessful() 로 성공 여부를 판정해요

Error Codes

CodeNameDescriptionShow to UserIn-Game Message
0SUCCESS성공x
254MANAGED_EXCEPTIONC# 래퍼 내부(마샬링 등)에서 예외가 발생함. exceptionMessage 를 확인해야 해요O일시적으로 문제가 발생했습니다. 다시 시도해 주세요. [확인]

발생 가능한 결과 코드는 BaseSDKResultCode 를 참조하세요.

Example

csharp
using static Stove.PCSDK.Base;

StovePCGameProfile gameProfile = new StovePCGameProfile
{
    worldId = "world_01",
    characterNumber = 12345L
};

Result result = Base_SetGameProfile(gameProfile);

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

Notes

  • 없음

See Also


Base_SetLanguage

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

Description

Base_SetLanguageStoveLanguage 열거형 값으로 SDK 언어를 설정하는 동기 함수예요.

이 열거형에 없는 언어를 설정해야 하면 Base_SetLanguageEx 를 사용해야 해요.

새로 연동하는 경우에는 Base_SetLanguageEx 를 사용하세요. 열거형에 없는 언어까지 문자열로 지정할 수 있어 이후 언어가 추가되어도 그대로 쓸 수 있어요.

Declaration

csharp
public static Result Base_SetLanguage(StoveLanguage language);

Parameters

NameTypeRequiredDescription
languageStoveLanguageY설정할 언어

Returns

TypeDescription
Result설정 결과. IsSuccessful() 로 성공 여부를 판정해요

Error Codes

CodeNameDescriptionShow to UserIn-Game Message
0SUCCESS성공x
254MANAGED_EXCEPTIONC# 래퍼 내부(마샬링 등)에서 예외가 발생함. exceptionMessage 를 확인해야 해요O일시적으로 문제가 발생했습니다. 다시 시도해 주세요. [확인]

발생 가능한 결과 코드는 BaseSDKResultCode 를 참조하세요.

Example

csharp
using static Stove.PCSDK.Base;

Result result = Base_SetLanguage(StoveLanguage.ko);

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

Notes

See Also


Base_SetLanguageEx

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

Description

Base_SetLanguageExBase_SetLanguage 와 달리 StoveLanguage 열거형이 아니라 문자열로 언어를 설정하는 동기 함수예요. StoveLanguage 에 없는 언어 값을 설정해야 할 때 사용해요.

Declaration

csharp
public static Result Base_SetLanguageEx(string language);

Parameters

NameTypeRequiredDescription
languagestringY설정할 언어 문자열

Returns

TypeDescription
Result설정 결과. IsSuccessful() 로 성공 여부를 판정해요

Error Codes

CodeNameDescriptionShow to UserIn-Game Message
0SUCCESS성공x
254MANAGED_EXCEPTIONC# 래퍼 내부(마샬링 등)에서 예외가 발생함. exceptionMessage 를 확인해야 해요O일시적으로 문제가 발생했습니다. 다시 시도해 주세요. [확인]

발생 가능한 결과 코드는 BaseSDKResultCode 를 참조하세요.

Example

csharp
using static Stove.PCSDK.Base;

Result result = Base_SetLanguageEx("ko");

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

Notes

  • Base_SetLanguage 와의 시그니처 차이는 매개변수 타입이 StoveLanguage 열거형이 아니라 string 이라는 점뿐이에요.

See Also


Base_ShutdownNotification

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

Description

Base_ShutdownNotification 은 셧다운 대상 유저에게 셧다운 안내가 발생할 때 호출될 콜백을 등록하는 함수예요. onFinished 를 다시 호출하면 이전에 등록된 같은 타입의 콜백은 새 콜백으로 교체돼요.

Declaration

csharp
public static void Base_ShutdownNotification(OnShutdownFinished onFinished);

Parameters

NameTypeRequiredDescription
onFinishedOnShutdownFinishedN셧다운 알림 발생 시 호출될 콜백. null 을 넘기면 등록을 해제해요

Returns

TypeDescription
void없음

Callback

csharp
public delegate void OnShutdownFinished(CallbackResult result, StovePCShutdown shutdown);
NameTypeDescription
resultCallbackResult알림 결과
shutdownStovePCShutdown셧다운 안내 내용

콜백은 Base_RunCallback() 을 호출한 스레드에서 실행돼요. 셧다운 안내가 발생할 때마다 호출돼요.

Error Codes

CodeNameDescriptionShow to UserIn-Game Message
0SUCCESS성공x
254MANAGED_EXCEPTIONC# 래퍼 내부(마샬링 등)에서 예외가 발생함. result.exceptionMessage 로 확인해요O일시적으로 문제가 발생했습니다. 다시 시도해 주세요. [확인]

발생 가능한 결과 코드는 BaseSDKResultCode 를 참조하세요.

Example

csharp
using static Stove.PCSDK.Base;

void OnShutdownFinished(CallbackResult callbackResult, StovePCShutdown shutdown)
{
    if (callbackResult.result.IsSuccessful())
    {
        // shutdown.shutdownMessage 등으로 안내를 표시하는 로직을 구현해 주세요.
    }
}

Base_ShutdownNotification(OnShutdownFinished);

Notes

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

See Also


Base_UnInitialize

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

Description

게임을 종료하기 전에 반드시 호출해야 해요. 게임 이용 시간을 집계해 서버에 반영하는 처리가 이 함수에서 이루어지므로, 호출하지 않고 프로세스를 내리면 해당 플레이 구간의 이용 시간이 누락돼요.

Base_UnInitialize 는 SDK 를 종료하는 동기 함수예요. 대기 중인 콜백 큐를 폐기 모드로 비운 뒤(등록된 사용자 delegate 는 이 과정에서 호출되지 않음) 콜백 컨테이너를 정리하고 네이티브 종료를 수행해요.

Declaration

csharp
public static Result Base_UnInitialize();

Parameters

없음

Returns

TypeDescription
Result종료 결과. IsSuccessful() 로 성공 여부를 판정해요

Error Codes

CodeNameDescriptionShow to UserIn-Game Message
0SUCCESS성공x
254MANAGED_EXCEPTIONC# 래퍼 내부(마샬링 등)에서 예외가 발생함. exceptionMessage 로 확인해요O일시적으로 문제가 발생했습니다. 다시 시도해 주세요. [확인]

발생 가능한 결과 코드는 BaseSDKResultCode 를 참조하세요.

Example

csharp
using static Stove.PCSDK.Base;

Result result = Base_UnInitialize();

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

Notes

  • 종료 처리 중에는 이미 등록된 콜백이 폐기 모드로 처리되어 사용자 delegate 가 호출되지 않아요. 즉, 종료 직전에 등록한 비동기 API 의 콜백을 기대해서는 안 돼요.
  • 초기화는 Base_Initialize 또는 Base_InitializeEx 와 짝을 이뤄요.
  • 게임 종료 경로가 여러 개라면(정상 종료 · 예외 종료 · 강제 종료 처리) 모든 경로에서 이 함수를 거치도록 두세요. 이용 시간 집계가 이 시점에 정리돼요.

See Also


Base_VietnamAgeRatingNotification

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

Description

Base_VietnamAgeRatingNotification 은 베트남 연령등급 오버레이 표시가 필요할 때 호출될 콜백을 등록하는 함수예요.

이 콜백은 1회성이며, 렌더링이 가능한 시점 이후에 등록해야 해요.

Declaration

csharp
public static void Base_VietnamAgeRatingNotification(OnVietnamAgeRatingFinished onFinished);

Parameters

NameTypeRequiredDescription
onFinishedOnVietnamAgeRatingFinishedN알림 발생 시 호출될 콜백. null 을 넘기면 등록을 해제해요

Returns

TypeDescription
void없음

Callback

csharp
public delegate void OnVietnamAgeRatingFinished(CallbackResult result, StovePCVietnamAgeRatingInfo vietnamAgeRatingInfo);
NameTypeDescription
resultCallbackResult알림 결과
vietnamAgeRatingInfoStovePCVietnamAgeRatingInfo연령등급 오버레이 표시 정보

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

Error Codes

CodeNameDescriptionShow to UserIn-Game Message
0SUCCESS성공x
254MANAGED_EXCEPTIONC# 래퍼 내부(마샬링 등)에서 예외가 발생함. result.exceptionMessage 로 확인해요O일시적으로 문제가 발생했습니다. 다시 시도해 주세요. [확인]

발생 가능한 결과 코드는 BaseSDKResultCode 를 참조하세요.

Example

csharp
using static Stove.PCSDK.Base;

void OnVietnamAgeRatingFinished(CallbackResult callbackResult, StovePCVietnamAgeRatingInfo vietnamAgeRatingInfo)
{
    if (callbackResult.result.IsSuccessful())
    {
        // vietnamAgeRatingInfo 로 오버레이를 그리는 로직을 구현해 주세요.
    }
}

Base_VietnamAgeRatingNotification(OnVietnamAgeRatingFinished);

Notes

  • 이 콜백은 렌더링이 가능한 시점 이후에 등록해야 해요. 초기화 직후처럼 렌더링 준비가 되지 않은 시점에 등록하면 오버레이가 정상적으로 표시되지 않을 수 있어요.
  • 과몰입 알림은 Base_VietnamOverimmersionNotification 로 별도 등록해야 해요.

See Also


Base_VietnamOverimmersionNotification

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

Description

Base_VietnamOverimmersionNotification 은 베트남 과몰입 오버레이 표시가 필요할 때 호출될 콜백을 등록하는 함수예요. onFinished 를 다시 호출하면 이전에 등록된 같은 타입의 콜백은 새 콜백으로 교체돼요.

이 콜백은 1회성이며, 렌더링이 가능한 시점 이후에 등록해야 해요.

Declaration

csharp
public static void Base_VietnamOverimmersionNotification(OnVietnamOverimmersionFinished onFinished);

Parameters

NameTypeRequiredDescription
onFinishedOnVietnamOverimmersionFinishedN알림 발생 시 호출될 콜백. null 을 넘기면 등록을 해제해요

Returns

TypeDescription
void없음

Callback

csharp
public delegate void OnVietnamOverimmersionFinished(CallbackResult result, StovePCVietnamOverimmersionInfo vietnamOverimmersionInfo);
NameTypeDescription
resultCallbackResult알림 결과
vietnamOverimmersionInfoStovePCVietnamOverimmersionInfo과몰입 오버레이 표시 정보

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

Error Codes

CodeNameDescriptionShow to UserIn-Game Message
0SUCCESS성공x
254MANAGED_EXCEPTIONC# 래퍼 내부(마샬링 등)에서 예외가 발생함. result.exceptionMessage 로 확인해요O일시적으로 문제가 발생했습니다. 다시 시도해 주세요. [확인]

발생 가능한 결과 코드는 BaseSDKResultCode 를 참조하세요.

Example

csharp
using static Stove.PCSDK.Base;

void OnVietnamOverimmersionFinished(CallbackResult callbackResult, StovePCVietnamOverimmersionInfo vietnamOverimmersionInfo)
{
    if (callbackResult.result.IsSuccessful())
    {
        // vietnamOverimmersionInfo 로 오버레이를 그리는 로직을 구현해 주세요.
    }
}

Base_VietnamOverimmersionNotification(OnVietnamOverimmersionFinished);

Notes

See Also


BaseSDKMethod

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

Description

BaseSDKMethodResult.methodCodeCallbackResultresult.methodCode 에 담기는 값이에요. C# 래퍼가 관리 예외를 Result / CallbackResult 로 변환할 때 어느 API 호출에서 발생했는지 표시하는 용도로 써요.

값은 성격별로 다음과 같이 나뉘어요.

  • 생명주기: 초기화 · 종료 · 버전 조회
  • 인증/토큰: 액세스 토큰 조회 · 갱신
  • 사용자/게임 정보: 유저 · GDS · 로그인 정보 조회
  • 언어
  • 알림/규제: 과몰입 · 셧다운 · 베트남 규제 알림
  • 로그/진단: 로그 전송, 트레이스 힌트, 게임 프로필
  • 앱 재시작/외부 연결: 런처 재시작, 외부 URL

이 중 INTERNAL_ 접두사가 붙은 값은 SDK 내부 전용이며, 아래 표에서 제외했어요.

INTERNAL_ 접두사가 붙은 값은 내부 전용이므로 아래 표에서 제외했어요. 이 값들은 게임 코드에서 직접 다룰 일이 없어요.

Declaration

csharp
public enum BaseSDKMethod
{
    INITIALIZE = 1,
    UNINITIALIZE = 2,
    // ... 이하 Values 표 참조
    GET_TRANSLATE_LANGUAGE = 119,
};

Enum Values

생명주기

CodeNameDescription
1INITIALIZEBase_Initialize · Base_InitializeEx
2UNINITIALIZEBase_UnInitialize
5GET_VERSIONBase_GetVersion

인증/토큰

CodeNameDescription
64GET_ACCESS_TOKENBase_GetAccessToken
65ACCESS_TOKEN_RENEWEDBase_AccessTokenRenewed
112FORCE_REFRESH_TOKEN대응하는 공개 API 없음 (SDK 내부 전용)
113ACCESS_TOKEN_RENEWED_TO_PRIVATE대응하는 공개 API 없음 (SDK 내부 전용)
114GET_TOKEN_TO_PRIVATE대응하는 공개 API 없음 (SDK 내부 전용)

사용자/게임 정보

CodeNameDescription
66GET_USERBase_GetUser
73GET_GDSBase_GetGds
74GET_SIGNINBase_GetSignin
115GET_ENV_TOKEN_TO_PRIVATE대응하는 공개 API 없음 (SDK 내부 전용)
116GET_GAMEID_TO_PRIVATE대응하는 공개 API 없음 (SDK 내부 전용)
117GET_MEMBERNO_PRIVATE대응하는 공개 API 없음 (SDK 내부 전용)
118GET_PUBLIC_IP대응하는 공개 API 없음 (SDK 내부 전용)

언어

CodeNameDescription
67SET_LANGUAGEBase_SetLanguage · Base_SetLanguageEx
119GET_TRANSLATE_LANGUAGE대응하는 공개 API 없음 (SDK 내부 전용)

알림/규제

CodeNameDescription
68OVER_IMMERSION_NOTIFICATIONBase_OverImmersionNotification
69SHUTDOWN_NOTIFICATIONBase_ShutdownNotification
79VIETNAM_AGE_RATING_NOTIFICATIONBase_VietnamAgeRatingNotification
80VIETNAM_OVER_IMMERSION_NOTIFICATIONBase_VietnamOverimmersionNotification

로그/진단

CodeNameDescription
70LOG_ADDBase_LogAdd (Deprecated) — 현재 공개된 헤더에는 대응하는 함수가 없어요
71GET_TRACE_HINTBase_GetTraceHint
72SET_GAME_PROFILEBase_SetGameProfile

앱 재시작/외부 연결

CodeNameDescription
75RESTART_APP_IF_NECESSARYBase_RestartAppIfNecessary
76RESTART_APP_IF_NECESSARY_ASYNCBase_RestartAppIfNecessaryAsync 계열(Ex, Ex2 포함)
77OPEN_EXTERNAL_URLBase_OpenExternalUrl
78GET_CLOUD_SAVING_PATHBase_GetCloudSavingPath — 스토어인디 전용

미사용 번호

CodeNameDescription
6–63사용하지 않아요 (미사용 번호)
81–95사용하지 않아요 (미사용 번호)

내부 전용 값(INTERNAL_SEND_81PLUG, INTERNAL_UPDATE_81PLUG, INTERNAL_SET_PLAYTIME_REPORT, INTERNAL_OPERATOR_REPORT_PLAYTIME, INTERNAL_GAME_EXIT_REPORT_PLAYTIME, INTERNAL_FILE_SAVE_UNSET_PLAYTIME, INTERNAL_FAILED_PLAYTIME_TRANSFERS, INTERNAL_OPERATOR_REPORT_CONCURRENT_USER, INTERNAL_SERVER_CONFIG, INTERNAL_GDS_INFO, INTERNAL_GAME_CHECKER_LOGIN, INTERNAL_ONSTOVE_LOGIN, INTERNAL_FUNCTION, INTERNAL_RENEW_GUID_TOKEN, INTERNAL_RENEW_TOKEN, INTERNAL_CONVERT_ONLINE_TOKEN, INTERNAL_TRANSLATE_LANGUAGE, INTERNAL_GET_GAMEMETA, 총 18개)은 표에서 제외했어요.

Example

csharp
using static Stove.PCSDK.Base;

// Result.methodCode 는 이 열거형의 값을 uint 로 담고 있습니다.
void CheckMethod(Result result)
{
    if (result.methodCode == Convert.ToUInt32(BaseSDKMethod.INITIALIZE))
    {
        // Base_Initialize / Base_InitializeEx 호출 결과입니다.
    }
}

Notes

  • GET_TOKEN_TO_PRIVATE, GET_ENV_TOKEN_TO_PRIVATE, GET_GAMEID_TO_PRIVATE, GET_MEMBERNO_PRIVATE, GET_PUBLIC_IP, FORCE_REFRESH_TOKEN, ACCESS_TOKEN_RENEWED_TO_PRIVATE, GET_TRANSLATE_LANGUAGE 는 이름에 INTERNAL 이 없지만, BaseAPI.cs 안에서 이 값을 사용하는 공개 Base_ API 가 확인되지 않아요. C++ 원본 헤더(BaseSDKResult.h)의 값 112~119 는 모두 주석으로 "Internal method"라고 명시되어 있어, 대응하는 공개 API 없이 SDK 내부 전용으로 쓰는 값임이 확인돼요.
  • LOG_ADD(70) 도 대응하는 공개 API 가 없어요. C++ 원본 헤더에는 Base_LogAdd (deprecated)로 주석이 남아 있으나, 현재 공개된 헤더 어디에도 Base_LogAdd 함수 선언이 없어요. 하위 호환을 위해 코드 값만 남은 폐기된 API 예요.

See Also


BaseSDKResultCode

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

Description

BaseSDKResultCodeResult.resultCode 에 담기는 값이에요. 0(SUCCESS)이 성공이며, 그 외 값은 실패 원인을 나타내요. Result.IsSuccessful()resultCode == 0 인지를 검사해요.

C# 래퍼 내부에서 예외가 발생하면(마샬링 오류 등) 항상 MANAGED_EXCEPTION(254) 로 채워진 Result 를 돌려줘요.

Declaration

csharp
public enum BaseSDKResultCode
{
    SUCCESS = 0,
    FAIL = 1,
    // ... 이하 Values 표 참조
    IPC_TIMEOUT = 89,
}

Enum Values

성공/일반 오류

CodeNameDescriptionShow to UserIn-Game Message
0SUCCESS성공x
1FAIL일반 실패x
2INVALID_CONFIG설정값이 올바르지 않음 (사용하지 않는 코드)x
3INVALID_LOG_LEVEL로그 레벨 값이 올바르지 않음 (사용하지 않는 코드)x
4INVALID_LOG_PATH로그 경로 값이 올바르지 않음 (사용하지 않는 코드)x
5INVALID_PARAM매개변수 값이 올바르지 않음. 호출부 매개변수를 확인해야 해요x
6–15사용하지 않아요 (미사용 번호)x

초기화 상태

CodeNameDescriptionShow to UserIn-Game Message
16BASE_NOT_INITIALIZEDSDK 가 초기화되지 않음. Base_Initialize 선행 호출이 필요해요x
17NOT_INITIALIZED초기화되지 않음x
18ALREADY_INITIALIZED이미 초기화됨. 중복 초기화 호출을 제거해야 해요x
29ASYNC_OPERATION_IN_PROGRESS비동기 작업이 이미 진행 중. 이전 호출의 콜백을 기다린 뒤 재호출해야 해요x
30BASE_UNINITIALIZEDSDK 가 종료된 상태x

인증/토큰

CodeNameDescriptionShow to UserIn-Game Message
19INVALID_ACCESS_TOKEN액세스 토큰이 올바르지 않음O로그인 세션이 만료되었습니다. 게임 종료 후 다시 실행해 주세요. [확인]
20NULL_TOKEN_ENTITY토큰 엔티티가 없음 (사용하지 않는 코드)x

응답/통신

CodeNameDescriptionShow to UserIn-Game Message
21NULL_ENTITY응답 엔티티가 없음 (사용하지 않는 코드)x
22HTTP_ERRORHTTP 통신 오류O네트워크 연결이 원활하지 않습니다. 네트워크 상태를 확인하고 다시 실행해 주세요. [확인]
23RESPONSE_ERROR응답 처리 오류O네트워크 연결이 원활하지 않습니다. 네트워크 상태를 확인하고 다시 실행해 주세요. [확인]
24RESPONSE_INVALID_CODE응답 코드가 올바르지 않음O네트워크 연결이 원활하지 않습니다. 네트워크 상태를 확인하고 다시 실행해 주세요. [확인]
25RESPONSE_VALUE_IS_NULL응답 값이 없음O네트워크 연결이 원활하지 않습니다. 네트워크 상태를 확인하고 다시 실행해 주세요. [확인]
26RESPONSE_INVALID_VALUE_FORMAT응답 값의 형식이 올바르지 않음O네트워크 연결이 원활하지 않습니다. 네트워크 상태를 확인하고 다시 실행해 주세요. [확인]
249NETWORK_TRANSPORT_ERROR네트워크 전송 오류. externalError 에 HTTP 백엔드의 네이티브 오류 코드(예: WinHTTP 12002/12007/12029)가 담겨요x

81Plug 연동

CodeNameDescriptionShow to UserIn-Game Message
27LOG_81PLUG_ERROR81Plug 로그 처리 오류 (사용하지 않는 코드)x
28UPDATE_81PLUG_FEED_ERROR81Plug 피드 갱신 오류 (사용하지 않는 코드)x

국가/규제

CodeNameDescriptionShow to UserIn-Game Message
31NOT_SUPPORTED_COUNTRY지원하지 않는 국가x

내부 정리 전용

CodeNameDescriptionShow to UserIn-Game Message
33POPUP_NOT_CREATED내부 정리 전용 — 팝업 미생성 종료(onDestroy 전용). 래퍼가 가로채 사용자 콜백을 호출하지 않아요x
32사용하지 않아요 (미사용 번호)x
34–79사용하지 않아요 (미사용 번호)x

언어/GDS

CodeNameDescriptionShow to UserIn-Game Message
80LANGUAGE_NOT_SET언어가 설정되지 않음 (사용하지 않는 코드)x
81EMPTY_TRANSLATED_STRING번역된 문자열이 비어 있음 (사용하지 않는 코드)x
82NOT_FOUND_REQUIRED_INFORMATION필요한 정보를 찾을 수 없음x
83INVALID_GDS_INFOGDS 정보가 올바르지 않음 (사용하지 않는 코드)x

런처 연동

CodeNameDescriptionShow to UserIn-Game Message
84NEED_STOVE_LAUNCHER스토브 런처가 필요함O게임이 스토브 PC 클라이언트를 통해 실행되지 않아 종료됩니다.클라이언트에서 다시 게임을 실행해주세요.클라이언트 미설치 시 스토브 홈페이지에서 설치해주세요.[확인]
85LAUNCHER_FAILED_CREATE_REQUIRED런처 생성에 실패함 (사용하지 않는 코드)x
86RENEW_TOKEN_MAX_RETRY_COUNT_EXCEEDED토큰 갱신 재시도 횟수를 초과함O네트워크 연결이 원활하지 않습니다. 네트워크 상태를 확인하고 다시 실행해 주세요. [확인]
87IPC_CONNECT_FAILED런처와의 IPC 연결에 실패함O게임이 스토브 PC 클라이언트를 통해 실행되지 않아 종료됩니다.클라이언트에서 다시 게임을 실행해주세요.클라이언트 미설치 시 스토브 홈페이지에서 설치해주세요.[확인]
88IPC_AES_KEY_NOT_RECEIVEDIPC AES 키를 받지 못함O게임이 스토브 PC 클라이언트를 통해 실행되지 않아 종료됩니다.클라이언트에서 다시 게임을 실행해주세요.클라이언트 미설치 시 스토브 홈페이지에서 설치해주세요.[확인]
89IPC_TIMEOUTIPC 응답 시간 초과O게임이 스토브 PC 클라이언트를 통해 실행되지 않아 종료됩니다.클라이언트에서 다시 게임을 실행해주세요.클라이언트 미설치 시 스토브 홈페이지에서 설치해주세요.[확인]
90–248사용하지 않아요 (미사용 번호)x

C# 래퍼 전용

CodeNameDescriptionShow to UserIn-Game Message
250JSON_EXCEPTIONJSON 처리 중 예외 발생O네트워크 연결이 원활하지 않습니다. 네트워크 상태를 확인하고 다시 실행해 주세요. [확인]
251PCSDK_DLL_NOT_FOUND네이티브 PCSDK DLL 을 찾지 못함 (사용하지 않는 코드)x
252NOT_IMPLEMENTED구현되지 않은 기능 (사용하지 않는 코드)x
253UNMANAGED_EXCEPTION네이티브(비관리) 예외 발생O일시적으로 문제가 발생했습니다. 다시 시도해 주세요. [확인]
254MANAGED_EXCEPTIONC# 래퍼 내부(마샬링 등)에서 예외 발생O일시적으로 문제가 발생했습니다. 다시 시도해 주세요. [확인]
255UNKNOWN_ERROR알 수 없는 오류 (사용하지 않는 코드)x

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

  • 19 INVALID_ACCESS_TOKEN — 로그인 세션이 만료되어 게임을 종료하고 다시 실행해야 해요
  • 84 NEED_STOVE_LAUNCHER — 게임 종료 후 재실행이 필요해요
  • 87 IPC_CONNECT_FAILED — 게임 종료 후 재실행이 필요해요
  • 88 IPC_AES_KEY_NOT_RECEIVED — 게임 종료 후 재실행이 필요해요
  • 89 IPC_TIMEOUT — 게임 종료 후 재실행이 필요해요

스토브 PC 클라이언트 없이 게임 실행 파일을 직접 실행하면 87(IPC_CONNECT_FAILED) 또는 89(IPC_TIMEOUT)가 발생해요. 이 경우 게임을 종료해야 하며, 종료되면 스토브 런처가 자동 실행돼요.

Example

csharp
using static Stove.PCSDK.Base;

Result result = Base_SetGameProfile(gameProfile);

if (result.IsSuccessful())
{
    // 성공 시 로직을 구현해 주세요.
}
else if (result.resultCode == Convert.ToUInt32(BaseSDKResultCode.BASE_NOT_INITIALIZED))
{
    // 초기화 선행 호출 로직을 구현해 주세요.
}
else
{
    // 그 외 실패 시 로직을 구현해 주세요.
}

Notes

  • POPUP_NOT_CREATED(33)은 SDK Legacy API 자체보다는 팝업의 내부 정리 경로에서 쓰이며, 사용자 콜백에는 전달되지 않아요.

See Also


CallbackResult

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

Description

CallbackResultBase_Initialize, Base_RestartAppIfNecessaryAsync 등 콜백을 받는 SDK Legacy API 가 콜백 첫 번째 인자로 전달하는 구조체예요. 실제 성공 · 실패 여부는 내부의 result 필드로 판정해요.

Declaration

csharp
public struct CallbackResult
{
    public Result result;
    public string errorMessage;
    public int externalError;
}

Members

NameTypeDescription
resultResult결과 코드를 담은 구조체. 소문자 필드예요
errorMessagestring오류 메시지
externalErrorint외부(네이티브 전송 계층 등) 오류 코드. 예: BaseSDKResultCode.NETWORK_TRANSPORT_ERROR(249)일 때 WinHTTP 네이티브 오류 코드가 담겨요

Example

csharp
using static Stove.PCSDK.Base;

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

Notes

  • 결과 확인은 callbackResult.result.IsSuccessful() 이에요. result 는 소문자 필드이며, IsSuccessful() 은 메서드예요.
  • 신규 C# 인터페이스(Stove.PCSDK.V3)의 IStoveCallbackResultResult 프로퍼티(대문자 시작)를 쓰므로 구 인터페이스와 표기가 달라요.

See Also


DiscountType

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

Description

StovePCProduct.discountType / StovePCProductEx.discountType 필드에 담겨, 상품이 할인 중일 때(isDiscount == true) 할인 방식이 정률(비율)인지 정액(고정 금액)인지를 나타내요.

Declaration

csharp
public enum DiscountType
{
    NONE = 0,
    FIXED_RATE = 1,
    FLAT_RATE,
};

Enum Values

CodeNameDescription
0NONE할인이 적용되지 않았어요
1FIXED_RATE정률(비율) 할인이에요
2FLAT_RATE정액(고정 금액) 할인이에요

Example

csharp
using static Stove.PCSDK.IAP;

void CheckDiscount(StovePCProduct product)
{
    if (product.isDiscount && product.discountType == DiscountType.FIXED_RATE)
    {
        // 정률 할인 표시 로직을 구현해 주세요. discountTypeValue 가 할인율입니다.
    }
}

Notes

  • discountTypeValue 필드와 함께 사용돼요. FIXED_RATE이면 비율(%), FLAT_RATE이면 고정 금액을 의미해요.

See Also


IAP_CloseAllPopups

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

Description

결제 기능이 띄운 웹뷰 팝업(구매, 결제, 약관 동의, 게임 탈퇴 등)이 열려 있다면 모두 닫아요.

IAP_Initialize 이후에 호출해야 해요.

Declaration

csharp
public static Result IAP_CloseAllPopups()

Parameters

없음

Returns

TypeDescription
Result호출 결과예요. result.IsSuccessful()로 성공 여부를 확인해요.

Error Codes

Result.methodCode 값은 Convert.ToUInt32(IAPSDKMethod.CLOSE_ALL_POPUPS)이에요.

CodeNameDescriptionShow to UserIn-Game Message
0SUCCESS성공x
17NOT_INITIALIZEDIAP가 초기화되어 있지 않음x
80VIEWUI_NOT_INITIALIZED닫을 팝업의 웹뷰가 초기화되어 있지 않음x
89WEBVIEW_CLOSE_ALL_FAIL열려 있는 팝업을 모두 닫는 데 실패함x
253UNMANAGED_EXCEPTION네이티브 SDK 내부에서 예외가 발생함O일시적으로 문제가 발생했습니다. 다시 시도해 주세요. [확인]
254MANAGED_EXCEPTIONC# 래퍼 내부(마샬링 등)에서 예외가 발생함. Result.exceptionMessage 를 확인해야 해요O일시적으로 문제가 발생했습니다. 다시 시도해 주세요. [확인]

전체 목록은 IAPSDKResultCode 를 참조하세요.

Example

csharp
using static Stove.PCSDK.IAP;

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

Notes

  • 이 함수는 동기 함수이며 콜백을 받지 않아요.
  • 게임 종료 등으로 열려 있는 팝업을 한 번에 정리해야 할 때 사용해요.

See Also


IAP_ConfirmPurchase

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

Description

transactionMasterNo로 지정한 거래의 구매를 확인 처리해요. IAP_StartPurchase / IAP_StartPurchaseEx의 콜백으로 전달받은 StovePCPurchaseResult.transactionMasterNumber를 전달해요.

IAP_Initialize 이후에 호출해야 해요.

Declaration

csharp
public static void IAP_ConfirmPurchase(long transactionMasterNo, OnConfirmPurchaseFinished onFinished)

Parameters

NameTypeRequiredDescription
transactionMasterNolongY확인 처리할 거래의 마스터 번호예요.
onFinishedOnConfirmPurchaseFinishedY확인 처리 결과를 받을 콜백이에요.

Returns

없음

Callback

csharp
public delegate void OnConfirmPurchaseFinished(CallbackResult callbackResult, bool status, StovePCPurchasedProduct[] purchasedProducts, StovePCChargeInfo[] chargeInfos);
NameTypeDescription
callbackResultCallbackResult호출 결과예요. callbackResult.result.IsSuccessful()로 성공 여부를 확인해요.
statusbool확인 처리 상태예요.
purchasedProductsStovePCPurchasedProduct[]실제로 지급된 상품 목록이에요.
chargeInfosStovePCChargeInfo[]구매 대가로 차감된 재화 내역이에요.

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

Error Codes

CallbackResult.result.methodCode 값은 Convert.ToUInt32(IAPSDKMethod.CONFIRM_PURCHASE)예요.

CodeNameDescriptionShow to UserIn-Game Message
0SUCCESS성공x
17NOT_INITIALIZEDIAP가 초기화되어 있지 않음. IAP_Initialize를 먼저 호출해야 해요x
21NULL_ENTITY언어 설정 정보를 확인할 수 없어 요청을 처리할 수 없음x
253UNMANAGED_EXCEPTION네이티브 SDK 내부에서 예외가 발생함O일시적으로 문제가 발생했습니다. 다시 시도해 주세요. [확인]
254MANAGED_EXCEPTIONC# 래퍼 내부(마샬링 등)에서 예외가 발생함. CallbackResult.result.exceptionMessage 를 확인해야 해요O일시적으로 문제가 발생했습니다. 다시 시도해 주세요. [확인]

전체 목록은 IAPSDKResultCode 를 참조하세요.

Example

csharp
using static Stove.PCSDK.IAP;

IAP_ConfirmPurchase(transactionMasterNumber, OnConfirmPurchaseFinished);

void OnConfirmPurchaseFinished(CallbackResult callbackResult, bool status, StovePCPurchasedProduct[] purchasedProducts, StovePCChargeInfo[] chargeInfos)
{
    if (callbackResult.result.IsSuccessful())
    {
        // 성공 시 로직을 구현해 주세요.
    }
    else
    {
        // 실패 시 로직을 구현해 주세요.
    }
}

Notes

  • transactionMasterNoIAP_StartPurchase 계열 API의 콜백 결과에서 얻어요.
  • Base_RunCallback()을 게임 루프에서 반복 호출해야 콜백이 전달돼요.

See Also


IAP_FetchInventory

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

Description

사용자가 보유한 인벤토리 아이템 목록을 조회해요.

IAP_Initialize 이후에 호출해야 해요.

Declaration

csharp
public static void IAP_FetchInventory(OnFetchInventoryFinished onFinished)

Parameters

NameTypeRequiredDescription
onFinishedOnFetchInventoryFinishedY조회 결과를 받을 콜백이에요.

Returns

없음

Callback

csharp
public delegate void OnFetchInventoryFinished(CallbackResult callbackResult, StovePCInventoryItem[] inventoryItems);
NameTypeDescription
callbackResultCallbackResult호출 결과예요. callbackResult.result.IsSuccessful()로 성공 여부를 확인해요.
inventoryItemsStovePCInventoryItem[]조회된 인벤토리 아이템 목록이에요.

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

Error Codes

CallbackResult.result.methodCode 값은 Convert.ToUInt32(IAPSDKMethod.FETCH_INVENTORY)예요.

CodeNameDescriptionShow to UserIn-Game Message
0SUCCESS성공x
17NOT_INITIALIZEDIAP가 초기화되어 있지 않음. IAP_Initialize를 먼저 호출해야 해요x
253UNMANAGED_EXCEPTION네이티브 SDK 내부에서 예외가 발생함O일시적으로 문제가 발생했습니다. 다시 시도해 주세요. [확인]
254MANAGED_EXCEPTIONC# 래퍼 내부(마샬링 등)에서 예외가 발생함. CallbackResult.result.exceptionMessage 를 확인해야 해요O일시적으로 문제가 발생했습니다. 다시 시도해 주세요. [확인]

전체 목록은 IAPSDKResultCode 를 참조하세요.

Example

csharp
using static Stove.PCSDK.IAP;

IAP_FetchInventory(OnFetchInventoryFinished);

void OnFetchInventoryFinished(CallbackResult callbackResult, StovePCInventoryItem[] inventoryItems)
{
    if (callbackResult.result.IsSuccessful())
    {
        // 성공 시 로직을 구현해 주세요.
    }
    else
    {
        // 실패 시 로직을 구현해 주세요.
    }
}

Notes

  • Base_RunCallback()을 게임 루프에서 반복 호출해야 콜백이 전달돼요.

See Also


IAP_FetchProducts

종류 함수 · 모듈 IAP · 버전 3.0.0.4 · 폐기 예정

Description

이 기본형은 사용하지 않아요. 대신 IAP_FetchProductsEx 를 사용하세요.

productParam으로 지정한 카테고리·페이지 범위의 상품 목록을 조회해요.

IAP_Initialize 이후에 호출해야 해요.

Declaration

csharp
public static void IAP_FetchProducts(StovePCFetchProductParam productParam, OnFetchProductsFinished onFinished)

Parameters

NameTypeRequiredDescription
productParamStovePCFetchProductParamY조회할 카테고리·페이지 조건이에요.
onFinishedOnFetchProductsFinishedY조회 결과를 받을 콜백이에요.

Returns

없음

Callback

csharp
public delegate void OnFetchProductsFinished(CallbackResult callbackResult, StovePCProduct[] products);
NameTypeDescription
callbackResultCallbackResult호출 결과예요. callbackResult.result.IsSuccessful()로 성공 여부를 확인해요.
productsStovePCProduct[]조회된 상품 목록이에요.

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

Error Codes

CallbackResult.result.methodCode 값은 Convert.ToUInt32(IAPSDKMethod.FETCH_PRODUCTS)이에요.

CodeNameDescriptionShow to UserIn-Game Message
0SUCCESS성공x
17NOT_INITIALIZEDIAP가 초기화되어 있지 않음. IAP_Initialize를 먼저 호출해야 해요x
253UNMANAGED_EXCEPTION네이티브 SDK 내부에서 예외가 발생함O일시적으로 문제가 발생했습니다. 다시 시도해 주세요. [확인]
254MANAGED_EXCEPTIONC# 래퍼 내부(마샬링 등)에서 예외가 발생함. CallbackResult.result.exceptionMessage 를 확인해야 해요O일시적으로 문제가 발생했습니다. 다시 시도해 주세요. [확인]

전체 목록은 IAPSDKResultCode 를 참조하세요.

Example

csharp
using static Stove.PCSDK.IAP;

StovePCFetchProductParam param = new StovePCFetchProductParam();
param.categoryId = "YOUR_CATEGORY_ID";
param.pageNumber = 1;
param.pageSize = 20;

IAP_FetchProducts(param, OnFetchProductsFinished);

void OnFetchProductsFinished(CallbackResult callbackResult, StovePCProduct[] products)
{
    if (callbackResult.result.IsSuccessful())
    {
        // 성공 시 로직을 구현해 주세요.
    }
    else
    {
        // 실패 시 로직을 구현해 주세요.
    }
}

Notes

  • 실제 연동에는 항상 IAP_FetchProductsEx를 사용하세요. 구매 가능 여부 코드(purchaseAvailabilityCode)도 Ex 변형에서만 받을 수 있어요.
  • Base_RunCallback()을 게임 루프에서 반복 호출해야 콜백이 전달돼요.

See Also


IAP_FetchProductsEx

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

Description

IAP_FetchProducts와 입력 파라미터(productParam)는 동일하지만, 조회 결과로 purchaseAvailabilityCode 필드가 추가된 StovePCProductEx[]를 돌려줘요. StovePCProduct[]를 돌려주는 IAP_FetchProducts와는 반환 타입만 달라요.

IAP_Initialize 이후에 호출해야 해요.

Declaration

csharp
public static void IAP_FetchProductsEx(StovePCFetchProductParam productParam, OnFetchProductsExFinished onFinished)

Parameters

NameTypeRequiredDescription
productParamStovePCFetchProductParamY조회할 카테고리·페이지 조건이에요.
onFinishedOnFetchProductsExFinishedY조회 결과를 받을 콜백이에요.

Returns

없음

Callback

csharp
public delegate void OnFetchProductsExFinished(CallbackResult callbackResult, StovePCProductEx[] products);
NameTypeDescription
callbackResultCallbackResult호출 결과예요. callbackResult.result.IsSuccessful()로 성공 여부를 확인해요.
productsStovePCProductEx[]조회된 상품 목록이에요.

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

Error Codes

CallbackResult.result.methodCode 값은 Convert.ToUInt32(IAPSDKMethod.FETCH_PRODUCTS)이에요.

CodeNameDescriptionShow to UserIn-Game Message
0SUCCESS성공x
17NOT_INITIALIZEDIAP가 초기화되어 있지 않음. IAP_Initialize를 먼저 호출해야 해요x
253UNMANAGED_EXCEPTION네이티브 SDK 내부에서 예외가 발생함O일시적으로 문제가 발생했습니다. 다시 시도해 주세요. [확인]
254MANAGED_EXCEPTIONC# 래퍼 내부(마샬링 등)에서 예외가 발생함. CallbackResult.result.exceptionMessage 를 확인해야 해요O일시적으로 문제가 발생했습니다. 다시 시도해 주세요. [확인]

전체 목록은 IAPSDKResultCode 를 참조하세요.

Example

csharp
using static Stove.PCSDK.IAP;

StovePCFetchProductParam param = new StovePCFetchProductParam();
param.categoryId = "YOUR_CATEGORY_ID";
param.pageNumber = 1;
param.pageSize = 20;

IAP_FetchProductsEx(param, OnFetchProductsExFinished);

void OnFetchProductsExFinished(CallbackResult callbackResult, StovePCProductEx[] products)
{
    if (callbackResult.result.IsSuccessful())
    {
        // 성공 시 로직을 구현해 주세요.
    }
    else
    {
        // 실패 시 로직을 구현해 주세요.
    }
}

Notes

  • purchaseAvailabilityCode가 필요하지 않다면 IAP_FetchProducts를 사용해요.
  • Base_RunCallback()을 게임 루프에서 반복 호출해야 콜백이 전달돼요.

See Also


IAP_FetchShopCategories

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

Description

상점에 등록된 카테고리 목록을 조회해요. 조회한 카테고리 ID는 IAP_FetchProducts / IAP_FetchProductsExStovePCFetchProductParam.categoryId에 사용해요.

IAP_Initialize 이후에 호출해야 해요.

Declaration

csharp
public static void IAP_FetchShopCategories(OnFetchShopCategoriesFinished onFinished)

Parameters

NameTypeRequiredDescription
onFinishedOnFetchShopCategoriesFinishedY조회 결과를 받을 콜백이에요.

Returns

없음

Callback

csharp
public delegate void OnFetchShopCategoriesFinished(CallbackResult callbackResult, StovePCShopCategory[] shopCategories);
NameTypeDescription
callbackResultCallbackResult호출 결과예요. callbackResult.result.IsSuccessful()로 성공 여부를 확인해요.
shopCategoriesStovePCShopCategory[]조회된 카테고리 목록이에요.

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

Error Codes

CallbackResult.result.methodCode 값은 Convert.ToUInt32(IAPSDKMethod.FETCH_SHOP_CATEGORIES)이에요.

CodeNameDescriptionShow to UserIn-Game Message
0SUCCESS성공x
17NOT_INITIALIZEDIAP가 초기화되어 있지 않음. IAP_Initialize를 먼저 호출해야 해요x
253UNMANAGED_EXCEPTION네이티브 SDK 내부에서 예외가 발생함O일시적으로 문제가 발생했습니다. 다시 시도해 주세요. [확인]
254MANAGED_EXCEPTIONC# 래퍼 내부(마샬링 등)에서 예외가 발생함. CallbackResult.result.exceptionMessage 를 확인해야 해요O일시적으로 문제가 발생했습니다. 다시 시도해 주세요. [확인]

전체 목록은 IAPSDKResultCode 를 참조하세요.

Example

csharp
using static Stove.PCSDK.IAP;

IAP_FetchShopCategories(OnFetchShopCategoriesFinished);

void OnFetchShopCategoriesFinished(CallbackResult callbackResult, StovePCShopCategory[] shopCategories)
{
    if (callbackResult.result.IsSuccessful())
    {
        // 성공 시 로직을 구현해 주세요.
    }
    else
    {
        // 실패 시 로직을 구현해 주세요.
    }
}

Notes

  • Base_RunCallback()을 게임 루프에서 반복 호출해야 콜백이 전달돼요.

See Also


IAP_FetchTermsAgreement

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

Description

사용자의 약관 동의 여부를 조회해요. option의 동작 방식에 따라 약관 동의 웹뷰 팝업이 표시될 수 있어요.

IAP_Initialize 이후에 호출해야 해요.

Declaration

csharp
public static void IAP_FetchTermsAgreement(StovePCTermsOption option, OnFetchTermsAgreementFinished onFinished)

Parameters

NameTypeRequiredDescription
optionStovePCTermsOptionY약관 동의 팝업의 동작 방식과 위치·크기예요.
onFinishedOnFetchTermsAgreementFinishedY조회 결과를 받을 콜백이에요.

Returns

없음

Callback

csharp
public delegate void OnFetchTermsAgreementFinished(CallbackResult callbackResult, bool agreed, string url);
NameTypeDescription
callbackResultCallbackResult호출 결과예요. callbackResult.result.IsSuccessful()로 성공 여부를 확인해요.
agreedbool약관에 동의했는지 여부예요.
urlstring약관 동의 웹뷰의 URL이에요.

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

Error Codes

CallbackResult.result.methodCode 값은 Convert.ToUInt32(IAPSDKMethod.FETCH_TERMS_AGREEMENT)예요.

CodeNameDescriptionShow to UserIn-Game Message
0SUCCESS성공x
17NOT_INITIALIZEDIAP가 초기화되어 있지 않음. IAP_Initialize를 먼저 호출해야 해요x
80VIEWUI_NOT_INITIALIZED약관 동의 팝업을 표시할 웹뷰 초기화에 실패함x
82WEBVIEW_CREATE_FAIL약관 동의 팝업 웹뷰 생성에 실패함x
83WEBVIEW_LOAD_URL_FAIL약관 동의 팝업 웹뷰에서 페이지를 불러오지 못함x
87WEBVIEW_CREATE_COOKIE_FAIL약관 동의 화면의 호스트 주소를 찾지 못했어요O구매를 위해서는 약관 동의가 필요합니다. 현재 약관 동의 화면을 불러오지 못했습니다. 다시 시도해 주세요. [확인]
89WEBVIEW_CLOSE_ALL_FAIL기존에 열려 있던 팝업을 모두 닫는 데 실패함x
253UNMANAGED_EXCEPTION네이티브 SDK 내부에서 예외가 발생함O일시적으로 문제가 발생했습니다. 다시 시도해 주세요. [확인]
254MANAGED_EXCEPTIONC# 래퍼 내부(마샬링 등)에서 예외가 발생함. CallbackResult.result.exceptionMessage 를 확인해야 해요O일시적으로 문제가 발생했습니다. 다시 시도해 주세요. [확인]

전체 목록은 IAPSDKResultCode 를 참조하세요.

Example

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

StovePCTermsOption option = new StovePCTermsOption();
option.operation = StovePCTermsOperation.WITH_WEBVIEW;
option.webviewMode = WebViewMode.INTERNAL;
option.webviewWidth = 800;
option.webviewHeight = 600;

IAP_FetchTermsAgreement(option, OnFetchTermsAgreementFinished);

void OnFetchTermsAgreementFinished(CallbackResult callbackResult, bool agreed, string url)
{
    if (callbackResult.result.IsSuccessful())
    {
        // 성공 시 로직을 구현해 주세요.
    }
    else
    {
        // 실패 시 로직을 구현해 주세요.
    }
}

Notes

  • 팝업이 닫힐 때(destroy)를 별도로 감지해야 한다면 IAP_FetchTermsAgreementEx를 사용해요.
  • Base_RunCallback()을 게임 루프에서 반복 호출해야 콜백이 전달돼요.

See Also


IAP_FetchTermsAgreementEx

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

Description

IAP_FetchTermsAgreement와 동일하게 약관 동의 여부를 조회하지만, 약관 동의 팝업이 닫힐 때 호출되는 onDestroy 콜백을 추가로 받아요. 나머지 파라미터와 결과 콜백(onFinished)은 IAP_FetchTermsAgreement와 동일해요.

IAP_Initialize 이후에 호출해야 해요.

Declaration

csharp
public static void IAP_FetchTermsAgreementEx(StovePCTermsOption option, OnFetchTermsAgreementFinished onFinished, OnIAPPopupDestroyFinished onDestroy)

Parameters

NameTypeRequiredDescription
optionStovePCTermsOptionY약관 동의 팝업의 동작 방식과 위치·크기예요.
onFinishedOnFetchTermsAgreementFinishedY조회 결과를 받을 콜백이에요.
onDestroyOnIAPPopupDestroyFinishedN약관 동의 팝업이 닫힐 때 호출되는 콜백이에요.

Returns

없음

Callback

csharp
public delegate void OnFetchTermsAgreementFinished(CallbackResult callbackResult, bool agreed, string url);
public delegate void OnIAPPopupDestroyFinished(CallbackResult callbackResult);
NameTypeDescription
callbackResultCallbackResult호출 결과예요. callbackResult.result.IsSuccessful()로 성공 여부를 확인해요.
agreedboolonFinished로 전달되는 약관 동의 여부예요.
urlstringonFinished로 전달되는 약관 동의 웹뷰의 URL이에요.

두 콜백 모두 Base_RunCallback()을 호출한 스레드에서 실행돼요. onFinished는 조회가 끝나면, onDestroy는 약관 동의 팝업이 닫히면 각각 호출돼요.

Error Codes

CallbackResult.result.methodCode 값은 Convert.ToUInt32(IAPSDKMethod.FETCH_TERMS_AGREEMENT)예요.

CodeNameDescriptionShow to UserIn-Game Message
0SUCCESS성공x
17NOT_INITIALIZEDIAP가 초기화되어 있지 않음. IAP_Initialize를 먼저 호출해야 해요x
80VIEWUI_NOT_INITIALIZED약관 동의 팝업을 표시할 웹뷰 초기화에 실패함x
82WEBVIEW_CREATE_FAIL약관 동의 팝업 웹뷰 생성에 실패함x
83WEBVIEW_LOAD_URL_FAIL약관 동의 팝업 웹뷰에서 페이지를 불러오지 못함x
87WEBVIEW_CREATE_COOKIE_FAIL약관 동의 화면의 호스트 주소를 찾지 못했어요O구매를 위해서는 약관 동의가 필요합니다. 현재 약관 동의 화면을 불러오지 못했습니다. 다시 시도해 주세요. [확인]
89WEBVIEW_CLOSE_ALL_FAIL기존에 열려 있던 팝업을 모두 닫는 데 실패함x
90WEBVIEW_CLOSE_FAIL팝업을 닫는 데 실패함(onDestroy 콜백으로 전달됨)x
253UNMANAGED_EXCEPTION네이티브 SDK 내부에서 예외가 발생함O일시적으로 문제가 발생했습니다. 다시 시도해 주세요. [확인]
254MANAGED_EXCEPTIONC# 래퍼 내부(마샬링 등)에서 예외가 발생함. CallbackResult.result.exceptionMessage 를 확인해야 해요O일시적으로 문제가 발생했습니다. 다시 시도해 주세요. [확인]

전체 목록은 IAPSDKResultCode 를 참조하세요.

Example

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

StovePCTermsOption option = new StovePCTermsOption();
option.operation = StovePCTermsOperation.WITH_WEBVIEW;
option.webviewMode = WebViewMode.INTERNAL;
option.webviewWidth = 800;
option.webviewHeight = 600;

IAP_FetchTermsAgreementEx(option, OnFetchTermsAgreementFinished, OnIAPPopupDestroyFinished);

void OnFetchTermsAgreementFinished(CallbackResult callbackResult, bool agreed, string url)
{
    if (callbackResult.result.IsSuccessful())
    {
        // 성공 시 로직을 구현해 주세요.
    }
    else
    {
        // 실패 시 로직을 구현해 주세요.
    }
}

void OnIAPPopupDestroyFinished(CallbackResult callbackResult)
{
    // 약관 동의 팝업이 닫혔을 때의 로직을 구현해 주세요.
}

Notes

  • 팝업 종료 감지가 필요하지 않다면 IAP_FetchTermsAgreement를 사용해요.
  • Base_RunCallback()을 게임 루프에서 반복 호출해야 콜백이 전달돼요.

See Also


IAP_FetchVoidedPurchases

종류 함수 · 모듈 IAP · 버전 3.0.0.4 · 폐기 예정

Description

환불 조회 기능은 폐기(deprecated)된 기능이에요. 신규 인터페이스에서는 제공하지 않아요. 기존 인터페이스에서만 계속 제공돼요.

마켓에서 취소(환불) 처리된 구매 내역 목록을 조회해요.

IAP_Initialize 이후에 호출해야 해요.

Declaration

csharp
public static void IAP_FetchVoidedPurchases(OnFetchVoidedPurchasesFinished onFinished)

Parameters

NameTypeRequiredDescription
onFinishedOnFetchVoidedPurchasesFinishedY조회 결과를 받을 콜백이에요.

Returns

없음

Callback

csharp
public delegate void OnFetchVoidedPurchasesFinished(CallbackResult callbackResult, StovePCVoidedPurchase[] voidedPurchase);
NameTypeDescription
callbackResultCallbackResult호출 결과예요. callbackResult.result.IsSuccessful()로 성공 여부를 확인해요.
voidedPurchaseStovePCVoidedPurchase[]취소된 구매 내역 목록이에요.

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

Error Codes

CallbackResult.result.methodCode 값은 Convert.ToUInt32(IAPSDKMethod.FETCH_VOIDED_PURCHASES)이에요.

CodeNameDescriptionShow to UserIn-Game Message
0SUCCESS성공x
17NOT_INITIALIZEDIAP가 초기화되어 있지 않음. IAP_Initialize를 먼저 호출해야 해요x
253UNMANAGED_EXCEPTION네이티브 SDK 내부에서 예외가 발생함O일시적으로 문제가 발생했습니다. 다시 시도해 주세요. [확인]
254MANAGED_EXCEPTIONC# 래퍼 내부(마샬링 등)에서 예외가 발생함. CallbackResult.result.exceptionMessage 를 확인해야 해요O일시적으로 문제가 발생했습니다. 다시 시도해 주세요. [확인]

전체 목록은 IAPSDKResultCode 를 참조하세요.

Example

csharp
using static Stove.PCSDK.IAP;

IAP_FetchVoidedPurchases(OnFetchVoidedPurchasesFinished);

void OnFetchVoidedPurchasesFinished(CallbackResult callbackResult, StovePCVoidedPurchase[] voidedPurchase)
{
    if (callbackResult.result.IsSuccessful())
    {
        // 성공 시 로직을 구현해 주세요.
    }
    else
    {
        // 실패 시 로직을 구현해 주세요.
    }
}

Notes

  • 마켓별로 필터링해서 조회하는 IAP_FetchVoidedPurchasesEx는 현재 SDK 에서 제공하지 않아요.
  • Base_RunCallback()을 게임 루프에서 반복 호출해야 콜백이 전달돼요.

See Also


IAP_FetchVoidedPurchasesEx

종류 함수 · 모듈 IAP · 버전 3.4.1 · 폐기 예정

Description

이 함수는 현재 SDK 에서 제공하지 않아요. 환불 조회 기능 자체도 폐기(deprecated)된 기능이에요.

IAP_FetchVoidedPurchases와 달리 marketType 파라미터로 조회할 마켓을 지정할 수 있고, 조회 결과로 회원 번호·GUID 등 더 많은 필드를 가진 StovePCVoidedPurchasesEx[]를 돌려줘요.

IAP_Initialize 이후에 호출해야 해요.

Declaration

csharp
public static void IAP_FetchVoidedPurchasesEx(StovePCVoidedPurchasesMarketType marketType, OnFetchVoidedPurchasesExFinished onFinished)

Parameters

NameTypeRequiredDescription
marketTypeStovePCVoidedPurchasesMarketTypeY조회할 마켓이에요.
onFinishedOnFetchVoidedPurchasesExFinishedY조회 결과를 받을 콜백이에요.

Returns

없음

Callback

csharp
public delegate void OnFetchVoidedPurchasesExFinished(CallbackResult callbackResult, StovePCVoidedPurchasesEx[] voidedPurchase);
NameTypeDescription
callbackResultCallbackResult호출 결과예요. callbackResult.result.IsSuccessful()로 성공 여부를 확인해요.
voidedPurchaseStovePCVoidedPurchasesEx[]취소된 구매 내역 목록이에요.

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

Error Codes

CallbackResult.result.methodCode 값은 Convert.ToUInt32(IAPSDKMethod.FETCH_VOIDED_PURCHASES)이에요.

CodeNameDescriptionShow to UserIn-Game Message
이 함수는 현재 SDK 에서 제공하지 않아요.

전체 목록은 IAPSDKResultCode 를 참조하세요.

Example

csharp
using static Stove.PCSDK.IAP;

IAP_FetchVoidedPurchasesEx(StovePCVoidedPurchasesMarketType.STEAM, OnFetchVoidedPurchasesExFinished);

void OnFetchVoidedPurchasesExFinished(CallbackResult callbackResult, StovePCVoidedPurchasesEx[] voidedPurchase)
{
    if (callbackResult.result.IsSuccessful())
    {
        // 성공 시 로직을 구현해 주세요.
    }
    else
    {
        // 실패 시 로직을 구현해 주세요.
    }
}

Notes

  • 마켓을 구분하지 않고 조회하려면 marketTypeStovePCVoidedPurchasesMarketType.ALL을 전달해요.
  • Base_RunCallback()을 게임 루프에서 반복 호출해야 콜백이 전달돼요.

See Also


IAP_GetVersion

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

Description

결제 기능 모듈의 버전 문자열을 조회해 version에 채워 돌려줘요.

Declaration

csharp
public static Result IAP_GetVersion(ref string version, uint length)

Parameters

NameTypeRequiredDescription
versionref stringY버전 문자열을 전달받을 참조 변수예요. 호출 후 이 변수에 버전 값이 채워져요.
lengthuintY버전 문자열을 담을 버퍼의 크기(문자 수)예요.

Returns

TypeDescription
Result호출 결과예요. result.IsSuccessful()로 성공 여부를 확인해요.

Error Codes

Result.methodCode 값은 Convert.ToUInt32(IAPSDKMethod.GET_VERSION)이에요.

CodeNameDescriptionShow to UserIn-Game Message
0SUCCESS성공x
5INVALID_PARAMversion 버퍼가 없거나 length가 0, 또는 버퍼 크기가 문자열을 담기에 부족함x
251PCSDK_DLL_NOT_FOUNDSDK 파일 경로를 찾지 못해 버전 조회에 실패함x
253UNMANAGED_EXCEPTION네이티브 SDK 내부에서 예외가 발생함O일시적으로 문제가 발생했습니다. 다시 시도해 주세요. [확인]
254MANAGED_EXCEPTIONC# 래퍼 내부(마샬링 등)에서 예외가 발생함. Result.exceptionMessage 를 확인해야 해요O일시적으로 문제가 발생했습니다. 다시 시도해 주세요. [확인]

이 함수는 실제로는 IAPSDK 자체 버전이 아닌 BaseSDK 통합 버전을 그대로 반환해요. 전체 목록은 IAPSDKResultCode 를 참조하세요.

Example

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

string version = string.Empty;
Result result = IAP_GetVersion(ref version, 64);
if (result.IsSuccessful())
{
    // 성공 시 로직을 구현해 주세요. version 에 버전 문자열이 채워집니다.
}
else
{
    // 실패 시 로직을 구현해 주세요.
}

Notes

  • 이 함수는 동기 함수이며 콜백을 받지 않아요.
  • lengthversion에 채워질 문자열을 담을 만큼 충분히 지정해야 해요.

See Also


IAP_Initialize

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

Description

결제 기능을 사용하기 전에 호출해 상점 키(Shop Key)로 모듈을 초기화해요.

구 인터페이스에서는 SDK 뿐 아니라 결제 기능을 포함한 각 모듈을 개별적으로 초기화해야 해요. SDK 초기화 이후에 이 함수를 호출해야 해요.

Declaration

csharp
public static Result IAP_Initialize(string shopKey)

Parameters

NameTypeRequiredDescription
shopKeystringY결제 기능 초기화에 사용하는 상점 키예요.

Returns

TypeDescription
Result호출 결과예요. result.IsSuccessful()로 성공 여부를 확인해요.

Error Codes

Result.methodCode 값은 Convert.ToUInt32(IAPSDKMethod.INITIALIZE)예요.

CodeNameDescriptionShow to UserIn-Game Message
0SUCCESS성공x
16BASE_NOT_INITIALIZEDBaseSDK가 초기화되지 않음. Base_Initialize를 먼저 호출해야 해요x
18ALREADY_INITIALIZEDIAP가 이미 초기화되어 있음x
80VIEWUI_NOT_INITIALIZED결제 팝업을 표시할 웹뷰 초기화에 실패함x
251PCSDK_DLL_NOT_FOUNDSDK 파일 경로를 찾지 못해 버전 확인에 실패함x
253UNMANAGED_EXCEPTION네이티브 SDK 내부에서 예외가 발생함O일시적으로 문제가 발생했습니다. 다시 시도해 주세요. [확인]
254MANAGED_EXCEPTIONC# 래퍼 내부(마샬링 등)에서 예외가 발생함. Result.exceptionMessage 를 확인해야 해요O일시적으로 문제가 발생했습니다. 다시 시도해 주세요. [확인]

전체 목록은 IAPSDKResultCode 를 참조하세요.

Example

csharp
using static Stove.PCSDK.IAP;

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

Notes

  • 이 함수는 동기 함수이며 콜백을 받지 않아요.
  • 메인 윈도우 핸들을 함께 전달하려면 IAP_InitializeWithWndInfo를 사용해요.
  • 종료 시에는 반드시 IAP_UnInitialize를 호출해야 해요.

See Also


IAP_InitializeWithWndInfo

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

Description

IAP_Initialize와 동일하게 결제 기능을 초기화하지만, 추가로 mainWndHandle 파라미터로 메인 윈도우의 핸들을 함께 전달해요.

구 인터페이스에서는 SDK 뿐 아니라 결제 기능을 포함한 각 모듈을 개별적으로 초기화해야 해요. SDK 초기화 이후에 이 함수를 호출해야 해요.

Declaration

csharp
public static Result IAP_InitializeWithWndInfo(string shopKey, IntPtr mainWndHandle)

Parameters

NameTypeRequiredDescription
shopKeystringY결제 기능 초기화에 사용하는 상점 키예요.
mainWndHandleIntPtrY메인 윈도우의 핸들이에요.

Returns

TypeDescription
Result호출 결과예요. result.IsSuccessful()로 성공 여부를 확인해요.

Error Codes

Result.methodCode 값은 Convert.ToUInt32(IAPSDKMethod.INITIALIZE)예요.

CodeNameDescriptionShow to UserIn-Game Message
0SUCCESS성공x
16BASE_NOT_INITIALIZEDBaseSDK가 초기화되지 않음. Base_Initialize를 먼저 호출해야 해요x
18ALREADY_INITIALIZEDIAP가 이미 초기화되어 있음x
80VIEWUI_NOT_INITIALIZED결제 팝업을 표시할 웹뷰 초기화에 실패함x
251PCSDK_DLL_NOT_FOUNDSDK 파일 경로를 찾지 못해 버전 확인에 실패함x
253UNMANAGED_EXCEPTION네이티브 SDK 내부에서 예외가 발생함O일시적으로 문제가 발생했습니다. 다시 시도해 주세요. [확인]
254MANAGED_EXCEPTIONC# 래퍼 내부(마샬링 등)에서 예외가 발생함. Result.exceptionMessage 를 확인해야 해요O일시적으로 문제가 발생했습니다. 다시 시도해 주세요. [확인]

전체 목록은 IAPSDKResultCode 를 참조하세요.

Example

csharp
using static Stove.PCSDK.IAP;

Result result = IAP_InitializeWithWndInfo("YOUR_SHOP_KEY", mainWindowHandle);
if (result.IsSuccessful())
{
    // 성공 시 로직을 구현해 주세요.
}
else
{
    // 실패 시 로직을 구현해 주세요.
}

Notes

  • 이 함수는 동기 함수이며 콜백을 받지 않아요.
  • 메인 윈도우 핸들이 필요하지 않다면 IAP_Initialize를 사용해요.
  • 종료 시에는 반드시 IAP_UnInitialize를 호출해야 해요.

See Also


IAP_StartPayment

종류 함수 · 모듈 IAP · 버전 3.0.0.4 · 폐기 예정

Description

폐기(deprecated)된 기능이에요. 대신 IAP_StartPurchase 를 사용하세요.

option으로 지정한 방식으로 결제를 요청해요. 동작 방식에 따라 결제 웹뷰 팝업이 표시될 수 있어요.

IAP_Initialize 이후에 호출해야 해요.

Declaration

csharp
public static void IAP_StartPayment(StovePCPaymentOption option, OnStartPaymentFinished onFinished)

Parameters

NameTypeRequiredDescription
optionStovePCPaymentOptionY결제 팝업의 동작 방식과 위치·크기예요.
onFinishedOnStartPaymentFinishedY결제 결과를 받을 콜백이에요.

Returns

없음

Callback

csharp
public delegate void OnStartPaymentFinished(CallbackResult callbackResult, string url);
NameTypeDescription
callbackResultCallbackResult호출 결과예요. callbackResult.result.IsSuccessful()로 성공 여부를 확인해요.
urlstring결제 웹뷰의 URL이에요.

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

Error Codes

CallbackResult.result.methodCode 값은 Convert.ToUInt32(IAPSDKMethod.START_PAYMENT)예요.

CodeNameDescriptionShow to UserIn-Game Message
0SUCCESS성공x
17NOT_INITIALIZEDIAP가 초기화되어 있지 않음. IAP_Initialize를 먼저 호출해야 해요x
80VIEWUI_NOT_INITIALIZED결제 팝업을 표시할 웹뷰 초기화에 실패함x
82WEBVIEW_CREATE_FAIL결제 팝업 웹뷰 생성에 실패함x
83WEBVIEW_LOAD_URL_FAIL결제 팝업 웹뷰에서 페이지를 불러오지 못함x
89WEBVIEW_CLOSE_ALL_FAIL기존에 열려 있던 팝업을 모두 닫는 데 실패함x
253UNMANAGED_EXCEPTION네이티브 SDK 내부에서 예외가 발생함O일시적으로 문제가 발생했습니다. 다시 시도해 주세요. [확인]
254MANAGED_EXCEPTIONC# 래퍼 내부(마샬링 등)에서 예외가 발생함. CallbackResult.result.exceptionMessage 를 확인해야 해요O일시적으로 문제가 발생했습니다. 다시 시도해 주세요. [확인]

전체 목록은 IAPSDKResultCode 를 참조하세요.

Example

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

StovePCPaymentOption option = new StovePCPaymentOption();
option.operation = StovePCPaymentOperation.WITH_WEBVIEW;
option.webviewMode = WebViewMode.INTERNAL;
option.webviewWidth = 800;
option.webviewHeight = 600;

IAP_StartPayment(option, OnStartPaymentFinished);

void OnStartPaymentFinished(CallbackResult callbackResult, string url)
{
    if (callbackResult.result.IsSuccessful())
    {
        // 성공 시 로직을 구현해 주세요.
    }
    else
    {
        // 실패 시 로직을 구현해 주세요.
    }
}

Notes

  • 팝업이 닫힐 때(destroy)를 별도로 감지해야 한다면 IAP_StartPaymentEx를 사용해요.
  • Base_RunCallback()을 게임 루프에서 반복 호출해야 콜백이 전달돼요.

See Also


IAP_StartPaymentEx

종류 함수 · 모듈 IAP · 버전 3.3.4 · 폐기 예정

Description

폐기(deprecated)된 기능이에요. 대신 IAP_StartPurchaseEx 를 사용하세요.

IAP_StartPayment와 동일하게 결제를 요청하지만, 결제 팝업이 닫힐 때 호출되는 onDestroy 콜백을 추가로 받아요. 나머지 파라미터와 결과 콜백(onFinished)은 IAP_StartPayment와 동일해요.

IAP_Initialize 이후에 호출해야 해요.

Declaration

csharp
public static void IAP_StartPaymentEx(StovePCPaymentOption option, OnStartPaymentFinished onFinished, OnIAPPopupDestroyFinished onDestroy)

Parameters

NameTypeRequiredDescription
optionStovePCPaymentOptionY결제 팝업의 동작 방식과 위치·크기예요.
onFinishedOnStartPaymentFinishedY결제 결과를 받을 콜백이에요.
onDestroyOnIAPPopupDestroyFinishedN결제 팝업이 닫힐 때 호출되는 콜백이에요.

Returns

없음

Callback

csharp
public delegate void OnStartPaymentFinished(CallbackResult callbackResult, string url);
public delegate void OnIAPPopupDestroyFinished(CallbackResult callbackResult);
NameTypeDescription
callbackResultCallbackResult호출 결과예요. callbackResult.result.IsSuccessful()로 성공 여부를 확인해요.
urlstringonFinished로 전달되는 결제 웹뷰의 URL이에요.

두 콜백 모두 Base_RunCallback()을 호출한 스레드에서 실행돼요. onFinished는 요청 처리가 끝나면, onDestroy는 결제 팝업이 닫히면 각각 호출돼요.

Error Codes

CallbackResult.result.methodCode 값은 Convert.ToUInt32(IAPSDKMethod.START_PAYMENT)예요.

CodeNameDescriptionShow to UserIn-Game Message
0SUCCESS성공x
17NOT_INITIALIZEDIAP가 초기화되어 있지 않음. IAP_Initialize를 먼저 호출해야 해요x
80VIEWUI_NOT_INITIALIZED결제 팝업을 표시할 웹뷰 초기화에 실패함x
82WEBVIEW_CREATE_FAIL결제 팝업 웹뷰 생성에 실패함x
83WEBVIEW_LOAD_URL_FAIL결제 팝업 웹뷰에서 페이지를 불러오지 못함x
89WEBVIEW_CLOSE_ALL_FAIL기존에 열려 있던 팝업을 모두 닫는 데 실패함x
90WEBVIEW_CLOSE_FAIL팝업을 닫는 데 실패함(onDestroy 콜백으로 전달됨)x
253UNMANAGED_EXCEPTION네이티브 SDK 내부에서 예외가 발생함O일시적으로 문제가 발생했습니다. 다시 시도해 주세요. [확인]
254MANAGED_EXCEPTIONC# 래퍼 내부(마샬링 등)에서 예외가 발생함. CallbackResult.result.exceptionMessage 를 확인해야 해요O일시적으로 문제가 발생했습니다. 다시 시도해 주세요. [확인]

전체 목록은 IAPSDKResultCode 를 참조하세요.

Example

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

StovePCPaymentOption option = new StovePCPaymentOption();
option.operation = StovePCPaymentOperation.WITH_WEBVIEW;
option.webviewMode = WebViewMode.INTERNAL;
option.webviewWidth = 800;
option.webviewHeight = 600;

IAP_StartPaymentEx(option, OnStartPaymentFinished, OnIAPPopupDestroyFinished);

void OnStartPaymentFinished(CallbackResult callbackResult, string url)
{
    if (callbackResult.result.IsSuccessful())
    {
        // 성공 시 로직을 구현해 주세요.
    }
    else
    {
        // 실패 시 로직을 구현해 주세요.
    }
}

void OnIAPPopupDestroyFinished(CallbackResult callbackResult)
{
    // 결제 팝업이 닫혔을 때의 로직을 구현해 주세요.
}

Notes

  • 팝업 종료 감지가 필요하지 않다면 IAP_StartPayment를 사용해요.
  • Base_RunCallback()을 게임 루프에서 반복 호출해야 콜백이 전달돼요.

See Also


IAP_StartPurchase

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

Description

startPurchaseParam에 담긴 상품 목록의 구매를 요청해요. 구매 옵션에 따라 웹뷰 팝업이 표시될 수 있어요.

IAP_Initialize 이후에 호출해야 해요.

Declaration

csharp
public static void IAP_StartPurchase(StovePCStartPurchaseParam startPurchaseParam, OnStartPurchaseFinished onFinished)

Parameters

NameTypeRequiredDescription
startPurchaseParamStovePCStartPurchaseParamY구매할 상품 목록과 팝업 옵션이에요.
onFinishedOnStartPurchaseFinishedY구매 결과를 받을 콜백이에요.

Returns

없음

Callback

csharp
public delegate void OnStartPurchaseFinished(CallbackResult callbackResult, StovePCPurchaseResult purchase);
NameTypeDescription
callbackResultCallbackResult호출 결과예요. callbackResult.result.IsSuccessful()로 성공 여부를 확인해요.
purchaseStovePCPurchaseResult구매 처리 결과예요.

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

Error Codes

CallbackResult.result.methodCode 값은 Convert.ToUInt32(IAPSDKMethod.START_PURCHASE)예요.

CodeNameDescriptionShow to UserIn-Game Message
0SUCCESS성공x
17NOT_INITIALIZEDIAP가 초기화되어 있지 않음. IAP_Initialize를 먼저 호출해야 해요x
80VIEWUI_NOT_INITIALIZED구매 팝업을 표시할 웹뷰 초기화에 실패함x
82WEBVIEW_CREATE_FAIL구매 팝업 웹뷰 생성에 실패함x
83WEBVIEW_LOAD_URL_FAIL구매 팝업 웹뷰에서 페이지를 불러오지 못함x
84WEBVIEW_CLOSED_BEFORE_PURCHASE구매가 완료되기 전에 팝업이 닫힘O구매가 정상적으로 완료되지 않았습니다. 다시 시도해 주세요. [확인]
85PARAMETER_LENGTH_EXCEEDEDserviceTxnNo 또는 extraData의 길이가 허용 범위를 초과함O결제 정보가 유효하지 않아 결제를 진행할 수 없습니다. 다시 시도해 주세요. [확인]
86INVALID_JSON_STRINGextraData가 올바른 JSON 형식이 아님O결제 정보가 유효하지 않아 결제를 진행할 수 없습니다. 다시 시도해 주세요. [확인]
88INVALID_ORDER_PRODUCT_INFORMATION구매 상품 정보(quantity, salePrice 등)가 올바르지 않음O결제 정보가 유효하지 않아 결제를 진행할 수 없습니다. 다시 시도해 주세요. [확인]
89WEBVIEW_CLOSE_ALL_FAIL기존에 열려 있던 팝업을 모두 닫는 데 실패함x
252NOT_IMPLEMENTED구매 옵션(option.operation)에 알 수 없는 값이 지정됨x
253UNMANAGED_EXCEPTION네이티브 SDK 내부에서 예외가 발생함O일시적으로 문제가 발생했습니다. 다시 시도해 주세요. [확인]
254MANAGED_EXCEPTIONC# 래퍼 내부(마샬링 등)에서 예외가 발생함. CallbackResult.result.exceptionMessage 를 확인해야 해요O일시적으로 문제가 발생했습니다. 다시 시도해 주세요. [확인]

전체 목록은 IAPSDKResultCode 를 참조하세요.

Example

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

StovePCOrderProduct orderProduct = new StovePCOrderProduct();
orderProduct.productId = 123456;
orderProduct.salePrice = 1000;
orderProduct.quantity = 1;

StovePCPurchaseOption option = new StovePCPurchaseOption();
option.operation = StovePCPurchaseOperation.WITH_WEBVIEW;
option.webviewMode = WebViewMode.INTERNAL;
option.webviewWidth = 800;
option.webviewHeight = 600;

StovePCStartPurchaseParam purchaseParam = new StovePCStartPurchaseParam();
purchaseParam.products = new StovePCOrderProduct[] { orderProduct };
purchaseParam.productsSize = 1;
purchaseParam.option = option;
purchaseParam.serviceTxnNo = "YOUR_SERVICE_TXN_NO";
purchaseParam.extraData = "";

IAP_StartPurchase(purchaseParam, OnStartPurchaseFinished);

void OnStartPurchaseFinished(CallbackResult callbackResult, StovePCPurchaseResult purchase)
{
    if (callbackResult.result.IsSuccessful())
    {
        // 성공 시 로직을 구현해 주세요.
    }
    else
    {
        // 실패 시 로직을 구현해 주세요.
    }
}

Notes

  • 팝업이 닫힐 때(destroy)를 별도로 감지해야 한다면 IAP_StartPurchaseEx를 사용해요.
  • Base_RunCallback()을 게임 루프에서 반복 호출해야 콜백이 전달돼요.

See Also


IAP_StartPurchaseEx

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

Description

IAP_StartPurchase와 동일하게 구매를 요청하지만, 구매 팝업이 닫힐 때 호출되는 onDestroy 콜백을 추가로 받아요. 나머지 파라미터와 결과 콜백(onFinished)은 IAP_StartPurchase와 동일해요.

IAP_Initialize 이후에 호출해야 해요.

Declaration

csharp
public static void IAP_StartPurchaseEx(StovePCStartPurchaseParam startPurchaseParam, OnStartPurchaseFinished onFinished, OnIAPPopupDestroyFinished onDestroy)

Parameters

NameTypeRequiredDescription
startPurchaseParamStovePCStartPurchaseParamY구매할 상품 목록과 팝업 옵션이에요.
onFinishedOnStartPurchaseFinishedY구매 결과를 받을 콜백이에요.
onDestroyOnIAPPopupDestroyFinishedN구매 팝업이 닫힐 때 호출되는 콜백이에요.

Returns

없음

Callback

csharp
public delegate void OnStartPurchaseFinished(CallbackResult callbackResult, StovePCPurchaseResult purchase);
public delegate void OnIAPPopupDestroyFinished(CallbackResult callbackResult);
NameTypeDescription
callbackResultCallbackResult호출 결과예요. callbackResult.result.IsSuccessful()로 성공 여부를 확인해요.
purchaseStovePCPurchaseResultonFinished로 전달되는 구매 처리 결과예요.

두 콜백 모두 Base_RunCallback()을 호출한 스레드에서 실행돼요. onFinished는 구매 처리가 끝나면, onDestroy는 구매 팝업이 닫히면 각각 호출돼요.

Error Codes

CallbackResult.result.methodCode 값은 Convert.ToUInt32(IAPSDKMethod.START_PURCHASE)예요.

CodeNameDescriptionShow to UserIn-Game Message
0SUCCESS성공x
17NOT_INITIALIZEDIAP가 초기화되어 있지 않음. IAP_Initialize를 먼저 호출해야 해요x
80VIEWUI_NOT_INITIALIZED구매 팝업을 표시할 웹뷰 초기화에 실패함x
82WEBVIEW_CREATE_FAIL구매 팝업 웹뷰 생성에 실패함x
83WEBVIEW_LOAD_URL_FAIL구매 팝업 웹뷰에서 페이지를 불러오지 못함x
84WEBVIEW_CLOSED_BEFORE_PURCHASE구매가 완료되기 전에 팝업이 닫힘O구매가 정상적으로 완료되지 않았습니다. 다시 시도해 주세요. [확인]
85PARAMETER_LENGTH_EXCEEDEDserviceTxnNo 또는 extraData의 길이가 허용 범위를 초과함O결제 정보가 유효하지 않아 결제를 진행할 수 없습니다. 다시 시도해 주세요. [확인]
86INVALID_JSON_STRINGextraData가 올바른 JSON 형식이 아님O결제 정보가 유효하지 않아 결제를 진행할 수 없습니다. 다시 시도해 주세요. [확인]
88INVALID_ORDER_PRODUCT_INFORMATION구매 상품 정보(quantity, salePrice 등)가 올바르지 않음O결제 정보가 유효하지 않아 결제를 진행할 수 없습니다. 다시 시도해 주세요. [확인]
89WEBVIEW_CLOSE_ALL_FAIL기존에 열려 있던 팝업을 모두 닫는 데 실패함x
90WEBVIEW_CLOSE_FAIL팝업을 닫는 데 실패함(onDestroy 콜백으로 전달됨)x
252NOT_IMPLEMENTED구매 옵션(option.operation)에 알 수 없는 값이 지정됨x
253UNMANAGED_EXCEPTION네이티브 SDK 내부에서 예외가 발생함O일시적으로 문제가 발생했습니다. 다시 시도해 주세요. [확인]
254MANAGED_EXCEPTIONC# 래퍼 내부(마샬링 등)에서 예외가 발생함. CallbackResult.result.exceptionMessage 를 확인해야 해요O일시적으로 문제가 발생했습니다. 다시 시도해 주세요. [확인]

전체 목록은 IAPSDKResultCode 를 참조하세요.

Example

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

StovePCOrderProduct orderProduct = new StovePCOrderProduct();
orderProduct.productId = 123456;
orderProduct.salePrice = 1000;
orderProduct.quantity = 1;

StovePCPurchaseOption option = new StovePCPurchaseOption();
option.operation = StovePCPurchaseOperation.WITH_WEBVIEW;
option.webviewMode = WebViewMode.INTERNAL;
option.webviewWidth = 800;
option.webviewHeight = 600;

StovePCStartPurchaseParam purchaseParam = new StovePCStartPurchaseParam();
purchaseParam.products = new StovePCOrderProduct[] { orderProduct };
purchaseParam.productsSize = 1;
purchaseParam.option = option;
purchaseParam.serviceTxnNo = "YOUR_SERVICE_TXN_NO";
purchaseParam.extraData = "";

IAP_StartPurchaseEx(purchaseParam, OnStartPurchaseFinished, OnIAPPopupDestroyFinished);

void OnStartPurchaseFinished(CallbackResult callbackResult, StovePCPurchaseResult purchase)
{
    if (callbackResult.result.IsSuccessful())
    {
        // 성공 시 로직을 구현해 주세요.
    }
    else
    {
        // 실패 시 로직을 구현해 주세요.
    }
}

void OnIAPPopupDestroyFinished(CallbackResult callbackResult)
{
    // 구매 팝업이 닫혔을 때의 로직을 구현해 주세요.
}

Notes

  • 팝업 종료 감지가 필요하지 않다면 IAP_StartPurchase를 사용해요.
  • Base_RunCallback()을 게임 루프에서 반복 호출해야 콜백이 전달돼요.

See Also


IAP_UnInitialize

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

Description

IAP_Initialize / IAP_InitializeWithWndInfo로 초기화한 결제 기능 모듈을 종료해요.

구 인터페이스에서는 SDK 뿐 아니라 결제 기능을 포함한 각 모듈을 개별적으로 초기화·종료해야 해요. 게임을 종료하기 전에 이 함수를 호출해야 해요.

Declaration

csharp
public static Result IAP_UnInitialize()

Parameters

없음

Returns

TypeDescription
Result호출 결과예요. result.IsSuccessful()로 성공 여부를 확인해요.

Error Codes

Result.methodCode 값은 Convert.ToUInt32(IAPSDKMethod.UNINITIALIZE)예요.

CodeNameDescriptionShow to UserIn-Game Message
0SUCCESS성공x
17NOT_INITIALIZEDIAP가 초기화되어 있지 않음x
81VIEWUI_UNINIT_FAILED결제 웹뷰 종료 처리에 실패함x
253UNMANAGED_EXCEPTION네이티브 SDK 내부에서 예외가 발생함O일시적으로 문제가 발생했습니다. 다시 시도해 주세요. [확인]
254MANAGED_EXCEPTIONC# 래퍼 내부(마샬링 등)에서 예외가 발생함. Result.exceptionMessage 를 확인해야 해요O일시적으로 문제가 발생했습니다. 다시 시도해 주세요. [확인]

전체 목록은 IAPSDKResultCode 를 참조하세요.

Example

csharp
using static Stove.PCSDK.IAP;

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

Notes

See Also


IAPSDKMethod

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

Description

결제 기능의 각 API를 식별하는 값이에요. API 내부에서 예외가 발생하면 Convert.ToUInt32(IAPSDKMethod.Xxx)로 변환되어 ResultmethodCode 필드 또는 CallbackResultresult.methodCode 필드에 담겨요.

값 자체는 성공/실패와 무관하며, 오류가 발생했을 때 어느 API 호출에서 발생했는지 구분하는 용도로 사용돼요.

Declaration

csharp
public enum IAPSDKMethod
{
    INITIALIZE = 1,
    UNINITIALIZE = 2,
    GET_VERSION = 5,
    // ... 이하 Values 표 참조
    WITHDRAW_GAME = 89,
}

Enum Values

CodeNameDescription
1INITIALIZEIAP_Initialize / IAP_InitializeWithWndInfo
2UNINITIALIZEIAP_UnInitialize
5GET_VERSIONIAP_GetVersion
80FETCH_SHOP_CATEGORIESIAP_FetchShopCategories
81FETCH_PRODUCTSIAP_FetchProducts / IAP_FetchProductsEx
82START_PURCHASEIAP_StartPurchase / IAP_StartPurchaseEx
83CONFIRM_PURCHASEIAP_ConfirmPurchase
84FETCH_INVENTORYIAP_FetchInventory
85FETCH_TERMS_AGREEMENTIAP_FetchTermsAgreement / IAP_FetchTermsAgreementEx
86START_PAYMENTIAP_StartPayment / IAP_StartPaymentEx
87FETCH_VOIDED_PURCHASESIAP_FetchVoidedPurchases / IAP_FetchVoidedPurchasesEx
88CLOSE_ALL_POPUPSIAP_CloseAllPopups
89WITHDRAW_GAMEIAP_WithdrawGame — 로스트아크모바일 전용

INTERNAL_SEND_81PLUG(3), INTERNAL_UPDATE_81PLUG(4)는 내부 전용 값이라 문서에 포함하지 않아요.

값 번호는 1 ~ 5(모듈 공통 API)와 80 ~ 89(결제 기능 고유 API)로 구간이 나뉘어 있고, 그 사이 번호는 사용되지 않아요.

Example

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

void OnInitializeChecked(Result result)
{
    if (!result.IsSuccessful() && result.methodCode == Convert.ToUInt32(IAPSDKMethod.INITIALIZE))
    {
        // IAP_Initialize 호출 실패 로직을 구현해 주세요.
    }
}

Notes

  • Result.methodCode, CallbackResult.result.methodCodeuint 타입이므로, 비교 시 Convert.ToUInt32(IAPSDKMethod.Xxx)로 변환해야 해요.
  • 다른 모듈도 각자 별도의 XxxSDKMethod 열거형을 가지므로 번호가 서로 겹칠 수 있어요.

See Also


IAPSDKResultCode

종류 결과코드 · 모듈 IAP · 버전 3.0.0.4

Description

결제 기능의 모든 API가 ResultresultCode 필드 또는 CallbackResultresult.resultCode 필드로 돌려주는 결과 코드예요.

0(SUCCESS)이면 성공이며, Result.IsSuccessful() / CallbackResult.result.IsSuccessful()로 판정해요. 그 외 값은 실패를 나타내요.

Declaration

csharp
public enum IAPSDKResultCode
{
    SUCCESS = 0,
    FAIL = 1,
    INVALID_CONFIG = 2,
    // ... 이하 Values 표 참조
    WEBVIEW_CLOSE_ALL_FAIL = 89,
}

Enum Values

CodeNameDescriptionShow to UserIn-Game Message
0SUCCESS성공x
1FAIL일반 실패예요. 재시도하거나 문의해야 해요x
2INVALID_CONFIG설정값이 올바르지 않아요. 호출부 설정을 확인해야 해요x
3INVALID_LOG_LEVEL로그 레벨 값이 올바르지 않아요. 호출부 설정을 확인해야 해요x
4INVALID_LOG_PATH로그 경로가 올바르지 않아요. 호출부 설정을 확인해야 해요x
5INVALID_PARAM전달한 파라미터가 올바르지 않아요. 호출부 파라미터를 확인해야 해요x
16BASE_NOT_INITIALIZEDSDK가 초기화되지 않았어요. Base_Initialize를 먼저 호출해야 해요x
17NOT_INITIALIZED결제 기능이 초기화되지 않았어요. IAP_Initialize를 먼저 호출해야 해요x
18ALREADY_INITIALIZED결제 기능이 이미 초기화되어 있어요. 중복 초기화 호출을 제거해야 해요x
19INVALID_ACCESS_TOKEN액세스 토큰이 올바르지 않아요. 재로그인하거나 토큰을 갱신해야 해요O로그인 세션이 만료되었습니다. 게임 종료 후 다시 실행해 주세요. [확인]
20NULL_TOKEN_ENTITY토큰 정보가 비어 있어요. 재로그인하거나 토큰을 갱신해야 해요x
21NULL_ENTITY필요한 데이터가 비어 있어요x
22HTTP_ERRORHTTP 통신 오류예요. 네트워크 상태를 확인한 뒤 재시도해야 해요O네트워크 연결이 원활하지 않습니다. 네트워크 상태를 확인하고 다시 실행해 주세요. [확인]
23RESPONSE_ERROR서버 응답 처리 중 오류예요O네트워크 연결이 원활하지 않습니다. 네트워크 상태를 확인하고 다시 실행해 주세요. [확인]
24RESPONSE_INVALID_CODE서버 응답 코드가 올바르지 않아요O네트워크 연결이 원활하지 않습니다. 네트워크 상태를 확인하고 다시 실행해 주세요. [확인]
25RESPONSE_VALUE_IS_NULL서버 응답 값이 비어 있어요O네트워크 연결이 원활하지 않습니다. 네트워크 상태를 확인하고 다시 실행해 주세요. [확인]
26RESPONSE_INVALID_VALUE_FORMAT서버 응답 값의 형식이 올바르지 않아요O네트워크 연결이 원활하지 않습니다. 네트워크 상태를 확인하고 다시 실행해 주세요. [확인]
27LOG_81PLUG_ERROR81Plug 로그 전송 오류예요x
28UPDATE_81PLUG_FEED_ERROR81Plug 피드 갱신 오류예요x
29ASYNC_OPERATION_IN_PROGRESS비동기 작업이 이미 진행 중이에요. 이전 요청이 끝난 뒤 재호출해야 해요x
30BASE_UNINITIALIZEDSDK가 이미 종료(UnInitialize)되었어요. 호출 순서를 확인해야 해요x
31NOT_SUPPORTED_COUNTRY지원하지 않는 국가예요x
80VIEWUI_NOT_INITIALIZED팝업 UI가 초기화되지 않았어요. 초기화 순서를 확인해야 해요x
81VIEWUI_UNINIT_FAILED팝업 UI 종료에 실패했어요x
82WEBVIEW_CREATE_FAIL웹뷰 생성에 실패했어요x
83WEBVIEW_LOAD_URL_FAIL웹뷰에서 URL을 불러오지 못했어요. 네트워크 상태를 확인한 뒤 재시도해야 해요x
84WEBVIEW_CLOSED_BEFORE_PURCHASE구매 완료 전에 웹뷰가 닫혔어요. 사용자 취소로 안내해야 해요O구매가 정상적으로 완료되지 않았습니다. 다시 시도해 주세요. [확인]
85PARAMETER_LENGTH_EXCEEDED파라미터 길이가 허용 범위를 초과했어요. 호출부 파라미터를 확인해야 해요O결제 정보가 유효하지 않아 결제를 진행할 수 없습니다. 다시 시도해 주세요. [확인]
86INVALID_JSON_STRINGJSON 문자열이 올바르지 않아요O결제 정보가 유효하지 않아 결제를 진행할 수 없습니다. 다시 시도해 주세요. [확인]
87WEBVIEW_CREATE_COOKIE_FAIL웹뷰 쿠키 생성에 실패했어요O구매를 위해서는 약관 동의가 필요합니다. 현재 약관 동의 화면을 불러오지 못했습니다. 다시 시도해 주세요. [확인]
88INVALID_ORDER_PRODUCT_INFORMATION주문 상품 정보가 올바르지 않아요. 호출부 상품 정보를 확인해야 해요O결제 정보가 유효하지 않아 결제를 진행할 수 없습니다. 다시 시도해 주세요. [확인]
89WEBVIEW_CLOSE_ALL_FAIL모든 웹뷰 닫기에 실패했어요x
251PCSDK_DLL_NOT_FOUNDPCSDK 네이티브 DLL을 찾지 못했어요. 설치 경로를 확인해야 해요x
252NOT_IMPLEMENTED구현되지 않은 기능이에요x
253UNMANAGED_EXCEPTION네이티브(unmanaged) 계층에서 예외가 발생했어요O일시적으로 문제가 발생했습니다. 다시 시도해 주세요. [확인]
254MANAGED_EXCEPTION.NET(managed) 계층에서 예외가 발생했어요O일시적으로 문제가 발생했습니다. 다시 시도해 주세요. [확인]
255UNKNOWN_ERROR알 수 없는 오류예요x

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

  • 19 INVALID_ACCESS_TOKEN — 로그인 세션이 만료되어 게임을 종료하고 다시 실행해야 해요

값 번호는 0 ~ 31(모듈 공통 오류), 80 ~ 89(결제 기능 고유 오류), 251 ~ 255(시스템/예외 오류) 구간으로 나뉘어 있고, 그 사이 번호는 사용되지 않아요.

Example

csharp
using static Stove.PCSDK.IAP;

void OnFetchProductsFinished(CallbackResult callbackResult, StovePCProduct[] products)
{
    if (!callbackResult.result.IsSuccessful())
    {
        if (callbackResult.result.resultCode == (uint)IAPSDKResultCode.NOT_INITIALIZED)
        {
            // IAP_Initialize 를 먼저 호출해야 하는 경우의 로직을 구현해 주세요.
        }
        return;
    }
}

Notes

  • 80~89 구간은 BaseSDKResultCode에도 동일한 번호대(LANGUAGE_NOT_SET 등)가 존재하지만 서로 다른 열거형이므로 번호만 같고 의미는 달라요. 어느 모듈의 API가 반환했는지는 IAPSDKMethod로 함께 확인해야 해요.
  • 이 열거형에는 정의되어 있지 않지만, 네이티브 결제 기능의 SDKResultCode에는 존재하는 값이 두 가지 있어요.
    • 90(WEBVIEW_CLOSE_FAIL, 웹뷰 닫기 실패)은 결제 진행 중 실제로 반환될 수 있는 코드예요. 이 코드가 발생하면 resultCode 필드에 이름 없는 숫자 90이 그대로 담겨 전달되므로, 개발사는 값 자체(정수 90)로 분기 처리해야 해요.
    • 33(POPUP_NOT_CREATED)은 팝업(웹뷰)이 생성되지 않은 채 종료된 경우의 내부 정리용 코드로, SDK 래퍼가 가로채어 사용자 콜백에는 전달하지 않으므로 실제로 이 값을 받는 경우는 없어요.

See Also


Log_GetVersion

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

Description

로그 기능의 버전 정보를 조회해요.

호출자가 준비한 변수에 버전 문자열을 채워서 돌려줘요.

Declaration

csharp
public static Result Log_GetVersion(ref string version, uint length);

Parameters

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

Returns

TypeDescription
ResultAPI 호출 결과예요. result.IsSuccessful() 로 성공 여부를 확인해요.

Error Codes

CodeNameDescriptionShow to UserIn-Game Message
0SUCCESS성공x
5INVALID_PARAMversion 버퍼가 없거나 length가 0, 또는 버퍼 크기가 문자열을 담기에 부족함x
251PCSDK_DLL_NOT_FOUNDSDK 파일 경로를 찾지 못해 버전 조회에 실패함x
253UNMANAGED_EXCEPTION네이티브 SDK 내부에서 예외가 발생함O일시적으로 문제가 발생했습니다. 다시 시도해 주세요. [확인]
254MANAGED_EXCEPTIONC# 래퍼 내부(마샬링 등)에서 예외가 발생함. Result.exceptionMessage 를 확인해야 해요O일시적으로 문제가 발생했습니다. 다시 시도해 주세요. [확인]

이 함수는 실제로는 LogSDK 자체 버전이 아닌 BaseSDK 통합 버전을 그대로 반환해요. 전체 목록은 LogSDKResultCode 를 참조하세요.

Example

csharp
using static Stove.PCSDK.Log;

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

Notes

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

See Also


Log_Initialize

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

Description

로그 기능을 초기화해요.

이 모듈의 다른 API를 호출하기 전에 먼저 호출해야 해요. LogSDKResultCode.BASE_NOT_INITIALIZED 코드가 존재하는 것으로 보아, SDK가 먼저 초기화되어 있어야 해요.

Declaration

csharp
public static Result Log_Initialize();

Parameters

없음

Returns

TypeDescription
ResultAPI 호출 결과예요. result.IsSuccessful() 로 성공 여부를 확인해요.

Error Codes

CodeNameDescriptionShow to UserIn-Game Message
0SUCCESS성공x
16BASE_NOT_INITIALIZEDBaseSDK가 초기화되지 않음. Base_Initialize를 먼저 호출해야 해요x
18ALREADY_INITIALIZED로그 기능이 이미 초기화되어 있음x
80LOCAL_DB_CREATE_WORKING_DIRECTORY_FAILED로그를 저장할 로컬 작업 디렉터리 생성에 실패함x
81LOCAL_DB_CONNECT_FAILED로그 저장용 로컬 DB 연결에 실패함x
82LOCAL_DB_CREATE_TABLE_FAILED로그 저장용 로컬 DB 테이블 생성에 실패함x
251PCSDK_DLL_NOT_FOUNDSDK 파일 경로를 찾지 못해 버전 확인에 실패함x
253UNMANAGED_EXCEPTION네이티브 SDK 내부에서 예외가 발생함O일시적으로 문제가 발생했습니다. 다시 시도해 주세요. [확인]
254MANAGED_EXCEPTIONC# 래퍼 내부(마샬링 등)에서 예외가 발생함. Result.exceptionMessage 를 확인해야 해요O일시적으로 문제가 발생했습니다. 다시 시도해 주세요. [확인]

전체 목록은 LogSDKResultCode 를 참조하세요.

Example

csharp
using static Stove.PCSDK.Log;

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

Notes

  • 이 함수는 동기 함수이며 콜백을 받지 않아요.
  • 모듈 사용이 끝나면 Log_UnInitialize 를 호출해 자원을 정리해야 해요.
  • 로그 기능은 모듈 전체가 3.4.1 에 추가되었어요.

See Also


Log_Send

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

Description

STOVE 로그 서버에 로그를 전송해요. StovePCLogSendParam 에 담은 값이 그대로 로그 항목이 되어 전송돼요.

Log_Initialize 로 초기화한 뒤에 호출해야 해요.

Declaration

csharp
public static void Log_Send(StovePCLogSendParam logSendParam, OnLogSendFinished onFinished);

Parameters

NameTypeRequiredDescription
logSendParamStovePCLogSendParamY전송할 로그 항목의 값이에요.
onFinishedOnLogSendFinishedY전송 결과를 받는 콜백이에요.

Returns

없음

Callback

csharp
public delegate void OnLogSendFinished(CallbackResult callbackResult);
NameTypeDescription
callbackResultCallbackResult전송 호출 결과예요. callbackResult.result.IsSuccessful() 로 성공 여부를 확인해요.

콜백은 Base_RunCallback() 을 호출한 스레드에서 실행되며, Log_Send() 호출 1회당 1회 전달돼요.

Error Codes

CodeNameDescriptionShow to UserIn-Game Message
0SUCCESS로컬 DB에 로그가 기록됨(서버 전송 성공을 의미하지 않음)x
17NOT_INITIALIZED로그 기능이 초기화되어 있지 않음. Log_Initialize를 먼저 호출해야 해요x
84LOCAL_DB_BACKUP_LOG_FAILED로그를 로컬 DB에 기록하는 데 실패함x
85INVALID_LOG_PARAMETERcontents가 올바른 JSON 형식이 아님x
86LOG_SIZE_EXCEEDED로그 콘텐츠 크기가 허용 범위(50KB)를 초과함x
253UNMANAGED_EXCEPTION네이티브 SDK 내부에서 예외가 발생함O일시적으로 문제가 발생했습니다. 다시 시도해 주세요. [확인]
254MANAGED_EXCEPTIONC# 래퍼 내부(마샬링 등)에서 예외가 발생함. callbackResult.result.exceptionMessage 를 확인해야 해요O일시적으로 문제가 발생했습니다. 다시 시도해 주세요. [확인]

전체 목록은 LogSDKResultCode 를 참조하세요.

Example

csharp
using static Stove.PCSDK.Log;

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

var logSendParam = new StovePCLogSendParam
{
    auid = auid,
    cuid = cuid,
    gameVersion = "1.2.3",
    contents = "{\"event\":\"login\"}"
};

Log_Send(logSendParam, OnLogSendFinished);

Notes

  • 이 함수는 비동기 함수이며, 콜백은 Base_RunCallback() 을 호출하는 스레드에서 1회 실행돼요.
  • 값을 모르는 필드는 기본값(숫자 0, 문자열 null/빈 값)으로 남겨 둘 수 있어요.
  • 로그 기능은 모듈 전체가 3.4.1 에 추가되었어요.
  • onFinished 콜백은 로그가 로컬 DB에 기록된 시점SUCCESS로 호출돼요. 실제 STOVE 로그 서버로의 전송은 별도로 처리되며, 서버 전송이 실패해도 이 콜백으로는 전달되지 않아요.
  • 로컬 DB 기록 실패(LOCAL_DB_BACKUP_LOG_FAILED 등)를 제외하면 이 콜백은 사실상 항상 성공을 돌려줘요. 게임 로직을 이 콜백의 결과로 분기하도록 설계하지 않는 것을 권장해요.

See Also


Log_UnInitialize

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

Description

로그 기능의 자원을 해제해요.

Log_Initialize 로 초기화한 자원을 정리하는 함수이며, 모듈 사용을 마칠 때 호출해요.

Declaration

csharp
public static Result Log_UnInitialize();

Parameters

없음

Returns

TypeDescription
ResultAPI 호출 결과예요. result.IsSuccessful() 로 성공 여부를 확인해요.

Error Codes

CodeNameDescriptionShow to UserIn-Game Message
0SUCCESS성공x
17NOT_INITIALIZED로그 기능이 초기화되어 있지 않음x
83LOCAL_DB_DISCONNECT_FAILED로그 저장용 로컬 DB 연결 해제에 실패함x
253UNMANAGED_EXCEPTION네이티브 SDK 내부에서 예외가 발생함O일시적으로 문제가 발생했습니다. 다시 시도해 주세요. [확인]
254MANAGED_EXCEPTIONC# 래퍼 내부(마샬링 등)에서 예외가 발생함. Result.exceptionMessage 를 확인해야 해요O일시적으로 문제가 발생했습니다. 다시 시도해 주세요. [확인]

전체 목록은 LogSDKResultCode 를 참조하세요.

Example

csharp
using static Stove.PCSDK.Log;

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

Notes

  • 이 함수는 동기 함수이며 콜백을 받지 않아요.
  • Log_Initialize 와 짝을 이루는 함수예요.
  • 로그 기능은 모듈 전체가 3.4.1 에 추가되었어요.

See Also


LogSDKMethod

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

Description

Result.methodCode 또는 CallbackResult.result.methodCode 로 조회되는 값으로, 어떤 로그 기능 함수가 해당 결과를 만들었는지 식별해요.

Declaration

csharp
public enum LogSDKMethod
{
    INITIALIZE = 1,
    UNINITIALIZE = 2,
    GET_VERSION = 5,
    SEND = 80,
};

Enum Values

CodeNameDescription
1INITIALIZELog_Initialize 가 만든 결과예요.
2UNINITIALIZELog_UnInitialize 가 만든 결과예요.
3, 4사용하지 않아요 (예약된 번호)
5GET_VERSIONLog_GetVersion 이 만든 결과예요.
6 ~ 79사용하지 않아요 (예약된 번호)
80SENDLog_Send 가 만든 결과예요.

Example

csharp
if (callbackResult.result.methodCode == Convert.ToUInt32(LogSDKMethod.SEND))
{
    // Log_Send 의 결과입니다.
}

Notes

  • Result.methodCodeuint 필드이므로, 이 열거형 값과 비교할 때는 Convert.ToUInt32() 등으로 변환해야 해요.

See Also


LogSDKResultCode

종류 결과코드 · 모듈 Log · 버전 3.4.1

Description

Result.resultCode 또는 CallbackResult.result.resultCode 로 조회되는 값이에요. 0(SUCCESS)이면 성공이고, 그 외 값은 실패예요.

앞부분(0 ~ 31, 251 ~ 255)은 다른 PCSDK 레거시 모듈과 공유하는 공용 코드이고, 80 이후는 로그 기능 고유의 실패 코드예요.

Declaration

csharp
public enum LogSDKResultCode
{
    SUCCESS = 0,
    FAIL = 1,
    // ... 이하 Values 표 참조
    LOG_SIZE_EXCEEDED = 86,
}

Enum Values

공용 코드

CodeNameDescriptionShow to UserIn-Game Message
0SUCCESS성공x
1FAIL일반 실패. 상세 원인은 로그/exceptionMessage 로 확인해요x
2INVALID_CONFIG설정값이 유효하지 않아요. 설정값을 확인해요x
3INVALID_LOG_LEVEL로그 레벨 값이 유효하지 않아요. 로그 레벨 값을 확인해요x
4INVALID_LOG_PATH로그 경로가 유효하지 않아요. 로그 경로를 확인해요x
5INVALID_PARAM파라미터가 유효하지 않아요. 호출부 파라미터 값을 확인 후 수정해요x
6 ~ 15사용하지 않아요 (예약 구간)
16BASE_NOT_INITIALIZEDSDK가 초기화되지 않았어요. Base_Initialize()를 선행 호출해요x
17NOT_INITIALIZED로그 기능이 초기화되지 않았어요. Log_Initialize를 선행 호출해요x
18ALREADY_INITIALIZED이미 초기화되어 있어요. 중복 초기화 호출을 제거해요x
19INVALID_ACCESS_TOKENAccessToken 이 유효하지 않아요. 토큰 재발급을 확인해요O로그인 세션이 만료되었습니다. 게임 종료 후 다시 실행해 주세요. [확인]
20NULL_TOKEN_ENTITY토큰 엔티티가 null 이에요. 토큰 발급 상태를 확인해요x
21NULL_ENTITY엔티티가 null 이에요. 응답 객체의 null 여부를 확인해요x
22HTTP_ERRORHTTP 통신 오류가 발생했어요. 네트워크 상태를 확인 후 재시도해요O네트워크 연결이 원활하지 않습니다. 네트워크 상태를 확인하고 다시 실행해 주세요. [확인]
23RESPONSE_ERROR서버 응답 오류예요. 서버 응답을 확인해요O네트워크 연결이 원활하지 않습니다. 네트워크 상태를 확인하고 다시 실행해 주세요. [확인]
24RESPONSE_INVALID_CODE서버 응답 코드가 유효하지 않아요. 서버 응답 코드를 확인해요O네트워크 연결이 원활하지 않습니다. 네트워크 상태를 확인하고 다시 실행해 주세요. [확인]
25RESPONSE_VALUE_IS_NULL서버 응답 값이 비어 있어요. 서버 응답 값을 확인해요O네트워크 연결이 원활하지 않습니다. 네트워크 상태를 확인하고 다시 실행해 주세요. [확인]
26RESPONSE_INVALID_VALUE_FORMAT서버 응답 값의 형식이 올바르지 않아요. 서버 응답 형식을 확인해요O네트워크 연결이 원활하지 않습니다. 네트워크 상태를 확인하고 다시 실행해 주세요. [확인]
27LOG_81PLUG_ERROR81 Plug 전송에 실패했어요 (Deprecated)x
28UPDATE_81PLUG_FEED_ERROR81 Plug 업데이트에 실패했어요 (Deprecated)x
29ASYNC_OPERATION_IN_PROGRESS비동기 작업이 이미 진행 중이에요. 진행 중인 비동기 작업을 완료한 뒤 재호출해요x
30BASE_UNINITIALIZEDSDK가 이미 UnInitialize 되었어요. Base_Initialize()를 재호출해요x
31NOT_SUPPORTED_COUNTRY현재 국가/지역에서는 지원되지 않는 기능이에요. 국가/지역 제한을 확인 후 호출을 중단해요x
32 ~ 79사용하지 않아요 (예약 구간)

로그 기능 고유 코드

CodeNameDescriptionShow to UserIn-Game Message
80LOCAL_DB_CREATE_WORKING_DIRECTORY_FAILED로컬 DB 작업 디렉터리 생성에 실패했어요. 로컬 저장소 경로·권한을 확인해요x
81LOCAL_DB_CONNECT_FAILED로컬 DB 초기화(연결)에 실패했어요. 로컬 저장소 상태를 확인 후 재시도해요x
82LOCAL_DB_CREATE_TABLE_FAILED로컬 DB 테이블 생성에 실패했어요. 로컬 저장소 상태를 확인 후 재시도해요x
83LOCAL_DB_DISCONNECT_FAILED로컬 DB 초기화(연결 해제)에 실패했어요. 로컬 저장소 상태를 확인 후 재시도해요x
84LOCAL_DB_BACKUP_LOG_FAILED로그를 로컬 DB 에 백업하는 데 실패했어요. 로컬 저장소 상태를 확인 후 재시도해요x
85INVALID_LOG_PARAMETER로그 전송 API 에 전달한 파라미터가 올바르지 않아요. 호출부 파라미터를 점검해요x
86LOG_SIZE_EXCEEDED로그 크기가 최대 허용치를 초과했어요. 로그 값의 크기를 줄여서 재시도해요x
251 ~ 255시스템/런타임 실패 (공용 코드, 아래 참조)
CodeNameDescriptionShow to UserIn-Game Message
251PCSDK_DLL_NOT_FOUNDPC SDK DLL 을 찾을 수 없어요. DLL 배치를 확인해요x
252NOT_IMPLEMENTED구현되지 않은 기능이에요. 호출을 제거하거나 대체 API를 확인해요x
253UNMANAGED_EXCEPTION관리되지 않는(unmanaged) 예외가 발생했어요. 예외 로그를 확인해요O일시적으로 문제가 발생했습니다. 다시 시도해 주세요. [확인]
254MANAGED_EXCEPTION관리되는(managed) 예외가 발생했어요. 예외 로그를 확인해요O일시적으로 문제가 발생했습니다. 다시 시도해 주세요. [확인]
255UNKNOWN_ERROR알 수 없는 오류예요. 상세 로그를 확인해요x

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

  • 19 INVALID_ACCESS_TOKEN — 로그인 세션이 만료되어 게임을 종료하고 다시 실행해야 해요

Example

csharp
void OnLogSendFinished(CallbackResult callbackResult)
{
    if (callbackResult.result.IsSuccessful())
    {
        // 성공 시 로직을 구현해 주세요.
    }
    else if (callbackResult.result.resultCode == (uint)LogSDKResultCode.LOG_SIZE_EXCEEDED)
    {
        // 로그 크기를 줄여 재전송하는 로직을 구현해 주세요.
    }
}

Notes

  • Result.resultCodeuint 필드이므로, 이 열거형 값과 비교할 때는 (uint) 캐스팅 등으로 변환해야 해요.
  • Log_Send() 가 실패했을 때 80~86 번 코드가 나올 수 있어요.

See Also


PCBang_CheckPCBangStatus

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

Description

PC방 여부 및 상품 사용 상태를 조회해요. 결과는 콜백에 StovePCBangStatus 로 전달돼요.

Declaration

csharp
public static void PCBang_CheckPCBangStatus(OnPCBangCheckPCBangStatusOnFinished onFinished);

Parameters

NameTypeRequiredDescription
onFinishedOnPCBangCheckPCBangStatusOnFinishedY조회 결과를 받는 콜백이에요.

Returns

없음

Callback

csharp
public delegate void OnPCBangCheckPCBangStatusOnFinished(CallbackResult result, StovePCBangStatus stovePCBangStatus);
NameTypeDescription
resultCallbackResult조회 호출 결과예요. result.result.IsSuccessful() 로 성공 여부를 확인해요.
stovePCBangStatusStovePCBangStatus현재 PC방 상황과 상품 코드 정보예요.

콜백은 Base_RunCallback() 을 호출한 스레드에서 실행되며, 조회 결과에 대해 1회만 호출돼요.

Error Codes

CodeNameDescriptionShow to UserIn-Game Message
0SUCCESS성공x
17NOT_INITIALIZEDPC방 기능이 초기화되어 있지 않음. PCBang_Initialize를 먼저 호출해야 해요x
22HTTP_ERROR네트워크 요청이 HTTP 오류로 실패함O네트워크 연결이 원활하지 않습니다. 네트워크 상태를 확인하고 다시 실행해 주세요. [확인]
23RESPONSE_ERROR서버 응답에 오류가 있음O네트워크 연결이 원활하지 않습니다. 네트워크 상태를 확인하고 다시 실행해 주세요. [확인]
25RESPONSE_VALUE_IS_NULL서버 응답 데이터가 비어 있음O네트워크 연결이 원활하지 않습니다. 네트워크 상태를 확인하고 다시 실행해 주세요. [확인]
249NETWORK_TRANSPORT_ERROR네트워크 전송 계층에서 오류가 발생함x
253UNMANAGED_EXCEPTION네이티브 SDK 내부에서 예외가 발생함O일시적으로 문제가 발생했습니다. 다시 시도해 주세요. [확인]
254MANAGED_EXCEPTIONC# 래퍼 내부(마샬링 등)에서 예외가 발생함. CallbackResult.result.exceptionMessage 를 확인해야 해요O일시적으로 문제가 발생했습니다. 다시 시도해 주세요. [확인]

전체 목록은 PCBangSDKResultCode 를 참조하세요.

Example

csharp
using static Stove.PCSDK.PCBang;

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

PCBang_CheckPCBangStatus(OnCheckStatusFinished);

Notes

  • 이 함수는 비동기 함수이며, 콜백은 Base_RunCallback() 을 호출하는 스레드에서 1회 실행돼요.
  • PCBang_UserLogin 의 로그인 결과와는 별개의 조회 API예요.

See Also


PCBang_GetVersion

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

Description

PC방 기능의 버전 정보를 조회해요.

호출자가 준비한 변수에 버전 문자열을 채워서 돌려줘요.

Declaration

csharp
public static Result PCBang_GetVersion(ref string version, uint length);

Parameters

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

Returns

TypeDescription
ResultAPI 호출 결과예요. result.IsSuccessful() 로 성공 여부를 확인해요.

Error Codes

CodeNameDescriptionShow to UserIn-Game Message
0SUCCESS성공x
5INVALID_PARAMversion 버퍼가 없거나 length가 0, 또는 버퍼 크기가 문자열을 담기에 부족함x
251PCSDK_DLL_NOT_FOUNDSDK 파일 경로를 찾지 못해 버전 조회에 실패함x
253UNMANAGED_EXCEPTION네이티브 SDK 내부에서 예외가 발생함O일시적으로 문제가 발생했습니다. 다시 시도해 주세요. [확인]
254MANAGED_EXCEPTIONC# 래퍼 내부(마샬링 등)에서 예외가 발생함. Result.exceptionMessage 를 확인해야 해요O일시적으로 문제가 발생했습니다. 다시 시도해 주세요. [확인]

이 함수는 실제로는 PCBangSDK 자체 버전이 아닌 BaseSDK 통합 버전을 그대로 반환해요. 전체 목록은 PCBangSDKResultCode 를 참조하세요.

Example

csharp
using static Stove.PCSDK.PCBang;

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

Notes

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

See Also


PCBang_Initialize

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

Description

PC방 기능을 초기화해요.

이 모듈의 다른 API를 호출하기 전에 먼저 호출해야 해요. PCBangSDKResultCode.BASE_NOT_INITIALIZED 코드가 존재하는 것으로 보아, SDK가 먼저 초기화되어 있어야 해요.

Declaration

csharp
public static Result PCBang_Initialize();

Parameters

없음

Returns

TypeDescription
ResultAPI 호출 결과예요. result.IsSuccessful() 로 성공 여부를 확인해요.

Error Codes

CodeNameDescriptionShow to UserIn-Game Message
0SUCCESS성공x
16BASE_NOT_INITIALIZEDBaseSDK가 초기화되지 않음. Base_Initialize를 먼저 호출해야 해요x
18ALREADY_INITIALIZEDPC방 기능이 이미 초기화되어 있음x
251PCSDK_DLL_NOT_FOUNDSDK 파일 경로를 찾지 못해 버전 확인에 실패함x
253UNMANAGED_EXCEPTION네이티브 SDK 내부에서 예외가 발생함O일시적으로 문제가 발생했습니다. 다시 시도해 주세요. [확인]
254MANAGED_EXCEPTIONC# 래퍼 내부(마샬링 등)에서 예외가 발생함. Result.exceptionMessage 를 확인해야 해요O일시적으로 문제가 발생했습니다. 다시 시도해 주세요. [확인]

전체 목록은 PCBangSDKResultCode 를 참조하세요.

Example

csharp
using static Stove.PCSDK.PCBang;

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

Notes

  • 이 함수는 동기 함수이며 콜백을 받지 않아요.
  • 모듈 사용이 끝나면 PCBang_UnInitialize 를 호출해 자원을 정리해야 해요.

See Also


PCBang_UnInitialize

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

Description

PC방 기능의 자원을 해제해요.

PCBang_Initialize 로 초기화한 자원을 정리하는 함수이며, 모듈 사용을 마칠 때 호출해요.

Declaration

csharp
public static Result PCBang_UnInitialize();

Parameters

없음

Returns

TypeDescription
ResultAPI 호출 결과예요. result.IsSuccessful() 로 성공 여부를 확인해요.

Error Codes

CodeNameDescriptionShow to UserIn-Game Message
0SUCCESS성공x
17NOT_INITIALIZEDPC방 기능이 초기화되어 있지 않음x
253UNMANAGED_EXCEPTION네이티브 SDK 내부에서 예외가 발생함O일시적으로 문제가 발생했습니다. 다시 시도해 주세요. [확인]
254MANAGED_EXCEPTIONC# 래퍼 내부(마샬링 등)에서 예외가 발생함. Result.exceptionMessage 를 확인해야 해요O일시적으로 문제가 발생했습니다. 다시 시도해 주세요. [확인]

전체 목록은 PCBangSDKResultCode 를 참조하세요.

Example

csharp
using static Stove.PCSDK.PCBang;

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

Notes

  • 이 함수는 동기 함수이며 콜백을 받지 않아요.
  • PCBang_Initialize 와 짝을 이루는 함수예요.

See Also


PCBang_UserLogin

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

Description

PC방 서비스에서 게임 유저를 로그인해요. 로그인 결과는 onUserLoginFinished 콜백으로 전달되고, 이후 4분마다 갱신되는 PC방 혜택 정보가 onRefreshBenefitsFinished 콜백으로 전달돼요.

PCBang_Initialize 로 초기화한 뒤에 호출해야 해요.

실제 구현에서는 두 콜백이 모두 null 이 아닐 때만 등록돼요. 하나라도 null 이면 어느 콜백도 등록되지 않아요.

Declaration

csharp
public static void PCBang_UserLogin(OnPCBangUserLoginOnFinished onUserLoginFinished, OnPCBangRefreshUserBenefitsOnFinished onRefreshBenefitsFinished);

Parameters

NameTypeRequiredDescription
onUserLoginFinishedOnPCBangUserLoginOnFinishedY로그인 결과를 받는 콜백이에요.
onRefreshBenefitsFinishedOnPCBangRefreshUserBenefitsOnFinishedY4분마다 갱신된 혜택 정보를 받는 콜백이에요. 두 콜백을 함께 지정해야 등록돼요.

Returns

없음

Callback

로그인 결과와 혜택 갱신 정보는 서로 다른 콜백으로 구분되어 전달돼요.

로그인 결과 콜백

csharp
public delegate void OnPCBangUserLoginOnFinished(CallbackResult result, StovePCBangUserLogin stovePCBangUserLogin);
NameTypeDescription
resultCallbackResult로그인 호출 결과예요. result.result.IsSuccessful() 로 성공 여부를 확인해요.
stovePCBangUserLoginStovePCBangUserLogin로그인 결과 정보(프리미엄 상태, PC방 시리얼 번호, 남은 시간)이에요.

혜택 갱신 콜백

csharp
public delegate void OnPCBangRefreshUserBenefitsOnFinished(CallbackResult result, StovePCRefreshUserBenefits stovePCRefreshUserBenefits);
NameTypeDescription
resultCallbackResult혜택 갱신 결과예요.
stovePCRefreshUserBenefitsStovePCRefreshUserBenefits갱신된 혜택 정보(프리미엄 상태, 남은 시간)이에요.

두 콜백 모두 Base_RunCallback() 을 호출한 스레드에서 실행돼요.

  • onUserLoginFinished 는 로그인 요청 1회에 대해 호출돼요.
  • onRefreshBenefitsFinished 는 4분마다 반복 호출되어 갱신된 혜택 정보를 전달해요.
  • PCBang_UserLogin 을 다시 호출하면 이전에 등록된 혜택 갱신 콜백은 새 콜백으로 교체돼요.

Error Codes

로그인 결과의 result.methodCodePCBangSDKMethod.USER_LOGIN, 혜택 갱신 결과의 result.methodCodePCBangSDKMethod.REFRESH_USER_BENEFITS 값을 가져요.

두 콜백 모두 아래 코드를 동일하게 사용해요.

CodeNameDescriptionShow to UserIn-Game Message
0SUCCESS성공x
17NOT_INITIALIZEDPC방 기능이 초기화되어 있지 않음. PCBang_Initialize를 먼저 호출해야 해요x
22HTTP_ERROR네트워크 요청이 HTTP 오류로 실패함O네트워크 연결이 원활하지 않습니다. 네트워크 상태를 확인하고 다시 실행해 주세요. [확인]
23RESPONSE_ERROR서버 응답에 오류가 있음O네트워크 연결이 원활하지 않습니다. 네트워크 상태를 확인하고 다시 실행해 주세요. [확인]
25RESPONSE_VALUE_IS_NULL서버 응답 데이터가 비어 있음O네트워크 연결이 원활하지 않습니다. 네트워크 상태를 확인하고 다시 실행해 주세요. [확인]
26RESPONSE_INVALID_VALUE_FORMAT서버 응답 데이터 형식이 올바르지 않음O네트워크 연결이 원활하지 않습니다. 네트워크 상태를 확인하고 다시 실행해 주세요. [확인]
249NETWORK_TRANSPORT_ERROR네트워크 전송 계층에서 오류가 발생함x
253UNMANAGED_EXCEPTION네이티브 SDK 내부에서 예외가 발생함O일시적으로 문제가 발생했습니다. 다시 시도해 주세요. [확인]
254MANAGED_EXCEPTIONC# 래퍼 내부(마샬링 등)에서 예외가 발생함. CallbackResult.result.exceptionMessage 를 확인해야 해요O일시적으로 문제가 발생했습니다. 다시 시도해 주세요. [확인]

전체 목록은 PCBangSDKResultCode 를 참조하세요.

Example

csharp
using static Stove.PCSDK.PCBang;

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

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

PCBang_UserLogin(OnUserLoginFinished, OnRefreshBenefitsFinished);

Notes

  • 이 함수는 비동기 함수이며, 두 콜백은 Base_RunCallback() 을 호출하는 스레드에서 실행돼요.
  • 로그인을 종료할 때는 PCBang_UserLogout 을 호출해요.
  • 무료 상태(PCBangPremium.PCBANG_FREE)에서도 혜택 갱신 콜백은 계속 전달돼요.

See Also


PCBang_UserLogout

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

Description

PC방 서비스에서 게임 유저를 로그아웃해요.

PCBang_UserLogin 이 시작한 혜택 갱신 콜백의 반복 호출을 중단시켜요.

Declaration

csharp
public static void PCBang_UserLogout(OnPCBangUserLogoutOnFinished onFinished);

Parameters

NameTypeRequiredDescription
onFinishedOnPCBangUserLogoutOnFinishedY로그아웃 결과를 받는 콜백이에요.

Returns

없음

Callback

csharp
public delegate void OnPCBangUserLogoutOnFinished(CallbackResult result);
NameTypeDescription
resultCallbackResult로그아웃 호출 결과예요. result.result.IsSuccessful() 로 성공 여부를 확인해요.

콜백은 Base_RunCallback() 을 호출한 스레드에서 실행되며, 로그아웃 결과에 대해 1회만 호출돼요.

Error Codes

CodeNameDescriptionShow to UserIn-Game Message
0SUCCESS성공x
17NOT_INITIALIZEDPC방 기능이 초기화되어 있지 않음. PCBang_Initialize를 먼저 호출해야 해요x
22HTTP_ERROR네트워크 요청이 HTTP 오류로 실패함O네트워크 연결이 원활하지 않습니다. 네트워크 상태를 확인하고 다시 실행해 주세요. [확인]
23RESPONSE_ERROR서버 응답에 오류가 있음O네트워크 연결이 원활하지 않습니다. 네트워크 상태를 확인하고 다시 실행해 주세요. [확인]
25RESPONSE_VALUE_IS_NULL서버 응답 데이터가 비어 있음O네트워크 연결이 원활하지 않습니다. 네트워크 상태를 확인하고 다시 실행해 주세요. [확인]
249NETWORK_TRANSPORT_ERROR네트워크 전송 계층에서 오류가 발생함x
253UNMANAGED_EXCEPTION네이티브 SDK 내부에서 예외가 발생함O일시적으로 문제가 발생했습니다. 다시 시도해 주세요. [확인]
254MANAGED_EXCEPTIONC# 래퍼 내부(마샬링 등)에서 예외가 발생함. CallbackResult.result.exceptionMessage 를 확인해야 해요O일시적으로 문제가 발생했습니다. 다시 시도해 주세요. [확인]

전체 목록은 PCBangSDKResultCode 를 참조하세요.

Example

csharp
using static Stove.PCSDK.PCBang;

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

PCBang_UserLogout(OnUserLogoutFinished);

Notes

  • 이 함수는 비동기 함수이며, 콜백은 Base_RunCallback() 을 호출하는 스레드에서 1회 실행돼요.
  • PCBang_UserLogin 의 혜택 갱신 콜백 반복 호출을 멈추려면 이 함수를 호출해야 해요.

See Also


PCBangPremium

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

Description

로그인한 사용자의 PC방 프리미엄(유료) 이용 상태를 나타내는 값이에요. StovePCBangUserLogin, StovePCBangStatus, StovePCRefreshUserBenefitspremiumStatus 필드가 이 값을 가져요.

이 열거형에는 별도의 성공/실패 판정용 코드가 없어요. PCBANG_ERROR 는 서버 오류·판단 불가 상태를 나타내는 값이며, 결과 성공 여부는 CallbackResult.result.IsSuccessful() 로 별도 확인해요.

Declaration

csharp
public enum PCBangPremium
{
    PCBANG_ERROR = -1,
    PCBANG_PREMIUM = 1,
    PCBANG_FREE = 2,
    PCBANG_FREE_OTHER = 3,
};

Enum Values

CodeNameDescription
-1PCBANG_ERROR서버 오류 / 상태를 판단할 수 없어요.
1PCBANG_PREMIUM프리미엄(유료) PC방 혜택을 이용 가능한 상태예요.
2PCBANG_FREE무료 이용 상태예요.
3PCBANG_FREE_OTHER제휴사(타사)가 제공하는 무료 이용 상태예요.

Example

csharp
void OnUserLoginFinished(CallbackResult result, StovePCBangUserLogin login)
{
    if (result.result.IsSuccessful())
    {
        if (login.premiumStatus == PCBangPremium.PCBANG_PREMIUM)
        {
            // 프리미엄 혜택 로직을 구현해 주세요.
        }
    }
}

Notes

See Also


PCBangSDKMethod

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

Description

Result.methodCode 또는 CallbackResult.result.methodCode 로 조회되는 값으로, 어떤 PC방 기능 함수가 해당 결과를 만들었는지 식별해요.

Declaration

csharp
public enum PCBangSDKMethod
{
    INITIALIZE = 1,
    UNINITIALIZE = 2,
    INTERNAL_SEND_81PLUG = 3,
    INTERNAL_UPDATE_81PLUG = 4,
    GET_VERSION = 5,
    USER_LOGIN = 80,
    USER_LOGOUT = 81,
    CHECK_PCBANG_STATUS = 82,
    REFRESH_USER_BENEFITS = 83,
};

Enum Values

CodeNameDescription
1INITIALIZEPCBang_Initialize 가 만든 결과예요.
2UNINITIALIZEPCBang_UnInitialize 가 만든 결과예요.
3INTERNAL_SEND_81PLUG내부 전용 값이에요.
4INTERNAL_UPDATE_81PLUG내부 전용 값이에요.
5GET_VERSIONPCBang_GetVersion 이 만든 결과예요.
6~79사용하지 않아요 (예약된 번호)
80USER_LOGINPCBang_UserLogin 의 로그인 결과 콜백이 만든 결과예요.
81USER_LOGOUTPCBang_UserLogout 이 만든 결과예요.
82CHECK_PCBANG_STATUSPCBang_CheckPCBangStatus 가 만든 결과예요.
83REFRESH_USER_BENEFITSPCBang_UserLogin 의 혜택 갱신 콜백이 만든 결과예요.

내부 전용 값(INTERNAL_SEND_81PLUG, INTERNAL_UPDATE_81PLUG)은 위 표에 이름과 번호만 남기며, 별도의 공개 API 로 노출되지 않아요.

Example

csharp
if (callbackResult.result.methodCode == Convert.ToUInt32(PCBangSDKMethod.USER_LOGIN))
{
    // PCBang_UserLogin 의 로그인 결과입니다.
}

Notes

  • Result.methodCodeuint 필드이므로, 이 열거형 값과 비교할 때는 Convert.ToUInt32() 등으로 변환해야 해요.
  • USER_LOGINREFRESH_USER_BENEFITSPCBang_UserLogin 한 번의 호출에서 각각 다른 시점에 콜백으로 전달되는 두 결과를 구분하는 값이에요.

See Also


PCBangSDKResultCode

종류 결과코드 · 모듈 PCBang · 버전 3.0.2

Description

Result.resultCode 또는 CallbackResult.result.resultCode 로 조회되는 값이에요. 0(SUCCESS)이면 성공이고, 그 외 값은 실패예요.

이 코드는 SDK 를 포함한 다른 PCSDK 레거시 모듈의 SDKResultCode 계열과 번호 구간이 같은 공용 코드예요. Result.sdkName 으로 어느 모듈이 만든 결과인지 확인해야 해요.

Declaration

csharp
public enum PCBangSDKResultCode
{
    SUCCESS = 0,
    FAIL = 1,
    // ... 이하 Values 표 참조
    UNKNOWN_ERROR = 255,
}

Enum Values

CodeNameDescriptionShow to UserIn-Game Message
0SUCCESS성공x
1FAIL일반 실패예요. 상세 원인은 로그 또는 exceptionMessage 로 확인해야 해요x
2INVALID_CONFIG설정값이 유효하지 않아요. 설정값을 확인해야 해요x
3INVALID_LOG_LEVEL로그 레벨 값이 유효하지 않아요. 로그 레벨 값을 확인해야 해요x
4INVALID_LOG_PATH로그 경로가 유효하지 않아요. 로그 경로를 확인해야 해요x
5INVALID_PARAM파라미터가 유효하지 않아요. 호출부의 파라미터 값을 확인한 후 수정해야 해요x
6 ~ 15사용하지 않아요 (예약 구간)x
16BASE_NOT_INITIALIZEDSDK가 초기화되지 않았어요. Base_Initialize() 를 먼저 호출해야 해요x
17NOT_INITIALIZEDPC방 기능이 초기화되지 않았어요. PCBang_Initialize 를 먼저 호출해야 해요x
18ALREADY_INITIALIZED이미 초기화되어 있어요. 중복 초기화 호출을 제거해야 해요x
19INVALID_ACCESS_TOKENAccessToken 이 유효하지 않아요. 토큰 재발급이 필요해요O로그인 세션이 만료되었습니다. 게임 종료 후 다시 실행해 주세요. [확인]
20NULL_TOKEN_ENTITY토큰 엔티티가 null 이에요. 토큰 발급 상태를 확인해야 해요x
21NULL_ENTITY엔티티가 null 이에요. 응답 객체의 null 여부를 확인해야 해요x
22HTTP_ERRORHTTP 통신 오류가 발생했어요. 네트워크 상태를 확인한 후 재시도해야 해요O네트워크 연결이 원활하지 않습니다. 네트워크 상태를 확인하고 다시 실행해 주세요. [확인]
23RESPONSE_ERROR서버 응답 오류예요. 서버 응답을 확인해야 해요O네트워크 연결이 원활하지 않습니다. 네트워크 상태를 확인하고 다시 실행해 주세요. [확인]
24RESPONSE_INVALID_CODE서버 응답 코드가 유효하지 않아요. 서버 응답 코드를 확인해야 해요O네트워크 연결이 원활하지 않습니다. 네트워크 상태를 확인하고 다시 실행해 주세요. [확인]
25RESPONSE_VALUE_IS_NULL서버 응답 값이 비어 있어요. 서버 응답 값을 확인해야 해요O네트워크 연결이 원활하지 않습니다. 네트워크 상태를 확인하고 다시 실행해 주세요. [확인]
26RESPONSE_INVALID_VALUE_FORMAT서버 응답 값의 형식이 올바르지 않아요. 서버 응답 형식을 확인해야 해요O네트워크 연결이 원활하지 않습니다. 네트워크 상태를 확인하고 다시 실행해 주세요. [확인]
27LOG_81PLUG_ERROR81 Plug 전송에 실패했어요 (Deprecated)x
28UPDATE_81PLUG_FEED_ERROR81 Plug 업데이트에 실패했어요 (Deprecated)x
29ASYNC_OPERATION_IN_PROGRESS비동기 작업이 이미 진행 중이에요. 진행 중인 비동기 작업이 완료된 후 다시 호출해야 해요x
30BASE_UNINITIALIZEDSDK가 이미 UnInitialize 되었어요. Base_Initialize() 를 다시 호출해야 해요x
31NOT_SUPPORTED_COUNTRY현재 국가/지역에서는 지원되지 않는 기능이에요. 국가/지역 제한을 확인한 후 호출을 중단해야 해요x
32 ~ 250사용하지 않아요 (예약 구간)x
251PCSDK_DLL_NOT_FOUNDPC SDK DLL 을 찾을 수 없어요. DLL 배치를 확인해야 해요x
252NOT_IMPLEMENTED구현되지 않은 기능이에요. 호출을 제거하거나 대체 API를 확인해야 해요x
253UNMANAGED_EXCEPTION관리되지 않는(unmanaged) 예외가 발생했어요. 예외 로그를 확인해야 해요O일시적으로 문제가 발생했습니다. 다시 시도해 주세요. [확인]
254MANAGED_EXCEPTION관리되는(managed) 예외가 발생했어요. 예외 로그를 확인해야 해요O일시적으로 문제가 발생했습니다. 다시 시도해 주세요. [확인]
255UNKNOWN_ERROR알 수 없는 오류예요. 상세 로그를 확인해야 해요x

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

  • 19 INVALID_ACCESS_TOKEN — 로그인 세션이 만료되어 게임을 종료하고 다시 실행해야 해요

Example

csharp
Result result = PCBang_Initialize();

if (result.IsSuccessful())
{
    // 성공 시 로직을 구현해 주세요.
}
else if (result.resultCode == (uint)PCBangSDKResultCode.ALREADY_INITIALIZED)
{
    // 이미 초기화된 경우의 로직을 구현해 주세요.
}

Notes

  • 28(UPDATE_81PLUG_FEED_ERROR)은 내부 연동용 코드이며 Deprecated 로 남아 있어요.
  • Result.resultCodeuint 필드이므로, 이 열거형 값과 비교할 때는 (uint) 캐스팅 등으로 변환해야 해요.

See Also


ProductTypeCode

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

Description

StovePCProduct.productTypeCode / StovePCProductEx.productTypeCode 필드에 담겨, IAP_FetchProducts / IAP_FetchProductsEx 콜백으로 전달되는 상품이 어떤 종류인지 나타내요.

Declaration

csharp
public enum ProductTypeCode
{
    NONE = 0,
    INDIE_PACKAGE_GAME_ITEM = 1,
    IN_GAME_ITEM,
    PACKAGE_ITEM,
};

Enum Values

CodeNameDescription
0NONE종류가 지정되지 않았어요
1INDIE_PACKAGE_GAME_ITEM인디 패키지 게임 상품이에요
2IN_GAME_ITEM인게임 아이템 상품이에요
3PACKAGE_ITEM패키지 상품이에요

Example

csharp
using static Stove.PCSDK.IAP;

void OnFetchProductsFinished(CallbackResult callbackResult, StovePCProduct[] products)
{
    if (!callbackResult.result.IsSuccessful())
    {
        return;
    }

    foreach (var product in products)
    {
        if (product.productTypeCode == ProductTypeCode.IN_GAME_ITEM)
        {
            // 인게임 아이템 상품 로직을 구현해 주세요.
        }
    }
}

Notes

See Also


PurchaseLimitTypeCode

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

Description

StovePCProduct.purchaseLimitTypeCode / StovePCProductEx.purchaseLimitTypeCode 필드에 담겨, purchaseLimitCount가 어떤 단위로 구매 개수를 제한하는지를 나타내요.

Declaration

csharp
public enum PurchaseLimitTypeCode
{
    NONE = 0,
    UNLIMITED = 1,
    MEMBER,
    CHARACTER
};

Enum Values

CodeNameDescription
0NONE제한 기준이 지정되지 않았어요
1UNLIMITED구매 제한이 없어요
2MEMBER회원(계정) 단위로 구매를 제한해요
3CHARACTER캐릭터 단위로 구매를 제한해요

Example

csharp
using static Stove.PCSDK.IAP;

void CheckPurchaseLimit(StovePCProduct product)
{
    if (product.purchaseLimitTypeCode == PurchaseLimitTypeCode.CHARACTER)
    {
        // 캐릭터 단위 구매 제한 UI 로직을 구현해 주세요. purchaseLimitCount 가 제한 개수입니다.
    }
}

Notes

  • purchaseLimitCount, saleLimitCount 필드와 함께 상품의 구매 가능 개수를 판단하는 데 사용돼요.

See Also


PurchaseProgress

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

Description

StovePCPurchaseResult.purchaseProgress 필드에 담겨, IAP_StartPurchase / IAP_StartPurchaseEx 콜백으로 전달돼요. 구매 요청 이후 결제창을 추가로 띄워야 하는지를 나타내요.

Declaration

csharp
public enum PurchaseProgress
{
    NONE = 0,
    NEED_PAYMENT_WINDOW = 1,
    NOT_NEED_PAYMENT_WINDOW
};

Enum Values

CodeNameDescription
0NONE진행 상태가 지정되지 않았어요
1NEED_PAYMENT_WINDOW결제창을 추가로 띄워야 해요
2NOT_NEED_PAYMENT_WINDOW결제창을 추가로 띄울 필요가 없어요

Example

csharp
using static Stove.PCSDK.IAP;

void OnStartPurchaseFinished(CallbackResult callbackResult, StovePCPurchaseResult purchase)
{
    if (!callbackResult.result.IsSuccessful())
    {
        return;
    }

    if (purchase.purchaseProgress == PurchaseProgress.NEED_PAYMENT_WINDOW)
    {
        // oneTimePaymentUrl 로 결제창을 띄우는 로직을 구현해 주세요.
    }
}

Notes

  • NEED_PAYMENT_WINDOW일 때 StovePCPurchaseResult.oneTimePaymentUrl을 함께 확인해야 해요.

See Also


Result

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

Description

Result 는 SDK Legacy 의 동기 API(예: Base_UnInitialize, Base_SetLanguage)가 직접 반환하는 결과이자, CallbackResult 안에 담겨 비동기 콜백으로 전달되는 결과이기도 해요.

resultCode0(BaseSDKResultCode.SUCCESS)이면 성공이에요. IsSuccessful() 메서드로 판정해요.

Declaration

csharp
public struct Result
{
    public string sdkName;
    public uint methodCode;
    public uint resultCode;
    public string exceptionMessage;
}

Members

NameTypeDescription
sdkNamestring결과를 만든 SDK(DLL) 이름
methodCodeuint이 결과를 만든 API 를 식별하는 BaseSDKMethod
resultCodeuintBaseSDKResultCode 값. 0 이면 성공
exceptionMessagestring예외가 발생한 경우의 예외 메시지. 예외가 없으면 비어 있을 수 있어요

Example

csharp
using static Stove.PCSDK.Base;

Result result = Base_SetLanguage(StoveLanguage.ko);

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

Notes

  • result.IsSuccessful()메서드예요. 신규 C# 인터페이스(Stove.PCSDK.V3)의 result.IsSuccessful 프로퍼티와 혼동하지 않도록 주의해야 해요.
  • 필드는 모두 public camelCase 필드이며, 프로퍼티가 아니에요.
  • C# 래퍼 내부에서 예외가 발생하면 resultCodeBaseSDKResultCode.MANAGED_EXCEPTION(254)로 채워져요.

See Also


StoveAPI_FreeStruct

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

Description

StoveAPI_FreeStruct 는 네이티브 SDK 가 Base_GetUser, Base_GetGds, Base_GetSignin, Base_GetTraceHint 등의 조회 결과로 채운 네이티브 구조체 포인터(ptr)를 넘기면, 그 구조체가 점유하고 있는 네이티브 측 리소스를 해제하는 함수예요.

이 함수 자체는 Base_ 접두사 규칙에서 벗어난 이름이며, 소스에도 이 이름 그대로 정의되어 있어요. BaseAPI.cs 안에서는 Base_GetUser 등의 내부 구현이 네이티브 구조체에 stoveDeleter(네이티브 해제 함수 포인터)가 설정되어 있을 때만 이 함수를 호출한 뒤, 관리되는 쪽의 버퍼(Marshal.FreeHGlobal)까지 함께 해제해요.

Declaration

csharp
public static void StoveAPI_FreeStruct(IntPtr ptr);

Parameters

NameTypeRequiredDescription
ptrIntPtrY해제할 네이티브 구조체의 포인터

Returns

TypeDescription
void없음

Error Codes

없음. 이 함수는 Result/CallbackResult 를 반환하지 않으며, 내부에서 예외가 발생하면 C# 예외가 그대로 다시 던져져요(rethrow).

Example

csharp
using static Stove.PCSDK.Base;

// 네이티브 구조체 포인터를 직접 다루는 경우에만 사용합니다.
StoveAPI_FreeStruct(nativePtr);

Notes

  • 일반적인 사용에서는 Base_GetUser, Base_GetGds, Base_GetSignin, Base_GetTraceHint 가 내부에서 이 함수를 호출하므로, 게임 코드에서 직접 호출할 일은 드뭐요.
  • ptr 은 네이티브 구조체를 가리키는 포인터여야 해요. 관리되는(managed) 구조체 값을 그대로 넘겨서는 안 돼요.

See Also


StoveLanguage

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

Description

StoveLanguageBase_SetLanguage 호출 시 전달하는 언어 값이에요. system 은 시스템 언어를 따르는 값이고, 나머지는 개별 언어를 가리켜요.

Declaration

csharp
public enum StoveLanguage
{
    system = 0,
    en = 1,
    ko = 2,
    ja = 3,
    zh_cn = 4,
    zh_tw = 5,
    de = 6,
    fr = 7,
    es = 8,
    pt = 9,
    th = 10,
    vi = 11,
};

Enum Values

CodeNameDescription
0system시스템 언어를 따라요
1en영어
2ko한국어
3ja일본어
4zh_cn중국어(간체)
5zh_tw중국어(번체)
6de독일어
7fr프랑스어
8es스페인어
9pt포르투갈어
10th태국어
11vi베트남어

Example

csharp
using static Stove.PCSDK.Base;

Result result = Base_SetLanguage(StoveLanguage.ko);

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

Notes

  • 값 이름이 소문자 · 언더스코어 표기예요. 다른 SDK 열거형(BaseSDKMethod, BaseSDKResultCode 등)과 표기 규칙이 다르므로 혼동하지 않도록 주의해야 해요.
  • 이 열거형에 없는 언어를 지정해야 하면 Base_SetLanguageEx 를 사용해야 해요. 이 함수는 StoveLanguage 대신 문자열을 받아요.
  • de · fr · es · pt 4개 값은 v3.4.0 에서 추가되었어요. 나머지 값은 최초 릴리즈부터 제공되었어요.

See Also


StoveOverlayMode

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

Description

StoveOverlayModeStovePCVietnamAgeRatingInfoStovePCVietnamOverimmersionInfooverlayMode 필드 값이에요. 베트남 연령등급 · 과몰입 오버레이를 화면에 어떻게 표시할지를 SDK 가 게임에 알려줘요.

Declaration

csharp
public enum StoveOverlayMode
{
    SHOW = 0,
    HIDE = 1,
    EXPANDED = 2,
};

Enum Values

CodeNameDescription
0SHOW오버레이를 표시해요
1HIDE오버레이를 숨겨요
2EXPANDED오버레이를 확장된 형태로 표시해요

Example

csharp
using static Stove.PCSDK.Base;

void OnVietnamAgeRatingFinished(CallbackResult callbackResult, StovePCVietnamAgeRatingInfo vietnamAgeRatingInfo)
{
    if (callbackResult.result.IsSuccessful())
    {
        if (vietnamAgeRatingInfo.overlayMode == StoveOverlayMode.SHOW)
        {
            // 오버레이를 표시하는 로직을 구현해 주세요.
        }
    }
}

Notes

See Also


StovePCBangStatus

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

Description

PCBang_CheckPCBangStatus 가 콜백으로 전달하는, 현재 PC방 상황과 상품 코드 정보를 담은 구조체예요.

이 구조체는 SDK 가 생성하여 콜백 인자로 전달해요.

Declaration

csharp
public struct StovePCBangStatus
{
    public PCBangPremium premiumStatus;
    public int pcBangSerialNumber;
    public int productCode;
}

Members

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

Example

csharp
void OnCheckStatusFinished(CallbackResult result, StovePCBangStatus status)
{
    if (result.result.IsSuccessful())
    {
        var premium = status.premiumStatus;
        var psn = status.pcBangSerialNumber;
        var productCode = status.productCode;
    }
}

Notes

  • PCBang_CheckPCBangStatus 의 콜백에만 전달돼요.
  • StovePCBangUserLogin 과 필드 구성이 비슷하지만 remainTime 대신 productCode 를 가져요.
  • C# 구조체이므로 별도의 생성·해제 절차가 필요하지 않아요. GC 가 메모리를 관리해요.

See Also


StovePCBangUserLogin

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

Description

PCBang_UserLogin 이 로그인을 완료했을 때 onUserLoginFinished 콜백으로 전달되는 구조체예요.

이 구조체는 SDK 가 생성하여 콜백 인자로 전달해요.

Declaration

csharp
public struct StovePCBangUserLogin
{
    public PCBangPremium premiumStatus;
    public int pcBangSerialNumber;
    public int remainTime;
}

Members

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

Example

csharp
void OnUserLoginFinished(CallbackResult result, StovePCBangUserLogin login)
{
    if (result.result.IsSuccessful())
    {
        var premium = login.premiumStatus;
        var psn = login.pcBangSerialNumber;
        var remainTime = login.remainTime;
    }
}

Notes

  • PCBang_UserLoginonUserLoginFinished 콜백에만 전달돼요. 이후 반복 전달되는 혜택 갱신 정보는 StovePCRefreshUserBenefits 로 별도 전달돼요.
  • C# 구조체이므로 별도의 생성·해제 절차가 필요하지 않아요. GC 가 메모리를 관리해요.

See Also


StovePCChargeInfo

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

Description

StovePCPurchaseResult.chargeInfos 배열과 IAP_ConfirmPurchase 콜백의 chargeInfos 배열에 담기는 원소 타입으로, 구매 대가로 차감된 충전 재화의 종류와 금액을 나타내요.

SDK가 콜백으로 값을 채워서 돌려주는 출력 전용 구조체예요. 호출자가 직접 생성하지 않아요.

Declaration

csharp
public struct StovePCChargeInfo

Members

NameTypeDescription
chargeDeductValdouble차감된 금액이에요.
chargeDisplayDeductValdouble화면에 표시할 차감 금액이에요.
chargeTypeint차감된 재화의 종류 코드예요.
chargeTypeNamestring차감된 재화의 종류 이름이에요.

Example

csharp
using static Stove.PCSDK.IAP;

void OnConfirmPurchaseFinished(CallbackResult callbackResult, bool status, StovePCPurchasedProduct[] purchasedProducts, StovePCChargeInfo[] chargeInfos)
{
    if (!callbackResult.result.IsSuccessful())
    {
        return;
    }

    foreach (var charge in chargeInfos)
    {
        // charge.chargeTypeName, charge.chargeDisplayDeductVal 등으로 차감 내역 표시 로직을 구현해 주세요.
    }
}

Notes

See Also


StovePCFetchProductParam

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

Description

IAP_FetchProducts / IAP_FetchProductsEx 호출 시 어느 카테고리의 상품을 몇 페이지 단위로 조회할지 지정하는 입력 구조체예요.

호출자가 값을 채워 API에 전달해요.

Declaration

csharp
public struct StovePCFetchProductParam

Members

NameTypeRequiredDescription
categoryIdstringY조회할 상품의 카테고리 ID예요.
pageNumberintY조회할 페이지 번호예요.
pageSizeintY페이지당 조회할 상품 개수예요.

Example

csharp
using static Stove.PCSDK.IAP;

StovePCFetchProductParam param = new StovePCFetchProductParam();
param.categoryId = "YOUR_CATEGORY_ID";
param.pageNumber = 1;
param.pageSize = 20;

IAP_FetchProducts(param, OnFetchProductsFinished);

Notes

See Also


StovePCGameProfile

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

Description

StovePCGameProfileBase_SetGameProfile 호출 시 입력으로 전달하는 구조체예요. 게임이 값을 채워 넘겨요.

Declaration

csharp
public struct StovePCGameProfile
{
    public string worldId;
    public long characterNumber;
}

Members

NameTypeDescription
worldIdstring월드 ID
characterNumberlong캐릭터 번호

Example

csharp
using static Stove.PCSDK.Base;

StovePCGameProfile gameProfile = new StovePCGameProfile
{
    worldId = "world_01",
    characterNumber = 12345L
};

Result result = Base_SetGameProfile(gameProfile);

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

Notes

  • 없음

See Also


StovePCGds

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

Description

StovePCGdsBase_GetGds 가 채워 돌려주는 구조체예요. 호출자가 미리 선언한 변수를 ref 로 넘기면 SDK 가 값을 채워요.

Declaration

csharp
public struct StovePCGds
{
    public bool isDefault;
    public string nation;
    public string regulation;
    public string timeZone;
    public int utcOffset;
    public string language;
}

Members

NameTypeDescription
isDefaultbool기본값 여부
nationstring국가
regulationstring규제
timeZonestring시간대
utcOffsetintUTC 오프셋
languagestring언어

Example

csharp
using static Stove.PCSDK.Base;

StovePCGds gds = default;
Result result = Base_GetGds(ref gds);

if (result.IsSuccessful())
{
    // gds.nation, gds.regulation 등을 사용하는 로직을 구현해 주세요.
}
else
{
    // 실패 시 로직을 구현해 주세요.
}

Notes

  • Base_GetGds 호출 전에는 값이 채워지지 않아요.

See Also


StovePCInitializeParam

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

Description

StovePCInitializeParamBase_RestartAppIfNecessary, Base_RestartAppIfNecessaryAsync, Base_RestartAppIfNecessaryAsyncEx, Base_Initialize 호출 시 입력으로 전달하는 구조체예요. 게임이 값을 채워 넘겨요.

waitTimeMillisec, launchLauncher 등을 함께 넘겨야 하는 확장 초기화가 필요하면 StovePCInitializeParamEx2 를 사용해야 해요.

Declaration

csharp
public struct StovePCInitializeParam
{
    public string environment;
    public string gameId;
    public string applicationKey;
}

Members

NameTypeDescription
environmentstring접속할 서비스 환경
gameIdstring게임 ID
applicationKeystring애플리케이션 키

Example

csharp
using static Stove.PCSDK.Base;

StovePCInitializeParam initParam = new StovePCInitializeParam
{
    environment = "real",
    gameId = "your_game_id",
    applicationKey = "your_application_key"
};

Base_Initialize(initParam, OnInitializeFinished);

Notes

See Also


StovePCInitializeParamEx2

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

Description

StovePCInitializeParamEx2Base_RestartAppIfNecessaryAsyncEx2 가 받는 입력 구조체예요. StovePCInitializeParam 의 세 필드에 더해, 기존에 별도 매개변수로 넘기던 waitTimeMillisec · launchLauncherplatformName, 예약 필드 5개를 한 구조체로 통합해요.

Declaration

csharp
public struct StovePCInitializeParamEx2
{
    public string environment;
    public string gameId;
    public string applicationKey;
    public uint waitTimeMillisec;
    public bool launchLauncher;
    public string platformName;
    public ulong reserved1;
    public ulong reserved2;
    public ulong reserved3;
    public ulong reserved4;
    public ulong reserved5;
}

Members

NameTypeDescription
environmentstring접속할 서비스 환경
gameIdstring게임 ID
applicationKeystring애플리케이션 키
waitTimeMillisecuint대기 시간(밀리초)
launchLauncherbool런처 실행 여부
platformNamestring플랫폼 이름
reserved1ulong예약 필드. 사용하지 않아요
reserved2ulong예약 필드. 사용하지 않아요
reserved3ulong예약 필드. 사용하지 않아요
reserved4ulong예약 필드. 사용하지 않아요
reserved5ulong예약 필드. 사용하지 않아요

Example

csharp
using static Stove.PCSDK.Base;

StovePCInitializeParamEx2 initParam = new StovePCInitializeParamEx2
{
    environment = "real",
    gameId = "your_game_id",
    applicationKey = "your_application_key",
    waitTimeMillisec = 3000,
    launchLauncher = true,
    platformName = "your_platform_name"
};

Base_RestartAppIfNecessaryAsyncEx2(initParam, OnRestartAppIfNecessaryAsyncFinished);

Notes

See Also


StovePCInventoryItem

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

Description

IAP_FetchInventory의 콜백으로 전달되는 StovePCInventoryItem[] 배열의 원소 타입이에요. 사용자가 보유한 인벤토리 아이템 하나를 나타내요.

SDK가 콜백으로 값을 채워서 돌려주는 출력 전용 구조체예요. 호출자가 직접 생성하지 않아요.

Declaration

csharp
public struct StovePCInventoryItem

Members

NameTypeDescription
transactionMasterNumberlong거래 마스터 번호예요.
transactionDetailNumberlong거래 상세 번호예요.
productIdlong아이템에 대응하는 상품 ID예요.
gameItemIdstring게임 아이템 ID예요.
productNamestring상품 이름이에요.
quantityint보유 수량이에요.
thumbnailUrlstring썸네일 이미지 URL이에요.

Example

csharp
using static Stove.PCSDK.IAP;

void OnFetchInventoryFinished(CallbackResult callbackResult, StovePCInventoryItem[] inventoryItems)
{
    if (!callbackResult.result.IsSuccessful())
    {
        return;
    }

    foreach (var item in inventoryItems)
    {
        // item.productName, item.quantity 등으로 인벤토리 UI 로직을 구현해 주세요.
    }
}

Notes

  • 없음.

See Also


StovePCLogSendParam

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

Description

Log_Send() 호출에 사용하는 파라미터예요. 사용자 식별 정보, 마케팅 연동 정보, 게임·서버 컨텍스트, 로그 그룹·본문까지 로그 한 건에 필요한 값을 담아요.

호출자가 값을 채운 뒤 Log_Send() 에 그대로 전달하는 구조체예요.

특정 로그 항목에서 값을 알 수 없는 필드는 기본값(숫자 0, 문자열 null/빈 값)으로 남겨 둘 수 있어요.

Declaration

csharp
public struct StovePCLogSendParam
{
    public long auid;
    public long cuid;
    public string mktType1;
    public string mktId1;
    public string mktType2;
    public string mktId2;
    public string gameVersion;
    public string logGroupId;
    public string serverCd;
    public string serverCdDet;
    public string lvCd;
    public string lvCdDet;
    public string contents;
}

Members

사용자 식별

NameTypeAccessDescription
auidlong읽기·쓰기계정 UID (STOVE 계정 식별자)예요.
cuidlong읽기·쓰기캐릭터 UID (게임 내 캐릭터 식별자)예요.

마케팅 연동 정보

NameTypeAccessDescription
mktType1string읽기·쓰기연동된 3rd-party 마케팅 서비스 이름 (슬롯 1)이에요.
mktId1string읽기·쓰기슬롯 1 마케팅 서비스가 발급한 식별자 (캠페인/리퍼러 ID)예요.
mktType2string읽기·쓰기연동된 3rd-party 마케팅 서비스 이름 (슬롯 2)예요.
mktId2string읽기·쓰기슬롯 2 마케팅 서비스가 발급한 식별자 (캠페인/리퍼러 ID)예요.

mktType1/mktId1mktType2/mktId2 는 서로 독립된 두 슬롯이에요. 주/보조(fallback) 관계가 아니므로, 해당하는 슬롯만 채워요.

게임 · 서버 컨텍스트

NameTypeAccessDescription
gameVersionstring읽기·쓰기게임 클라이언트 버전 문자열이에요 (예: "1.2.3").
serverCdstring읽기·쓰기서버 코드 (사용자가 접속한 월드/지역 서버)예요.
serverCdDetstring읽기·쓰기서버 코드 상세 (serverCd 하위의 서브서버/채널/샤드)예요.
lvCdstring읽기·쓰기로그 기록 시점의 계정 레벨 값이에요.
lvCdDetstring읽기·쓰기로그 기록 시점의 캐릭터 레벨 값이에요.

lvCdDet 은 이름의 "Det" 접미사와 달리 lvCd 의 하위 항목이 아니에요. lvCd(계정 범위)와 대응하는 캐릭터 범위의 값이에요.

로그 그룹 · 본문

NameTypeAccessDescription
logGroupIdstring읽기·쓰기연관된 로그 항목들을 하나의 그룹으로 묶는 상관관계 ID예요. 같은 값을 가진 항목들은 로그 백엔드에서 하나의 논리적 집합으로 취급돼요.
contentsstring읽기·쓰기위 타입 필드로 다루지 않는 값을 담는 자유 형식 로그 페이로드(보통 JSON 문서 문자열)이에요. 레거시 81plug 의 action_param 필드에 대응해요.

Example

csharp
var logSendParam = new StovePCLogSendParam
{
    auid = auid,
    cuid = cuid,
    gameVersion = "1.2.3",
    contents = "{\"event\":\"login\"}"
};

Log_Send(logSendParam, OnLogSendFinished);

Notes

  • Log_Send() 의 입력 파라미터로만 사용돼요.
  • 값을 모르는 필드는 기본값(숫자 0, 문자열 null/빈 값)으로 남겨 둘 수 있어요.
  • C# 구조체이므로 별도의 생성·해제 절차가 필요하지 않아요. GC 가 메모리를 관리해요.
  • 로그 기능은 모듈 전체가 3.4.1 에 추가되었어요.

See Also


StovePCOrderProduct

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

Description

StovePCStartPurchaseParam.products 배열의 원소 타입으로, 구매를 요청할 상품 ID와 개수, 판매가를 지정하는 입력 구조체예요.

호출자가 값을 채워 IAP_StartPurchase / IAP_StartPurchaseEx에 전달해요.

Declaration

csharp
public struct StovePCOrderProduct

Members

NameTypeRequiredDescription
productIdlongY구매할 상품의 ID예요.
salePricedoubleY상품의 판매가예요.
quantityintY구매할 개수예요.

Example

csharp
using static Stove.PCSDK.IAP;

StovePCOrderProduct orderProduct = new StovePCOrderProduct();
orderProduct.productId = 123456;
orderProduct.salePrice = 1000;
orderProduct.quantity = 1;

Notes

  • salePrice는 상품 조회 결과인 StovePCProduct.salePrice와 동일한 값을 전달해야 서버 측 가격 검증을 통과해요.

See Also


StovePCOverImmersion

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

Description

StovePCOverImmersionBase_OverImmersionNotification 으로 등록한 OnOverImmersionFinished 콜백이 전달하는 구조체예요. SDK 가 값을 채워 콜백으로 넘겨요.

Declaration

csharp
public struct StovePCOverImmersion
{
    public string warningMessage;
    public int elapsedTimeInHours;
    public int minExposureTimeInSeconds;
}

Members

NameTypeDescription
warningMessagestring경고 메시지
elapsedTimeInHoursint누적 이용 시간(시간 단위)
minExposureTimeInSecondsint최소 노출 시간(초 단위)

Example

csharp
using static Stove.PCSDK.Base;

void OnOverImmersionFinished(CallbackResult callbackResult, StovePCOverImmersion overImmersion)
{
    if (callbackResult.result.IsSuccessful())
    {
        // overImmersion.warningMessage 등을 사용해 경고를 표시하는 로직을 구현해 주세요.
    }
}

Base_OverImmersionNotification(OnOverImmersionFinished);

Notes

See Also


StovePCPaymentOperation

종류 열거형 · 모듈 IAP · 버전 3.0.0.4 · 폐기 예정

Description

폐기(deprecated)된 IAP_StartPayment 전용 값이에요. IAP_StartPayment 를 사용하지 않는다면 이 값도 사용하지 않아요.

StovePCPaymentOption.operation 필드에 대입해, IAP_StartPayment / IAP_StartPaymentEx 호출 시 결제 웹뷰 팝업의 동작 방식을 지정하는 값이에요.

성공/실패를 나타내는 값이 아니라 동작 모드를 나타내는 값이에요.

Declaration

csharp
public enum StovePCPaymentOperation
{
    DEFAULT = 0,
    WITH_WEBVIEW,
    _MAX_COUNT
}

Enum Values

CodeNameDescription
0DEFAULT기본 동작으로 결제를 진행해요
1WITH_WEBVIEW웹뷰를 사용해 결제를 진행해요
2_MAX_COUNT사용하지 않아요 (값 개수를 나타내는 내부 경계값)

Example

csharp
using static Stove.PCSDK.IAP;

StovePCPaymentOption option = new StovePCPaymentOption();
option.operation = StovePCPaymentOperation.WITH_WEBVIEW;

Notes

See Also


StovePCPaymentOption

종류 구조체 · 모듈 IAP · 버전 3.0.0.4 · 폐기 예정

Description

폐기(deprecated)된 IAP_StartPayment 전용 구조체예요. 대신 StovePCPurchaseOption 을 사용하는 IAP_StartPurchase 를 사용하세요.

IAP_StartPayment / IAP_StartPaymentEx 호출 시 결제 웹뷰 팝업의 동작 방식과 위치·크기를 지정하는 입력 구조체예요.

호출자가 값을 채워 전달해요.

Declaration

csharp
public struct StovePCPaymentOption

Members

NameTypeRequiredDescription
operationStovePCPaymentOperationY결제 팝업의 동작 방식이에요.
webviewModeWebViewModeY웹뷰를 외부/내부 중 어떤 방식으로 띄울지 지정해요.
webviewPosXintY웹뷰 팝업의 X 좌표예요.
webviewPosYintY웹뷰 팝업의 Y 좌표예요.
webviewWidthintY웹뷰 팝업의 너비예요.
webviewHeightintY웹뷰 팝업의 높이예요.

Example

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

StovePCPaymentOption option = new StovePCPaymentOption();
option.operation = StovePCPaymentOperation.WITH_WEBVIEW;
option.webviewMode = WebViewMode.INTERNAL;
option.webviewPosX = 0;
option.webviewPosY = 0;
option.webviewWidth = 800;
option.webviewHeight = 600;

Notes

See Also


StovePCPopupDisallowed

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

Description

View_SetPopupDisallowed의 입력 파라미터예요. 어떤 팝업을 며칠 동안 숨길지를 지정해요.

호출자가 필드를 채운 값을 만들어 View_SetPopupDisallowed에 그대로 전달해요. 값 타입(struct)이므로 GC가 관리하며, 별도로 생성·해제하는 API는 없어요.

Declaration

csharp
public struct StovePCPopupDisallowed
{
    public uint popupId;
    public uint days;
}

Members

NameTypeDescription
popupIduint숨길 팝업의 식별자예요.
daysuint팝업을 숨길 기간(일)이에요.

Example

csharp
var popupDisallowed = new StovePCPopupDisallowed
{
    popupId = 1001,
    days = 7,
};

// View_SetPopupDisallowed(popupDisallowed, ...); 를 호출합니다.

Notes

  • 값 타입(struct)이므로 API 호출이 끝난 뒤 별도로 해제할 필요가 없어요.
  • popupId 는 SDK 호출로 얻는 값이 아니에요. AutoPopup/ManualPopup/NewsPopup/CouponPopup 계열 API의 콜백은 팝업 식별자를 반환하지 않으며, 차단 여부는 서버 API 없이 클라이언트 로컬 DB 에만 저장돼요. 따라서 팝업을 등록할 때 부여된 식별자를 게임(스튜디오) 쪽에서 별도로 알고 있어야 이 값을 채울 수 있어요.

See Also


StovePCProduct

종류 구조체 · 모듈 IAP · 버전 3.0.0.4 · 폐기 예정

Description

폐기(deprecated)된 IAP_FetchProducts 기본형의 콜백 타입이에요. 대신 StovePCProductEx 를 사용하는 IAP_FetchProductsEx 를 사용하세요.

IAP_FetchProducts의 콜백으로 전달되는 StovePCProduct[] 배열의 원소 타입이에요. 상품의 기본 정보, 가격·할인 정보, 수량·구매 제한 정보를 담아요. 31개 필드를 가져요.

StovePCProductEx는 이 구조체의 모든 필드에 구매 가능 여부 코드(purchaseAvailabilityCode)를 추가한 확장판이에요. IAP_FetchProductsStovePCProduct를, IAP_FetchProductsExStovePCProductEx를 사용해요. 두 API 모두 입력 파라미터(StovePCFetchProductParam)는 동일하며 반환 타입만 달라요. IAP_FetchProducts는 폐기(deprecated)되었으므로, 실제 연동에는 항상 IAP_FetchProductsEx를 사용해 주세요.

SDK가 콜백으로 값을 채워서 돌려주는 출력 전용 구조체예요. 호출자가 직접 생성하지 않아요.

Declaration

csharp
public struct StovePCProduct

Members

기본 정보

NameTypeDescription
productIdlong상품 ID예요.
gameItemIdstring게임 아이템 ID예요.
namestring상품 이름이에요.
descriptionstring상품 설명이에요.
quantityint상품 하나당 지급 수량이에요.
productTypeCodeProductTypeCode상품 종류예요.
categoryIdstring상품이 속한 카테고리 ID예요.
categoryNamestring상품이 속한 카테고리 이름이에요.
thumbnailUrlstring썸네일 이미지 URL이에요.

가격·할인 정보

NameTypeDescription
currencyCodestring통화 코드예요.
pricedouble정가예요.
displayPricedouble화면에 표시할 정가예요.
displayPriceStringstring화면에 표시할 정가 문자열이에요.
salePricedouble판매가예요.
displaySalePricedouble화면에 표시할 판매가예요.
displaySalePriceStringstring화면에 표시할 판매가 문자열이에요.
isDiscountbool할인 중인지 여부예요.
discountTypeDiscountType할인 방식(정률/정액)이에요.
discountTypeValueint할인율 또는 할인 금액이에요.
discountBeginDatelong할인 시작 시각이에요.
discountEndDatelong할인 종료 시각이에요.

수량·구매 제한 정보

NameTypeDescription
totalQuantityint총 판매 가능 수량이에요.
memberQuantityint회원(계정) 단위 판매 가능 수량이에요.
guidQuantityintGUID(캐릭터) 단위 판매 가능 수량이에요.
canWithdrawbool환불(취소) 가능한 상품인지 여부예요.
purchasedAtLeastOncebool이 사용자가 한 번이라도 구매한 적이 있는지 여부예요.
purchaseLimitTypeCodePurchaseLimitTypeCode구매 제한 기준(회원/캐릭터 등)이에요.
purchaseLimitCountint구매 제한 개수예요.
saleLimitCountint판매 제한 개수예요.
saleBeginDatelong판매 시작 시각이에요.
saleEndDatelong판매 종료 시각이에요.

Example

csharp
using static Stove.PCSDK.IAP;

void OnFetchProductsFinished(CallbackResult callbackResult, StovePCProduct[] products)
{
    if (!callbackResult.result.IsSuccessful())
    {
        return;
    }

    foreach (var product in products)
    {
        // product.name, product.displaySalePriceString 등으로 상품 목록 UI 로직을 구현해 주세요.
    }
}

Notes

  • isDiscounttrue일 때만 discountType, discountTypeValue, discountBeginDate, discountEndDate가 유효해요.
  • 구매 요청 시(StovePCOrderProduct) salePrice를 그대로 전달해야 해요.

See Also


StovePCProductEx

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

Description

IAP_FetchProductsEx의 콜백으로 전달되는 StovePCProductEx[] 배열의 원소 타입이에요. StovePCProduct의 31개 필드를 모두 그대로 가지며, purchaseAvailabilityCode 필드가 추가되어 총 32개 필드를 가져요.

StovePCProductStovePCProductEx는 서로 다른 구조체이며 상호 변환되지 않아요. IAP_FetchProductsStovePCProduct를, IAP_FetchProductsExStovePCProductEx를 사용해요. 두 API의 입력 파라미터(StovePCFetchProductParam)는 동일해요.

SDK가 콜백으로 값을 채워서 돌려주는 출력 전용 구조체예요. 호출자가 직접 생성하지 않아요.

Declaration

csharp
public struct StovePCProductEx

Members

기본 정보

NameTypeDescription
productIdlong상품 ID예요.
gameItemIdstring게임 아이템 ID예요.
namestring상품 이름이에요.
descriptionstring상품 설명이에요.
quantityint상품 하나당 지급 수량이에요.
productTypeCodeProductTypeCode상품 종류예요.
categoryIdstring상품이 속한 카테고리 ID예요.
categoryNamestring상품이 속한 카테고리 이름이에요.
thumbnailUrlstring썸네일 이미지 URL이에요.

가격·할인 정보

NameTypeDescription
currencyCodestring통화 코드예요.
pricedouble정가예요.
displayPricedouble화면에 표시할 정가예요.
displayPriceStringstring화면에 표시할 정가 문자열이에요.
salePricedouble판매가예요.
displaySalePricedouble화면에 표시할 판매가예요.
displaySalePriceStringstring화면에 표시할 판매가 문자열이에요.
isDiscountbool할인 중인지 여부예요.
discountTypeDiscountType할인 방식(정률/정액)이에요.
discountTypeValueint할인율 또는 할인 금액이에요.
discountBeginDatelong할인 시작 시각이에요.
discountEndDatelong할인 종료 시각이에요.

수량·구매 제한 정보

NameTypeDescription
totalQuantityint총 판매 가능 수량이에요.
memberQuantityint회원(계정) 단위 판매 가능 수량이에요.
guidQuantityintGUID(캐릭터) 단위 판매 가능 수량이에요.
canWithdrawbool환불(취소) 가능한 상품인지 여부예요.
purchasedAtLeastOncebool이 사용자가 한 번이라도 구매한 적이 있는지 여부예요.
purchaseLimitTypeCodePurchaseLimitTypeCode구매 제한 기준(회원/캐릭터 등)이에요.
purchaseLimitCountint구매 제한 개수예요.
saleLimitCountint판매 제한 개수예요.
saleBeginDatelong판매 시작 시각이에요.
saleEndDatelong판매 종료 시각이에요.

구매 가능 여부 (Ex 확장 필드)

NameTypeDescription
purchaseAvailabilityCodeshort이 상품을 현재 구매할 수 있는지 나타내는 코드예요.

Example

csharp
using static Stove.PCSDK.IAP;

void OnFetchProductsExFinished(CallbackResult callbackResult, StovePCProductEx[] products)
{
    if (!callbackResult.result.IsSuccessful())
    {
        return;
    }

    foreach (var product in products)
    {
        // product.purchaseAvailabilityCode 로 구매 가능 여부를 먼저 확인한 뒤
        // product.name, product.displaySalePriceString 등으로 상품 목록 UI 로직을 구현해 주세요.
    }
}

Notes

  • purchaseAvailabilityCode를 제외한 나머지 필드의 의미는 StovePCProduct와 동일해요.
  • isDiscounttrue일 때만 discountType, discountTypeValue, discountBeginDate, discountEndDate가 유효해요.

See Also


StovePCPurchasedProduct

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

Description

StovePCPurchaseResult.purchasedProducts 배열과 IAP_ConfirmPurchase 콜백의 purchasedProducts 배열에 담기는 원소 타입으로, 실제로 구매 처리된 상품의 상세 수량 정보를 나타내요.

SDK가 콜백으로 값을 채워서 돌려주는 출력 전용 구조체예요. 호출자가 직접 생성하지 않아요.

Declaration

csharp
public struct StovePCPurchasedProduct

Members

NameTypeDescription
transactionDetailNumberlong거래 상세 번호예요.
productIdlong구매된 상품의 ID예요.
categoryIdstring상품이 속한 카테고리 ID예요.
totalQuantityint지급된 총 수량이에요.
memberQuantityint회원(계정) 단위로 지급된 수량이에요.
guidQuantityintGUID(캐릭터) 단위로 지급된 수량이에요.

Example

csharp
using static Stove.PCSDK.IAP;

void OnConfirmPurchaseFinished(CallbackResult callbackResult, bool status, StovePCPurchasedProduct[] purchasedProducts, StovePCChargeInfo[] chargeInfos)
{
    if (!callbackResult.result.IsSuccessful())
    {
        return;
    }

    foreach (var purchased in purchasedProducts)
    {
        // purchased.productId, purchased.totalQuantity 등으로 지급 처리 로직을 구현해 주세요.
    }
}

Notes

See Also


StovePCPurchaseOperation

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

Description

StovePCPurchaseOption.operation 필드에 대입해, IAP_StartPurchase / IAP_StartPurchaseEx 호출 시 구매 웹뷰 팝업의 동작 방식을 지정하는 값이에요.

성공/실패를 나타내는 값이 아니라 동작 모드를 나타내는 값이에요.

Declaration

csharp
public enum StovePCPurchaseOperation
{
    DEFAULT = 0,
    WITH_WEBVIEW,
    WITH_WEBVIEW_AND_CONFIRM_RESULT,
    _MAX_COUNT
}

Enum Values

CodeNameDescription
0DEFAULT기본 동작으로 구매를 진행해요
1WITH_WEBVIEW웹뷰를 사용해 구매를 진행해요
2WITH_WEBVIEW_AND_CONFIRM_RESULT웹뷰를 사용하고, 결과 확인 단계까지 포함해 구매를 진행해요
3_MAX_COUNT사용하지 않아요 (값 개수를 나타내는 내부 경계값)

Example

csharp
using static Stove.PCSDK.IAP;

StovePCPurchaseOption option = new StovePCPurchaseOption();
option.operation = StovePCPurchaseOperation.WITH_WEBVIEW;

Notes

See Also


StovePCPurchaseOption

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

Description

StovePCStartPurchaseParam.option 필드에 담겨, IAP_StartPurchase / IAP_StartPurchaseEx 호출 시 구매 웹뷰 팝업의 동작 방식과 위치·크기를 지정하는 입력 구조체예요.

호출자가 값을 채워 전달해요.

Declaration

csharp
public struct StovePCPurchaseOption

Members

NameTypeRequiredDescription
operationStovePCPurchaseOperationY구매 팝업의 동작 방식이에요.
webviewModeWebViewModeY웹뷰를 외부/내부 중 어떤 방식으로 띄울지 지정해요.
webviewPosXintY웹뷰 팝업의 X 좌표예요.
webviewPosYintY웹뷰 팝업의 Y 좌표예요.
webviewWidthintY웹뷰 팝업의 너비예요.
webviewHeightintY웹뷰 팝업의 높이예요.

Example

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

StovePCPurchaseOption option = new StovePCPurchaseOption();
option.operation = StovePCPurchaseOperation.WITH_WEBVIEW;
option.webviewMode = WebViewMode.INTERNAL;
option.webviewPosX = 0;
option.webviewPosY = 0;
option.webviewWidth = 800;
option.webviewHeight = 600;

Notes

See Also


StovePCPurchaseResult

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

Description

IAP_StartPurchase / IAP_StartPurchaseEx의 콜백으로 전달되는 구매 처리 결과예요. 거래 번호, 추가 결제창 필요 여부, 실제로 지급된 상품·차감된 재화 내역을 담아요.

SDK가 콜백으로 값을 채워서 돌려주는 출력 전용 구조체예요. 호출자가 직접 생성하지 않아요.

Declaration

csharp
public struct StovePCPurchaseResult

Members

NameTypeDescription
transactionMasterNumberlong거래 마스터 번호예요.
transactionDetailNumberslong[]거래 상세 번호 목록이에요.
oneTimePaymentUrlstring추가 결제창을 띄워야 할 때 사용하는 1회용 결제 URL이에요.
purchaseProgressPurchaseProgress결제창을 추가로 띄워야 하는지를 나타내요.
purchasedbool구매가 완료되었는지 여부예요.
extraDatastringStovePCStartPurchaseParam.extraData로 전달했던 값이 그대로 되돌아와요.
purchasedProductsStovePCPurchasedProduct[]실제로 지급된 상품 목록이에요.
chargeInfosStovePCChargeInfo[]구매 대가로 차감된 재화 내역이에요.

Example

csharp
using static Stove.PCSDK.IAP;

void OnStartPurchaseFinished(CallbackResult callbackResult, StovePCPurchaseResult purchase)
{
    if (!callbackResult.result.IsSuccessful())
    {
        return;
    }

    if (purchase.purchaseProgress == PurchaseProgress.NEED_PAYMENT_WINDOW)
    {
        // purchase.oneTimePaymentUrl 로 결제창을 띄우는 로직을 구현해 주세요.
    }
    else if (purchase.purchased)
    {
        // purchase.purchasedProducts 로 지급 처리 로직을 구현해 주세요.
    }
}

Notes

  • purchaseProgressNEED_PAYMENT_WINDOW이면 oneTimePaymentUrl을 확인해야 해요.
  • 이 구조체는 IAP_ConfirmPurchase의 결과와는 별개예요. IAP_ConfirmPurchasepurchasedProducts, chargeInfos를 별도의 콜백 인자로 돌려줘요.

See Also


StovePCRefreshUserBenefits

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

Description

PCBang_UserLogin 의 로그인이 성공한 이후, 4분마다 onRefreshBenefitsFinished 콜백에 전달되는 구조체예요.

이 구조체는 SDK 가 생성하여 콜백 인자로 전달해요.

최초 로그인 결과(StovePCBangUserLogin)와는 별개의 구조체예요.

Declaration

csharp
public struct StovePCRefreshUserBenefits
{
    public PCBangPremium premiumStatus;
    public int remainTime;
}

Members

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

Example

csharp
void OnRefreshBenefitsFinished(CallbackResult result, StovePCRefreshUserBenefits benefits)
{
    if (result.result.IsSuccessful())
    {
        var premium = benefits.premiumStatus;
        var remainTime = benefits.remainTime;
    }
}

Notes

  • PCBang_UserLoginonRefreshBenefitsFinished 콜백에만 4분마다 반복 전달돼요.
  • StovePCBangUserLogin 과 필드 구성이 비슷하지만 pcBangSerialNumber 필드는 없어요.
  • C# 구조체이므로 별도의 생성·해제 절차가 필요하지 않아요. GC 가 메모리를 관리해요.

See Also


StovePCShopCategory

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

Description

IAP_FetchShopCategories의 콜백으로 전달되는 StovePCShopCategory[] 배열의 원소 타입이에요. 상점에 등록된 카테고리 하나를 나타내요.

SDK가 콜백으로 값을 채워서 돌려주는 출력 전용 구조체예요. 호출자가 직접 생성하지 않아요.

Declaration

csharp
public struct StovePCShopCategory

Members

NameTypeDescription
categoryIdstring카테고리 ID예요.
parentCategoryIdstring상위 카테고리 ID예요. 최상위 카테고리이면 값이 없을 수 있어요.
displayNumberint카테고리 표시 순서예요.
namestring카테고리 이름이에요.
depthint카테고리 트리에서의 깊이예요.

Example

csharp
using static Stove.PCSDK.IAP;

void OnFetchShopCategoriesFinished(CallbackResult callbackResult, StovePCShopCategory[] shopCategories)
{
    if (!callbackResult.result.IsSuccessful())
    {
        return;
    }

    foreach (var category in shopCategories)
    {
        // category.categoryId, category.name 등을 활용하는 로직을 구현해 주세요.
    }
}

Notes

  • parentCategoryIddepth로 카테고리 트리 구조를 구성할 수 있어요.

See Also


StovePCShutdown

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

Description

StovePCShutdownBase_ShutdownNotification 으로 등록한 OnShutdownFinished 콜백이 전달하는 구조체예요. SDK 가 값을 채워 콜백으로 넘겨요.

Declaration

csharp
public struct StovePCShutdown
{
    public string shutdownMessage;
    public int exposureTimeInSeconds;
    public int inadvanceTimeInMinutes;
}

Members

NameTypeDescription
shutdownMessagestring셧다운 안내 메시지
exposureTimeInSecondsint노출 시간(초 단위)
inadvanceTimeInMinutesint셧다운까지 남은 사전 안내 시간(분 단위)

Example

csharp
using static Stove.PCSDK.Base;

void OnShutdownFinished(CallbackResult callbackResult, StovePCShutdown shutdown)
{
    if (callbackResult.result.IsSuccessful())
    {
        // shutdown.shutdownMessage 등을 사용해 안내를 표시하는 로직을 구현해 주세요.
    }
}

Base_ShutdownNotification(OnShutdownFinished);

Notes

  • 이 구조체는 게임이 직접 생성하지 않고, Base_ShutdownNotification 콜백으로만 전달돼요.
  • 셧다운 적용 대상 계정이면 해외에서도 이 콜백이 호출돼요. 한국 전용 기능이 아니에요.

See Also


StovePCSignin

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

Description

StovePCSigninBase_GetSignin 이 채워 돌려주는 구조체예요. 호출자가 미리 선언한 변수를 ref 로 넘기면 SDK 가 값을 채워요.

Declaration

csharp
public struct StovePCSignin
{
    public bool personVerify;
    public bool emailVerify;
    public string nationality;
    public string providerCode;
    public int accountType;
}

Members

NameTypeDescription
personVerifybool본인 인증 여부
emailVerifybool이메일 인증 여부
nationalitystring국적
providerCodestring로그인 제공자 코드
accountTypeint계정 유형

Example

csharp
using static Stove.PCSDK.Base;

StovePCSignin signin = default;
Result result = Base_GetSignin(ref signin);

if (result.IsSuccessful())
{
    // signin.personVerify, signin.nationality 등을 사용하는 로직을 구현해 주세요.
}
else
{
    // 실패 시 로직을 구현해 주세요.
}

Notes

See Also


StovePCStartPurchaseParam

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

Description

IAP_StartPurchase / IAP_StartPurchaseEx 호출 시 구매할 상품 목록, 팝업 옵션, 서비스 거래 번호, 부가 데이터를 지정하는 입력 구조체예요.

호출자가 값을 채워 전달해요.

Declaration

csharp
public struct StovePCStartPurchaseParam

Members

NameTypeRequiredDescription
productsStovePCOrderProduct[]Y구매할 상품 목록이에요.
productsSizeuintYproducts 배열의 개수예요.
optionStovePCPurchaseOptionY구매 팝업의 동작 방식과 위치·크기예요.
serviceTxnNostringY게임(서비스) 측에서 발급한 거래 번호예요.
extraDatastringY게임에서 자유롭게 사용할 부가 데이터예요. 구매 완료 시 StovePCPurchaseResult.extraData로 그대로 되돌아와요.

Example

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

StovePCOrderProduct orderProduct = new StovePCOrderProduct();
orderProduct.productId = 123456;
orderProduct.salePrice = 1000;
orderProduct.quantity = 1;

StovePCPurchaseOption option = new StovePCPurchaseOption();
option.operation = StovePCPurchaseOperation.WITH_WEBVIEW;
option.webviewMode = WebViewMode.INTERNAL;
option.webviewWidth = 800;
option.webviewHeight = 600;

StovePCStartPurchaseParam purchaseParam = new StovePCStartPurchaseParam();
purchaseParam.products = new StovePCOrderProduct[] { orderProduct };
purchaseParam.productsSize = 1;
purchaseParam.option = option;
purchaseParam.serviceTxnNo = "YOUR_SERVICE_TXN_NO";
purchaseParam.extraData = "";

IAP_StartPurchase(purchaseParam, OnStartPurchaseFinished);

Notes

  • productsSizeproducts 배열의 실제 길이와 일치해야 해요.
  • extraData는 구매 완료 콜백까지 그대로 유지되어 되돌아오므로, 요청과 결과를 연결하는 용도로 활용할 수 있어요.

See Also


StovePCTermsOperation

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

Description

StovePCTermsOption.operation 필드에 대입해, IAP_FetchTermsAgreement / IAP_FetchTermsAgreementEx 호출 시 약관 동의 웹뷰 팝업의 동작 방식을 지정하는 값이에요.

성공/실패를 나타내는 값이 아니라 동작 모드를 나타내는 값이에요.

Declaration

csharp
public enum StovePCTermsOperation
{
    DEFAULT = 0,
    WITH_WEBVIEW,
    _MAX_COUNT
}

Enum Values

CodeNameDescription
0DEFAULT기본 동작으로 약관 동의 여부를 조회해요
1WITH_WEBVIEW웹뷰를 사용해 약관 동의를 진행해요
2_MAX_COUNT사용하지 않아요 (값 개수를 나타내는 내부 경계값)

Example

csharp
using static Stove.PCSDK.IAP;

StovePCTermsOption option = new StovePCTermsOption();
option.operation = StovePCTermsOperation.WITH_WEBVIEW;

Notes

See Also


StovePCTermsOption

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

Description

IAP_FetchTermsAgreement / IAP_FetchTermsAgreementEx 호출 시 약관 동의 웹뷰 팝업의 동작 방식과 위치·크기를 지정하는 입력 구조체예요.

호출자가 값을 채워 전달해요.

Declaration

csharp
public struct StovePCTermsOption

Members

NameTypeRequiredDescription
operationStovePCTermsOperationY약관 동의 팝업의 동작 방식이에요.
webviewModeWebViewModeY웹뷰를 외부/내부 중 어떤 방식으로 띄울지 지정해요.
webviewPosXintY웹뷰 팝업의 X 좌표예요.
webviewPosYintY웹뷰 팝업의 Y 좌표예요.
webviewWidthintY웹뷰 팝업의 너비예요.
webviewHeightintY웹뷰 팝업의 높이예요.

Example

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

StovePCTermsOption option = new StovePCTermsOption();
option.operation = StovePCTermsOperation.WITH_WEBVIEW;
option.webviewMode = WebViewMode.INTERNAL;
option.webviewPosX = 0;
option.webviewPosY = 0;
option.webviewWidth = 800;
option.webviewHeight = 600;

Notes

See Also


StovePCToken

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

Description

StovePCTokenBase_AccessTokenRenewed 로 등록한 OnRenewTokenFinished 콜백이 전달하는 구조체예요. SDK 가 값을 채워 콜백으로 넘겨요.

Declaration

csharp
public struct StovePCToken
{
    public string accessToken;
    public int expireIn;
}

Members

NameTypeDescription
accessTokenstring갱신된 액세스 토큰
expireInint만료 시간

Example

csharp
using static Stove.PCSDK.Base;

void OnRenewTokenFinished(CallbackResult callbackResult, StovePCToken token)
{
    if (callbackResult.result.IsSuccessful())
    {
        // token.accessToken, token.expireIn 을 사용하는 로직을 구현해 주세요.
    }
}

Base_AccessTokenRenewed(OnRenewTokenFinished);

Notes

  • Base_GetAccessToken 은 이 구조체가 아니라 문자열을 직접 돌려줘요. StovePCToken 은 토큰이 갱신되는 시점에 콜백으로만 전달돼요.

See Also


StovePCTraceHint

종류 구조체 · 모듈 Base · 버전 3.0.0.4 · 폐기 예정

Description

폐기(deprecated)된 기능이에요. 신규 인터페이스에서도 제공하지 않아요.

StovePCTraceHintBase_GetTraceHint 가 채워 돌려주는 구조체예요. 호출자가 미리 선언한 변수를 ref 로 넘기면 SDK 가 값을 채워요.

Declaration

csharp
public struct StovePCTraceHint
{
    public string sessionId;
    public string refSessionId;
    public string uuid;
    public string serviceProtocol;
    public string refSourceType;
}

Members

NameTypeDescription
sessionIdstring세션 ID
refSessionIdstring참조 세션 ID
uuidstringUUID
serviceProtocolstring서비스 프로토콜
refSourceTypestring참조 소스 타입

Example

csharp
using static Stove.PCSDK.Base;

StovePCTraceHint traceHint = default;
Result result = Base_GetTraceHint(ref traceHint);

if (result.IsSuccessful())
{
    // traceHint.sessionId 등을 로그에 남기는 로직을 구현해 주세요.
}
else
{
    // 실패 시 로직을 구현해 주세요.
}

Notes

See Also


StovePCUser

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

Description

StovePCUserBase_GetUser 가 채워 돌려주는 구조체예요. 호출자가 미리 선언한 변수를 ref 로 넘기면 SDK 가 값을 채워요.

Declaration

csharp
public struct StovePCUser
{
    public string nickname;
    public ulong gameUserId;
}

Members

NameTypeDescription
nicknamestring닉네임
gameUserIdulong게임 유저 ID

Example

csharp
using static Stove.PCSDK.Base;

StovePCUser user = default;
Result result = Base_GetUser(ref user);

if (result.IsSuccessful())
{
    // user.nickname, user.gameUserId 를 사용하는 로직을 구현해 주세요.
}
else
{
    // 실패 시 로직을 구현해 주세요.
}

Notes

  • Base_GetUser 호출 전에는 값이 채워지지 않아요.

See Also


StovePCVietnamAgeRatingInfo

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

Description

StovePCVietnamAgeRatingInfoBase_VietnamAgeRatingNotification 으로 등록한 OnVietnamAgeRatingFinished 콜백이 전달하는 구조체예요. SDK 가 값을 채워 콜백으로 넘겨요.

Declaration

csharp
public struct StovePCVietnamAgeRatingInfo
{
    public StoveOverlayMode overlayMode;
    public int overlayType;
    public float overlayScale;
    public float overlayOpacity;
    public int ageRating;
    public string message;
    public float displayPositionX;
    public float displayPositionY;
    public string language;
}

Members

NameTypeDescription
overlayModeStoveOverlayMode오버레이 표시 모드
overlayTypeint오버레이 타입
overlayScalefloat오버레이 크기 비율
overlayOpacityfloat오버레이 투명도
ageRatingint연령등급
messagestring표시 메시지
displayPositionXfloat표시 위치 X 좌표
displayPositionYfloat표시 위치 Y 좌표
languagestring언어

Example

csharp
using static Stove.PCSDK.Base;

void OnVietnamAgeRatingFinished(CallbackResult callbackResult, StovePCVietnamAgeRatingInfo vietnamAgeRatingInfo)
{
    if (callbackResult.result.IsSuccessful())
    {
        // vietnamAgeRatingInfo.message, vietnamAgeRatingInfo.ageRating 등으로
        // 오버레이를 그리는 로직을 구현해 주세요.
    }
}

Base_VietnamAgeRatingNotification(OnVietnamAgeRatingFinished);

Notes

  • 이 구조체는 게임이 직접 생성하지 않고, Base_VietnamAgeRatingNotification 콜백으로만 전달돼요.
  • 이 콜백은 렌더링이 가능한 시점 이후에 등록해야 해요.

See Also


StovePCVietnamOverimmersionInfo

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

Description

StovePCVietnamOverimmersionInfoBase_VietnamOverimmersionNotification 으로 등록한 OnVietnamOverimmersionFinished 콜백이 전달하는 구조체예요. SDK 가 값을 채워 콜백으로 넘겨요.

Declaration

csharp
public struct StovePCVietnamOverimmersionInfo
{
    public StoveOverlayMode overlayMode;
    public int overlayType;
    public float overlayScale;
    public float overlayOpacity;
    public int ageRating;
    public string message;
    public string styledMessage;
    public int elapsedTime;
    public int exposureTime;
    public float expandAnimationTime;
    public float displayPositionX;
    public float displayPositionY;
    public string language;
}

Members

NameTypeDescription
overlayModeStoveOverlayMode오버레이 표시 모드
overlayTypeint오버레이 타입
overlayScalefloat오버레이 크기 비율
overlayOpacityfloat오버레이 투명도
ageRatingint연령등급
messagestring표시 메시지
styledMessagestring스타일이 적용된 표시 메시지
elapsedTimeint누적 이용 시간
exposureTimeint노출 시간
expandAnimationTimefloat확장 애니메이션 시간
displayPositionXfloat표시 위치 X 좌표
displayPositionYfloat표시 위치 Y 좌표
languagestring언어

Example

csharp
using static Stove.PCSDK.Base;

void OnVietnamOverimmersionFinished(CallbackResult callbackResult, StovePCVietnamOverimmersionInfo vietnamOverimmersionInfo)
{
    if (callbackResult.result.IsSuccessful())
    {
        // vietnamOverimmersionInfo.message, vietnamOverimmersionInfo.styledMessage 등으로
        // 오버레이를 그리는 로직을 구현해 주세요.
    }
}

Base_VietnamOverimmersionNotification(OnVietnamOverimmersionFinished);

Notes

  • 이 구조체는 게임이 직접 생성하지 않고, Base_VietnamOverimmersionNotification 콜백으로만 전달돼요.
  • 이 콜백은 렌더링이 가능한 시점 이후에 등록해야 해요.

See Also


StovePCVoidedPurchase

종류 구조체 · 모듈 IAP · 버전 3.0.0.4 · 폐기 예정

Description

환불 조회 기능은 폐기(deprecated)된 기능이에요. 신규 인터페이스에서는 제공하지 않아요.

IAP_FetchVoidedPurchases의 콜백으로 전달되는 StovePCVoidedPurchase[] 배열의 원소 타입이에요. 마켓에서 취소(환불) 처리된 구매 내역 하나를 나타내요.

SDK가 콜백으로 값을 채워서 돌려주는 출력 전용 구조체예요. 호출자가 직접 생성하지 않아요.

Declaration

csharp
public struct StovePCVoidedPurchase

Members

NameTypeDescription
tidlong거래 ID예요.
marketCodestring구매가 발생한 마켓 코드예요.
productIdstring상품 ID예요.
marketProductIdstring마켓에서 사용하는 상품 ID예요.
userIdstring사용자 ID예요.
characterNolong캐릭터 번호예요.
purchaseMillislong구매 시각(밀리초)예요.
voidedMillislong취소 처리된 시각(밀리초)예요.

Example

csharp
using static Stove.PCSDK.IAP;

void OnFetchVoidedPurchasesFinished(CallbackResult callbackResult, StovePCVoidedPurchase[] voidedPurchase)
{
    if (!callbackResult.result.IsSuccessful())
    {
        return;
    }

    foreach (var voided in voidedPurchase)
    {
        // voided.productId, voided.voidedMillis 등으로 취소된 지급 회수 로직을 구현해 주세요.
    }
}

Notes

See Also


StovePCVoidedPurchasesEx

종류 구조체 · 모듈 IAP · 버전 3.4.1 · 폐기 예정

Description

이 타입은 현재 SDK 에서 제공하지 않아요. 이 구조체를 사용하던 IAP_FetchVoidedPurchasesEx() 도 함께 제공되지 않아요. 환불 조회 기능 자체도 폐기(deprecated)된 기능이에요.

IAP_FetchVoidedPurchasesEx의 콜백으로 전달되는 StovePCVoidedPurchasesEx[] 배열의 원소 타입이에요. StovePCVoidedPurchase와 같은 역할을 하지만, 회원 번호(memberNo)·GUID·마켓 거래 ID 등 더 많은 필드를 제공해요.

SDK가 콜백으로 값을 채워서 돌려주는 출력 전용 구조체예요. 호출자가 직접 생성하지 않아요.

Declaration

csharp
public struct StovePCVoidedPurchasesEx

Members

NameTypeDescription
tidlong거래 ID예요.
marketCodestring구매가 발생한 마켓 코드예요.
memberNolong회원 번호예요.
guidstringGUID(캐릭터 식별자)예요.
characterNolong캐릭터 번호예요.
inserviceItemIdstring서비스 내 아이템 ID예요.
marketItemIdstring마켓에서 사용하는 아이템 ID예요.
marketTidstring마켓 측 거래 ID예요.
marketUserIdstring마켓 측 사용자 ID예요.
purchaseDtlong구매 시각이에요.
voidedDtlong취소 처리된 시각이에요.

Example

csharp
using static Stove.PCSDK.IAP;

void OnFetchVoidedPurchasesExFinished(CallbackResult callbackResult, StovePCVoidedPurchasesEx[] voidedPurchase)
{
    if (!callbackResult.result.IsSuccessful())
    {
        return;
    }

    foreach (var voided in voidedPurchase)
    {
        // voided.marketTid, voided.voidedDt 등으로 취소된 지급 회수 로직을 구현해 주세요.
    }
}

Notes

See Also


StovePCVoidedPurchasesMarketType

종류 열거형 · 모듈 IAP · 버전 3.4.1 · 폐기 예정

Description

이 타입은 현재 SDK 에서 제공하지 않아요. 이 값을 사용하던 IAP_FetchVoidedPurchasesEx() 도 함께 제공되지 않아요. 환불 조회 기능 자체도 폐기(deprecated)된 기능이에요.

IAP_FetchVoidedPurchasesExmarketType 파라미터에 전달해, 어느 마켓에서 발생한 구매 취소 내역을 조회할지를 지정해요.

Declaration

csharp
public enum StovePCVoidedPurchasesMarketType
{
    ALL = 0,
    STEAM = 1,
    GOOGLE_PLAY = 2,
    APPLE_APP_STORE = 3
}

Enum Values

CodeNameDescription
0ALL모든 마켓의 취소 내역을 조회해요
1STEAMSteam 마켓의 취소 내역만 조회해요
2GOOGLE_PLAYGoogle Play 마켓의 취소 내역만 조회해요
3APPLE_APP_STOREApple App Store 마켓의 취소 내역만 조회해요

Example

csharp
using static Stove.PCSDK.IAP;

IAP_FetchVoidedPurchasesEx(StovePCVoidedPurchasesMarketType.STEAM, OnFetchVoidedPurchasesExFinished);

Notes

See Also


View_AutoPopup

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

Description

WebView를 이용하여 AutoPopup을 실행해요. mode로 지정한 방식(외부 브라우저 또는 Internal Style)으로 WebView가 표시돼요.

호출 전에 View_Initialize 또는 View_InitializeWithWndInfo로 초기화가 되어 있어야 해요.

Declaration

csharp
public static void View_AutoPopup(WebViewMode mode, OnPopupFinished onFinished);

Parameters

NameTypeRequiredDescription
modeWebViewModeYWebView를 실행하는 모드예요.
onFinishedOnPopupFinishedYWebView 실행에 대한 결과를 넘겨받는 콜백 함수예요.

Returns

없음

Callback

csharp
public delegate void OnPopupFinished(CallbackResult result);
NameTypeDescription
resultCallbackResult콜백 결과 값이에요.

onFinished는 WebView 실행 결과가 나왔을 때 1회 전달돼요. 콜백은 Base_RunCallback()을 호출한 스레드에서 실행돼요.

Error Codes

CodeNameDescriptionShow to UserIn-Game Message
0SUCCESS성공x
17NOT_INITIALIZED팝업 기능이 초기화되어 있지 않음. View_Initialize를 먼저 호출해야 해요x
80VIEWUI_NOT_INITIALIZED팝업을 표시할 웹뷰 초기화에 실패함x
82WEBVIEW_CREATE_FAIL팝업 웹뷰 생성에 실패함x
83WEBVIEW_LOAD_URL_FAIL팝업 웹뷰에서 페이지를 불러오지 못함x
84WEBVIEW_CLOSE_ALL_FAIL팝업 생성 전 기존에 열려 있던 팝업을 모두 닫는 데 실패함x
87NO_POPUP_DATA표시할 팝업 설정 정보가 없음O팝업 설정 정보가 존재하지 않아 표시할 창이 없습니다. [확인]
253UNMANAGED_EXCEPTION네이티브 SDK 내부에서 예외가 발생함O일시적으로 문제가 발생했습니다. 다시 시도해 주세요. [확인]
254MANAGED_EXCEPTIONC# 래퍼 내부(마샬링 등)에서 예외가 발생함. CallbackResult.result.exceptionMessage 를 확인해야 해요O일시적으로 문제가 발생했습니다. 다시 시도해 주세요. [확인]

전체 목록은 ViewSDKResultCode 를 참조하세요.

Example

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

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

View_AutoPopup(WebViewMode.INTERNAL, OnAutoPopupFinished);

Notes

  • 팝업의 네이티브 리소스가 해제되는 시점까지 함께 통지받으려면 View_AutoPopupEx를 사용해요.
  • 화면에 표시된 팝업(들)을 한꺼번에 닫으려면 View_CloseAllPopups를 사용해요.

See Also


View_AutoPopupEx

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

Description

WebView를 이용하여 AutoPopup을 실행해요. View_AutoPopup과 동작은 같지만, 팝업의 네이티브 리소스가 완전히 해제되었을 때 전달되는 onDestroy 콜백을 추가로 받을 수 있어요.

호출 전에 View_Initialize 또는 View_InitializeWithWndInfo로 초기화가 되어 있어야 해요.

Declaration

csharp
public static void View_AutoPopupEx(WebViewMode mode, OnPopupFinished onFinished, OnViewPopupDestroyFinished onDestroy);

Parameters

NameTypeRequiredDescription
modeWebViewModeYWebView를 실행하는 모드예요.
onFinishedOnPopupFinishedYWebView 실행에 대한 결과를 넘겨받는 콜백 함수예요.
onDestroyOnViewPopupDestroyFinishedN팝업을 닫을 시 응답받는 콜백 함수예요.

Returns

없음

Callback

csharp
public delegate void OnPopupFinished(CallbackResult result);
public delegate void OnViewPopupDestroyFinished(CallbackResult result);
NameTypeDescription
resultCallbackResult콜백 결과 값이에요.

onFinished는 WebView 실행 결과가 나왔을 때 1회 전달돼요. onDestroy는 팝업의 네이티브 리소스가 완전히 해제되었을 때 1회 전달돼요. 두 콜백 모두 Base_RunCallback()을 호출한 스레드에서 실행돼요.

Error Codes

CodeNameDescriptionShow to UserIn-Game Message
0SUCCESS성공x
17NOT_INITIALIZED팝업 기능이 초기화되어 있지 않음. View_Initialize를 먼저 호출해야 해요x
80VIEWUI_NOT_INITIALIZED팝업을 표시할 웹뷰 초기화에 실패함x
82WEBVIEW_CREATE_FAIL팝업 웹뷰 생성에 실패함x
83WEBVIEW_LOAD_URL_FAIL팝업 웹뷰에서 페이지를 불러오지 못함x
84WEBVIEW_CLOSE_ALL_FAIL팝업 생성 전 기존에 열려 있던 팝업을 모두 닫는 데 실패함x
85WEBVIEW_CLOSE_FAIL팝업을 닫는 데 실패함(onDestroy 콜백으로 전달됨)x
87NO_POPUP_DATA표시할 팝업 설정 정보가 없음O팝업 설정 정보가 존재하지 않아 표시할 창이 없습니다. [확인]
253UNMANAGED_EXCEPTION네이티브 SDK 내부에서 예외가 발생함O일시적으로 문제가 발생했습니다. 다시 시도해 주세요. [확인]
254MANAGED_EXCEPTIONC# 래퍼 내부(마샬링 등)에서 예외가 발생함. CallbackResult.result.exceptionMessage 를 확인해야 해요O일시적으로 문제가 발생했습니다. 다시 시도해 주세요. [확인]

전체 목록은 ViewSDKResultCode 를 참조하세요.

Example

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

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

void OnAutoPopupDestroyed(CallbackResult callbackResult)
{
    // 팝업 리소스 해제가 끝난 뒤 로직을 구현해 주세요.
}

View_AutoPopupEx(WebViewMode.INTERNAL, OnAutoPopupFinished, OnAutoPopupDestroyed);

Notes

  • View_AutoPopup과 달리 팝업 종료(destroy) 통지를 받는 onDestroy 콜백을 추가로 받아요.
  • 화면에 표시된 팝업(들)을 한꺼번에 닫으려면 View_CloseAllPopups를 사용해요.

See Also


View_CloseAllPopups

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

Description

팝업 기능을 통해 열린 모든 팝업을 닫아요.

Declaration

csharp
public static Result View_CloseAllPopups();

Parameters

없음

Returns

TypeDescription
Result함수 호출 결과예요. result.IsSuccessful()로 성공 여부를 확인해요.

Error Codes

CodeNameDescriptionShow to UserIn-Game Message
0SUCCESS성공x
17NOT_INITIALIZED팝업 기능이 초기화되어 있지 않음x
80VIEWUI_NOT_INITIALIZED닫을 팝업의 웹뷰가 초기화되어 있지 않음x
84WEBVIEW_CLOSE_ALL_FAIL열려 있는 팝업을 모두 닫는 데 실패함x
253UNMANAGED_EXCEPTION네이티브 SDK 내부에서 예외가 발생함O일시적으로 문제가 발생했습니다. 다시 시도해 주세요. [확인]
254MANAGED_EXCEPTIONC# 래퍼 내부(마샬링 등)에서 예외가 발생함. Result.exceptionMessage 를 확인해야 해요O일시적으로 문제가 발생했습니다. 다시 시도해 주세요. [확인]

전체 목록은 ViewSDKResultCode 를 참조하세요.

Example

csharp
using static Stove.PCSDK.View;

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

Notes

See Also


View_CouponPopup

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

Description

WebView를 이용하여 CouponPopup을 실행해요.

호출 전에 View_Initialize 또는 View_InitializeWithWndInfo로 초기화가 되어 있어야 해요.

Declaration

csharp
public static void View_CouponPopup(WebViewMode mode, OnPopupFinished onFinished);

Parameters

NameTypeRequiredDescription
modeWebViewModeYWebView를 실행하는 모드예요.
onFinishedOnPopupFinishedYWebView 실행에 대한 결과를 넘겨받는 콜백 함수예요.

Returns

없음

Callback

csharp
public delegate void OnPopupFinished(CallbackResult result);
NameTypeDescription
resultCallbackResult콜백 결과 값이에요.

onFinished는 WebView 실행 결과가 나왔을 때 1회 전달돼요. 콜백은 Base_RunCallback()을 호출한 스레드에서 실행돼요.

Error Codes

CodeNameDescriptionShow to UserIn-Game Message
0SUCCESS성공x
5INVALID_PARAM게임 서버 월드 접속 정보(worldId)가 비어 있음(월드 미접속 상태)x
17NOT_INITIALIZED팝업 기능이 초기화되어 있지 않음. View_Initialize를 먼저 호출해야 해요x
80VIEWUI_NOT_INITIALIZED팝업을 표시할 웹뷰 초기화에 실패함x
82WEBVIEW_CREATE_FAIL팝업 웹뷰 생성에 실패함x
83WEBVIEW_LOAD_URL_FAIL팝업 웹뷰에서 페이지를 불러오지 못함x
84WEBVIEW_CLOSE_ALL_FAIL팝업 생성 전 기존에 열려 있던 팝업을 모두 닫는 데 실패함x
87NO_POPUP_DATA표시할 팝업 설정 정보가 없음O팝업 설정 정보가 존재하지 않아 표시할 창이 없습니다. [확인]
253UNMANAGED_EXCEPTION네이티브 SDK 내부에서 예외가 발생함O일시적으로 문제가 발생했습니다. 다시 시도해 주세요. [확인]
254MANAGED_EXCEPTIONC# 래퍼 내부(마샬링 등)에서 예외가 발생함. CallbackResult.result.exceptionMessage 를 확인해야 해요O일시적으로 문제가 발생했습니다. 다시 시도해 주세요. [확인]

전체 목록은 ViewSDKResultCode 를 참조하세요.

Example

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

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

View_CouponPopup(WebViewMode.INTERNAL, OnCouponPopupFinished);

Notes

  • 팝업의 네이티브 리소스가 해제되는 시점까지 함께 통지받으려면 View_CouponPopupEx를 사용해요.
  • 화면에 표시된 팝업(들)을 한꺼번에 닫으려면 View_CloseAllPopups를 사용해요.

See Also


View_CouponPopupEx

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

Description

WebView를 이용하여 CouponPopup을 실행해요. View_CouponPopup과 동작은 같지만, 팝업의 네이티브 리소스가 완전히 해제되었을 때 전달되는 onDestroy 콜백을 추가로 받을 수 있어요.

호출 전에 View_Initialize 또는 View_InitializeWithWndInfo로 초기화가 되어 있어야 해요.

Declaration

csharp
public static void View_CouponPopupEx(WebViewMode mode, OnPopupFinished onFinished, OnViewPopupDestroyFinished onDestroy);

Parameters

NameTypeRequiredDescription
modeWebViewModeYWebView를 실행하는 모드예요.
onFinishedOnPopupFinishedYWebView 실행에 대한 결과를 넘겨받는 콜백 함수예요.
onDestroyOnViewPopupDestroyFinishedN팝업을 닫을 시 응답받는 콜백 함수예요.

Returns

없음

Callback

csharp
public delegate void OnPopupFinished(CallbackResult result);
public delegate void OnViewPopupDestroyFinished(CallbackResult result);
NameTypeDescription
resultCallbackResult콜백 결과 값이에요.

onFinished는 WebView 실행 결과가 나왔을 때 1회 전달돼요. onDestroy는 팝업의 네이티브 리소스가 완전히 해제되었을 때 1회 전달돼요. 두 콜백 모두 Base_RunCallback()을 호출한 스레드에서 실행돼요.

Error Codes

CodeNameDescriptionShow to UserIn-Game Message
0SUCCESS성공x
5INVALID_PARAM게임 서버 월드 접속 정보(worldId)가 비어 있음(월드 미접속 상태)x
17NOT_INITIALIZED팝업 기능이 초기화되어 있지 않음. View_Initialize를 먼저 호출해야 해요x
80VIEWUI_NOT_INITIALIZED팝업을 표시할 웹뷰 초기화에 실패함x
82WEBVIEW_CREATE_FAIL팝업 웹뷰 생성에 실패함x
83WEBVIEW_LOAD_URL_FAIL팝업 웹뷰에서 페이지를 불러오지 못함x
84WEBVIEW_CLOSE_ALL_FAIL팝업 생성 전 기존에 열려 있던 팝업을 모두 닫는 데 실패함x
85WEBVIEW_CLOSE_FAIL팝업을 닫는 데 실패함(onDestroy 콜백으로 전달됨)x
87NO_POPUP_DATA표시할 팝업 설정 정보가 없음O팝업 설정 정보가 존재하지 않아 표시할 창이 없습니다. [확인]
253UNMANAGED_EXCEPTION네이티브 SDK 내부에서 예외가 발생함O일시적으로 문제가 발생했습니다. 다시 시도해 주세요. [확인]
254MANAGED_EXCEPTIONC# 래퍼 내부(마샬링 등)에서 예외가 발생함. CallbackResult.result.exceptionMessage 를 확인해야 해요O일시적으로 문제가 발생했습니다. 다시 시도해 주세요. [확인]

전체 목록은 ViewSDKResultCode 를 참조하세요.

Example

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

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

void OnCouponPopupDestroyed(CallbackResult callbackResult)
{
    // 팝업 리소스 해제가 끝난 뒤 로직을 구현해 주세요.
}

View_CouponPopupEx(WebViewMode.INTERNAL, OnCouponPopupFinished, OnCouponPopupDestroyed);

Notes

  • View_CouponPopup과 달리 팝업 종료(destroy) 통지를 받는 onDestroy 콜백을 추가로 받아요.
  • 화면에 표시된 팝업(들)을 한꺼번에 닫으려면 View_CloseAllPopups를 사용해요.

See Also


View_FetchWebOpenKey

종류 함수 · 모듈 View · 버전 3.3.0 · 폐기 예정

Description

폐기(deprecated)된 기능이에요. 신규 인터페이스에서도 제공하지 않아요.

Web Open in Game 기능을 이용하기 위한 일회성 key를 획득해요. 외부 브라우저를 통한 Stove 커뮤니티, 고객센터 노출이 필요한 경우에만 사용해요.

호출 전에 View_Initialize 또는 View_InitializeWithWndInfo로 초기화가 되어 있어야 해요.

Declaration

csharp
public static void View_FetchWebOpenKey(OnFetchWebOpenKeyFinished onFinished);

Parameters

NameTypeRequiredDescription
onFinishedOnFetchWebOpenKeyFinishedYFetchWebOpenKey 실행에 대한 결과를 넘겨받는 콜백 함수예요.

Returns

없음

Callback

csharp
public delegate void OnFetchWebOpenKeyFinished(CallbackResult result, string key);
NameTypeDescription
resultCallbackResult콜백 결과 값이에요.
keystring발급된 일회성 key예요.

onFinished는 key 발급 결과가 나왔을 때 1회 전달돼요. 콜백은 Base_RunCallback()을 호출한 스레드에서 실행돼요.

Error Codes

CodeNameDescriptionShow to UserIn-Game Message
0SUCCESS성공x
17NOT_INITIALIZED팝업 기능이 초기화되어 있지 않음. View_Initialize를 먼저 호출해야 해요x
25RESPONSE_VALUE_IS_NULL서버 응답 데이터가 비어 있음O네트워크 연결이 원활하지 않습니다. 네트워크 상태를 확인하고 다시 실행해 주세요. [확인]
26RESPONSE_INVALID_VALUE_FORMAT서버 응답 데이터 형식이 올바르지 않음O네트워크 연결이 원활하지 않습니다. 네트워크 상태를 확인하고 다시 실행해 주세요. [확인]
249NETWORK_TRANSPORT_ERROR네트워크 전송 계층에서 오류가 발생함x
253UNMANAGED_EXCEPTION네이티브 SDK 내부에서 예외가 발생함O일시적으로 문제가 발생했습니다. 다시 시도해 주세요. [확인]
254MANAGED_EXCEPTIONC# 래퍼 내부(마샬링 등)에서 예외가 발생함. CallbackResult.result.exceptionMessage 를 확인해야 해요O일시적으로 문제가 발생했습니다. 다시 시도해 주세요. [확인]

전체 목록은 ViewSDKResultCode 를 참조하세요.

Example

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

void OnFetchWebOpenKeyFinished(CallbackResult callbackResult, string key)
{
    if (callbackResult.result.IsSuccessful())
    {
        // key를 사용해 외부 브라우저로 Stove 커뮤니티, 고객센터 등을 여는 로직을 구현해 주세요.
    }
    else
    {
        // 실패 시 로직을 구현해 주세요.
    }
}

View_FetchWebOpenKey(OnFetchWebOpenKeyFinished);

Notes

  • 외부 브라우저를 통한 Stove 커뮤니티, 고객센터 노출이 필요한 경우에만 사용해요.

See Also


View_GetVersion

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

Description

팝업 기능의 버전 정보를 조회해요.

Declaration

csharp
public static Result View_GetVersion(ref string version, uint length);

Parameters

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

Returns

TypeDescription
Result함수 호출 결과예요. result.IsSuccessful()로 성공 여부를 확인해요.

Error Codes

CodeNameDescriptionShow to UserIn-Game Message
0SUCCESS성공x
5INVALID_PARAMversion 버퍼가 없거나 length가 0, 또는 버퍼 크기가 문자열을 담기에 부족함x
251PCSDK_DLL_NOT_FOUNDSDK 파일 경로를 찾지 못해 버전 조회에 실패함x
253UNMANAGED_EXCEPTION네이티브 SDK 내부에서 예외가 발생함O일시적으로 문제가 발생했습니다. 다시 시도해 주세요. [확인]
254MANAGED_EXCEPTIONC# 래퍼 내부(마샬링 등)에서 예외가 발생함. Result.exceptionMessage 를 확인해야 해요O일시적으로 문제가 발생했습니다. 다시 시도해 주세요. [확인]

이 함수는 실제로는 ViewSDK 자체 버전이 아닌 BaseSDK 통합 버전을 그대로 반환해요. 전체 목록은 ViewSDKResultCode 를 참조하세요.

Example

csharp
using static Stove.PCSDK.View;

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

Notes

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

See Also


View_Initialize

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

Description

팝업 기능을 초기화해요. Internal Style 팝업의 부모 윈도우 핸들이 필요 없는 경우에 사용해요. 부모 윈도우 핸들을 지정해야 한다면 View_InitializeWithWndInfo를 사용해요.

팝업 기능이 제공하는 다른 함수를 호출하기 전에 먼저 호출해야 해요.

Declaration

csharp
public static Result View_Initialize();

Parameters

없음

Returns

TypeDescription
Result함수 호출 결과예요. result.IsSuccessful()로 성공 여부를 확인해요.

Error Codes

CodeNameDescriptionShow to UserIn-Game Message
0SUCCESS성공x
16BASE_NOT_INITIALIZEDBaseSDK가 초기화되지 않음. Base_Initialize를 먼저 호출해야 해요x
18ALREADY_INITIALIZED팝업 기능이 이미 초기화되어 있음x
80VIEWUI_NOT_INITIALIZED팝업을 표시할 웹뷰 초기화에 실패함x
251PCSDK_DLL_NOT_FOUNDSDK 파일 경로를 찾지 못해 버전 확인에 실패함x
253UNMANAGED_EXCEPTION네이티브 SDK 내부에서 예외가 발생함O일시적으로 문제가 발생했습니다. 다시 시도해 주세요. [확인]
254MANAGED_EXCEPTIONC# 래퍼 내부(마샬링 등)에서 예외가 발생함. Result.exceptionMessage 를 확인해야 해요O일시적으로 문제가 발생했습니다. 다시 시도해 주세요. [확인]

전체 목록은 ViewSDKResultCode 를 참조하세요.

Example

csharp
using static Stove.PCSDK.View;

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

Notes

  • 이 함수는 동기 함수이며 콜백을 받지 않아요.
  • Internal Style 팝업의 부모 윈도우 핸들을 지정하려면 View_InitializeWithWndInfo를 사용해요.
  • 사용이 끝나면 View_UnInitialize로 자원을 해제해요.

See Also


View_InitializeWithWndInfo

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

Description

팝업 기능을 초기화해요. Internal Style 팝업의 부모 윈도우가 될 메인 윈도우 핸들이 필요한 경우에 사용해요.

팝업 기능이 제공하는 다른 함수를 호출하기 전에 먼저 호출해야 해요.

Declaration

csharp
public static Result View_InitializeWithWndInfo(IntPtr mainWndHandle);

Parameters

NameTypeRequiredDescription
mainWndHandleIntPtrYInternal Style 팝업의 부모 윈도우가 될 메인 윈도우 핸들(HWND)예요.

Returns

TypeDescription
Result함수 호출 결과예요. result.IsSuccessful()로 성공 여부를 확인해요.

Error Codes

CodeNameDescriptionShow to UserIn-Game Message
0SUCCESS성공x
16BASE_NOT_INITIALIZEDBaseSDK가 초기화되지 않음. Base_Initialize를 먼저 호출해야 해요x
18ALREADY_INITIALIZED팝업 기능이 이미 초기화되어 있음x
80VIEWUI_NOT_INITIALIZED팝업을 표시할 웹뷰 초기화에 실패함x
251PCSDK_DLL_NOT_FOUNDSDK 파일 경로를 찾지 못해 버전 확인에 실패함x
253UNMANAGED_EXCEPTION네이티브 SDK 내부에서 예외가 발생함O일시적으로 문제가 발생했습니다. 다시 시도해 주세요. [확인]
254MANAGED_EXCEPTIONC# 래퍼 내부(마샬링 등)에서 예외가 발생함. Result.exceptionMessage 를 확인해야 해요O일시적으로 문제가 발생했습니다. 다시 시도해 주세요. [확인]

전체 목록은 ViewSDKResultCode 를 참조하세요.

Example

csharp
using static Stove.PCSDK.View;

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

Notes

  • 이 함수는 동기 함수이며 콜백을 받지 않아요.
  • Internal Style 팝업의 부모 윈도우 핸들이 필요하지 않다면 View_Initialize를 사용해요.
  • 사용이 끝나면 View_UnInitialize로 자원을 해제해요.

See Also


View_ManualPopup

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

Description

WebView를 이용하여 resourceKey로 지정한 ManualPopup을 실행해요.

호출 전에 View_Initialize 또는 View_InitializeWithWndInfo로 초기화가 되어 있어야 해요.

Declaration

csharp
public static void View_ManualPopup(string resourceKey, WebViewMode mode, OnPopupFinished onFinished);

Parameters

NameTypeRequiredDescription
resourceKeystringYManual Popup에 대한 ResourceKey예요.
modeWebViewModeYWebView를 실행하는 모드예요.
onFinishedOnPopupFinishedYWebView 실행에 대한 결과를 넘겨받는 콜백 함수예요.

Returns

없음

Callback

csharp
public delegate void OnPopupFinished(CallbackResult result);
NameTypeDescription
resultCallbackResult콜백 결과 값이에요.

onFinished는 WebView 실행 결과가 나왔을 때 1회 전달돼요. 콜백은 Base_RunCallback()을 호출한 스레드에서 실행돼요.

Error Codes

CodeNameDescriptionShow to UserIn-Game Message
0SUCCESS성공x
5INVALID_PARAMresourceKey가 빈 문자열임x
17NOT_INITIALIZED팝업 기능이 초기화되어 있지 않음. View_Initialize를 먼저 호출해야 해요x
80VIEWUI_NOT_INITIALIZED팝업을 표시할 웹뷰 초기화에 실패함x
82WEBVIEW_CREATE_FAIL팝업 웹뷰 생성에 실패함x
83WEBVIEW_LOAD_URL_FAIL팝업 웹뷰에서 페이지를 불러오지 못함x
84WEBVIEW_CLOSE_ALL_FAIL팝업 생성 전 기존에 열려 있던 팝업을 모두 닫는 데 실패함x
87NO_POPUP_DATA표시할 팝업 설정 정보가 없음O팝업 설정 정보가 존재하지 않아 표시할 창이 없습니다. [확인]
253UNMANAGED_EXCEPTION네이티브 SDK 내부에서 예외가 발생함O일시적으로 문제가 발생했습니다. 다시 시도해 주세요. [확인]
254MANAGED_EXCEPTIONC# 래퍼 내부(마샬링 등)에서 예외가 발생함. CallbackResult.result.exceptionMessage 를 확인해야 해요O일시적으로 문제가 발생했습니다. 다시 시도해 주세요. [확인]

전체 목록은 ViewSDKResultCode 를 참조하세요.

Example

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

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

View_ManualPopup("YOUR_RESOURCE_KEY", WebViewMode.INTERNAL, OnManualPopupFinished);

Notes

  • 팝업의 네이티브 리소스가 해제되는 시점까지 함께 통지받으려면 View_ManualPopupEx를 사용해요.
  • 화면에 표시된 팝업(들)을 한꺼번에 닫으려면 View_CloseAllPopups를 사용해요.

See Also


View_ManualPopupEx

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

Description

WebView를 이용하여 resourceKey로 지정한 ManualPopup을 실행해요. View_ManualPopup과 동작은 같지만, 팝업의 네이티브 리소스가 완전히 해제되었을 때 전달되는 onDestroy 콜백을 추가로 받을 수 있어요.

호출 전에 View_Initialize 또는 View_InitializeWithWndInfo로 초기화가 되어 있어야 해요.

Declaration

csharp
public static void View_ManualPopupEx(string resourceKey, WebViewMode mode, OnPopupFinished onFinished, OnViewPopupDestroyFinished onDestroy);

Parameters

NameTypeRequiredDescription
resourceKeystringYManual Popup에 대한 ResourceKey예요.
modeWebViewModeYWebView를 실행하는 모드예요.
onFinishedOnPopupFinishedYWebView 실행에 대한 결과를 넘겨받는 콜백 함수예요.
onDestroyOnViewPopupDestroyFinishedN팝업을 닫을 시 응답받는 콜백 함수예요.

Returns

없음

Callback

csharp
public delegate void OnPopupFinished(CallbackResult result);
public delegate void OnViewPopupDestroyFinished(CallbackResult result);
NameTypeDescription
resultCallbackResult콜백 결과 값이에요.

onFinished는 WebView 실행 결과가 나왔을 때 1회 전달돼요. onDestroy는 팝업의 네이티브 리소스가 완전히 해제되었을 때 1회 전달돼요. 두 콜백 모두 Base_RunCallback()을 호출한 스레드에서 실행돼요.

Error Codes

CodeNameDescriptionShow to UserIn-Game Message
0SUCCESS성공x
5INVALID_PARAMresourceKey가 빈 문자열임x
17NOT_INITIALIZED팝업 기능이 초기화되어 있지 않음. View_Initialize를 먼저 호출해야 해요x
80VIEWUI_NOT_INITIALIZED팝업을 표시할 웹뷰 초기화에 실패함x
82WEBVIEW_CREATE_FAIL팝업 웹뷰 생성에 실패함x
83WEBVIEW_LOAD_URL_FAIL팝업 웹뷰에서 페이지를 불러오지 못함x
84WEBVIEW_CLOSE_ALL_FAIL팝업 생성 전 기존에 열려 있던 팝업을 모두 닫는 데 실패함x
85WEBVIEW_CLOSE_FAIL팝업을 닫는 데 실패함(onDestroy 콜백으로 전달됨)x
87NO_POPUP_DATA표시할 팝업 설정 정보가 없음O팝업 설정 정보가 존재하지 않아 표시할 창이 없습니다. [확인]
253UNMANAGED_EXCEPTION네이티브 SDK 내부에서 예외가 발생함O일시적으로 문제가 발생했습니다. 다시 시도해 주세요. [확인]
254MANAGED_EXCEPTIONC# 래퍼 내부(마샬링 등)에서 예외가 발생함. CallbackResult.result.exceptionMessage 를 확인해야 해요O일시적으로 문제가 발생했습니다. 다시 시도해 주세요. [확인]

전체 목록은 ViewSDKResultCode 를 참조하세요.

Example

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

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

void OnManualPopupDestroyed(CallbackResult callbackResult)
{
    // 팝업 리소스 해제가 끝난 뒤 로직을 구현해 주세요.
}

View_ManualPopupEx("YOUR_RESOURCE_KEY", WebViewMode.INTERNAL, OnManualPopupFinished, OnManualPopupDestroyed);

Notes

  • View_ManualPopup과 달리 팝업 종료(destroy) 통지를 받는 onDestroy 콜백을 추가로 받아요.
  • 화면에 표시된 팝업(들)을 한꺼번에 닫으려면 View_CloseAllPopups를 사용해요.

See Also


View_NewsPopup

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

Description

WebView를 이용하여 NewsPopup을 실행해요.

호출 전에 View_Initialize 또는 View_InitializeWithWndInfo로 초기화가 되어 있어야 해요.

Declaration

csharp
public static void View_NewsPopup(WebViewMode mode, OnPopupFinished onFinished);

Parameters

NameTypeRequiredDescription
modeWebViewModeYWebView를 실행하는 모드예요.
onFinishedOnPopupFinishedYWebView 실행에 대한 결과를 넘겨받는 콜백 함수예요.

Returns

없음

Callback

csharp
public delegate void OnPopupFinished(CallbackResult result);
NameTypeDescription
resultCallbackResult콜백 결과 값이에요.

onFinished는 WebView 실행 결과가 나왔을 때 1회 전달돼요. 콜백은 Base_RunCallback()을 호출한 스레드에서 실행돼요.

Error Codes

CodeNameDescriptionShow to UserIn-Game Message
0SUCCESS성공x
17NOT_INITIALIZED팝업 기능이 초기화되어 있지 않음. View_Initialize를 먼저 호출해야 해요x
80VIEWUI_NOT_INITIALIZED팝업을 표시할 웹뷰 초기화에 실패함x
82WEBVIEW_CREATE_FAIL팝업 웹뷰 생성에 실패함x
83WEBVIEW_LOAD_URL_FAIL팝업 웹뷰에서 페이지를 불러오지 못함x
84WEBVIEW_CLOSE_ALL_FAIL팝업 생성 전 기존에 열려 있던 팝업을 모두 닫는 데 실패함x
87NO_POPUP_DATA표시할 팝업 설정 정보가 없음O팝업 설정 정보가 존재하지 않아 표시할 창이 없습니다. [확인]
253UNMANAGED_EXCEPTION네이티브 SDK 내부에서 예외가 발생함O일시적으로 문제가 발생했습니다. 다시 시도해 주세요. [확인]
254MANAGED_EXCEPTIONC# 래퍼 내부(마샬링 등)에서 예외가 발생함. CallbackResult.result.exceptionMessage 를 확인해야 해요O일시적으로 문제가 발생했습니다. 다시 시도해 주세요. [확인]

전체 목록은 ViewSDKResultCode 를 참조하세요.

Example

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

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

View_NewsPopup(WebViewMode.INTERNAL, OnNewsPopupFinished);

Notes

  • 팝업의 네이티브 리소스가 해제되는 시점까지 함께 통지받으려면 View_NewsPopupEx를 사용해요.
  • 화면에 표시된 팝업(들)을 한꺼번에 닫으려면 View_CloseAllPopups를 사용해요.

See Also


View_NewsPopupEx

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

Description

WebView를 이용하여 NewsPopup을 실행해요. View_NewsPopup과 동작은 같지만, 팝업의 네이티브 리소스가 완전히 해제되었을 때 전달되는 onDestroy 콜백을 추가로 받을 수 있어요.

호출 전에 View_Initialize 또는 View_InitializeWithWndInfo로 초기화가 되어 있어야 해요.

Declaration

csharp
public static void View_NewsPopupEx(WebViewMode mode, OnPopupFinished onFinished, OnViewPopupDestroyFinished onDestroy);

Parameters

NameTypeRequiredDescription
modeWebViewModeYWebView를 실행하는 모드예요.
onFinishedOnPopupFinishedYWebView 실행에 대한 결과를 넘겨받는 콜백 함수예요.
onDestroyOnViewPopupDestroyFinishedN팝업을 닫을 시 응답받는 콜백 함수예요.

Returns

없음

Callback

csharp
public delegate void OnPopupFinished(CallbackResult result);
public delegate void OnViewPopupDestroyFinished(CallbackResult result);
NameTypeDescription
resultCallbackResult콜백 결과 값이에요.

onFinished는 WebView 실행 결과가 나왔을 때 1회 전달돼요. onDestroy는 팝업의 네이티브 리소스가 완전히 해제되었을 때 1회 전달돼요. 두 콜백 모두 Base_RunCallback()을 호출한 스레드에서 실행돼요.

Error Codes

CodeNameDescriptionShow to UserIn-Game Message
0SUCCESS성공x
17NOT_INITIALIZED팝업 기능이 초기화되어 있지 않음. View_Initialize를 먼저 호출해야 해요x
80VIEWUI_NOT_INITIALIZED팝업을 표시할 웹뷰 초기화에 실패함x
82WEBVIEW_CREATE_FAIL팝업 웹뷰 생성에 실패함x
83WEBVIEW_LOAD_URL_FAIL팝업 웹뷰에서 페이지를 불러오지 못함x
84WEBVIEW_CLOSE_ALL_FAIL팝업 생성 전 기존에 열려 있던 팝업을 모두 닫는 데 실패함x
85WEBVIEW_CLOSE_FAIL팝업을 닫는 데 실패함(onDestroy 콜백으로 전달됨)x
87NO_POPUP_DATA표시할 팝업 설정 정보가 없음O팝업 설정 정보가 존재하지 않아 표시할 창이 없습니다. [확인]
253UNMANAGED_EXCEPTION네이티브 SDK 내부에서 예외가 발생함O일시적으로 문제가 발생했습니다. 다시 시도해 주세요. [확인]
254MANAGED_EXCEPTIONC# 래퍼 내부(마샬링 등)에서 예외가 발생함. CallbackResult.result.exceptionMessage 를 확인해야 해요O일시적으로 문제가 발생했습니다. 다시 시도해 주세요. [확인]

전체 목록은 ViewSDKResultCode 를 참조하세요.

Example

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

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

void OnNewsPopupDestroyed(CallbackResult callbackResult)
{
    // 팝업 리소스 해제가 끝난 뒤 로직을 구현해 주세요.
}

View_NewsPopupEx(WebViewMode.INTERNAL, OnNewsPopupFinished, OnNewsPopupDestroyed);

Notes

  • View_NewsPopup과 달리 팝업 종료(destroy) 통지를 받는 onDestroy 콜백을 추가로 받아요.
  • 화면에 표시된 팝업(들)을 한꺼번에 닫으려면 View_CloseAllPopups를 사용해요.

See Also


View_SetPopupDisallowed

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

Description

popupDisallowed에 지정한 팝업 식별자를, 지정한 일수(days) 동안 표시되지 않도록 억제해요.

호출 전에 View_Initialize 또는 View_InitializeWithWndInfo로 초기화가 되어 있어야 해요.

Declaration

csharp
public static void View_SetPopupDisallowed(StovePCPopupDisallowed popupDisallowed, OnSetPopupDisallowedFinished onFinished);

Parameters

NameTypeRequiredDescription
popupDisallowedStovePCPopupDisallowedY팝업 노출을 하지 않을 때 필요한 정보(팝업 식별자, 억제 기간)이에요.
onFinishedOnSetPopupDisallowedFinishedYPopupDisallowed 실행에 대한 결과를 넘겨받는 콜백 함수예요.

Returns

없음

Callback

csharp
public delegate void OnSetPopupDisallowedFinished(CallbackResult result);
NameTypeDescription
resultCallbackResult콜백 결과 값이에요.

onFinished는 처리 결과가 나왔을 때 1회 전달돼요. 콜백은 Base_RunCallback()을 호출한 스레드에서 실행돼요.

Error Codes

CodeNameDescriptionShow to UserIn-Game Message
0SUCCESS성공x
1FAIL팝업 노출 제한 정보를 로컬에 기록하는 데 실패함x
17NOT_INITIALIZED팝업 기능이 초기화되어 있지 않음. View_Initialize를 먼저 호출해야 해요x
253UNMANAGED_EXCEPTION네이티브 SDK 내부에서 예외가 발생함O일시적으로 문제가 발생했습니다. 다시 시도해 주세요. [확인]
254MANAGED_EXCEPTIONC# 래퍼 내부(마샬링 등)에서 예외가 발생함. CallbackResult.result.exceptionMessage 를 확인해야 해요O일시적으로 문제가 발생했습니다. 다시 시도해 주세요. [확인]

전체 목록은 ViewSDKResultCode 를 참조하세요.

Example

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

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

var popupDisallowed = new StovePCPopupDisallowed
{
    popupId = 1001,
    days = 7,
};

View_SetPopupDisallowed(popupDisallowed, OnSetPopupDisallowedFinished);

Notes

  • 이 함수는 팝업을 닫는 API가 아니라, 이후 지정한 기간 동안 해당 팝업이 다시 표시되지 않도록 억제하는 API예요.
  • 화면에 표시되어 있는 팝업을 즉시 닫으려면 View_CloseAllPopups를 사용해요.

See Also


View_UnInitialize

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

Description

팝업 기능의 자원을 해제해요. View_Initialize 또는 View_InitializeWithWndInfo와 짝을 이루는 함수예요.

Declaration

csharp
public static Result View_UnInitialize();

Parameters

없음

Returns

TypeDescription
Result함수 호출 결과예요. result.IsSuccessful()로 성공 여부를 확인해요.

Error Codes

CodeNameDescriptionShow to UserIn-Game Message
0SUCCESS성공x
17NOT_INITIALIZED팝업 기능이 초기화되어 있지 않음x
81VIEWUI_UNINIT_FAILED팝업 웹뷰 종료 처리에 실패함x
253UNMANAGED_EXCEPTION네이티브 SDK 내부에서 예외가 발생함O일시적으로 문제가 발생했습니다. 다시 시도해 주세요. [확인]
254MANAGED_EXCEPTIONC# 래퍼 내부(마샬링 등)에서 예외가 발생함. Result.exceptionMessage 를 확인해야 해요O일시적으로 문제가 발생했습니다. 다시 시도해 주세요. [확인]

전체 목록은 ViewSDKResultCode 를 참조하세요.

Example

csharp
using static Stove.PCSDK.View;

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

Notes

See Also


View_VerifyIdentificationPopup

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

Description

WebView를 이용하여 본인인증 팝업을 실행해요. compareIdentifier로 SDI를 이용한 검증 여부를 지정하며, false인 경우 onDestroysimKey가 제공돼요.

호출 전에 View_Initialize 또는 View_InitializeWithWndInfo로 초기화가 되어 있어야 해요.

3.4.1부터 한국 전용 기능으로 제한되었어요.

Declaration

csharp
public static void View_VerifyIdentificationPopup(bool compareIdentifier, WebViewMode mode,
                                                    OnPopupFinished onFinished, OnVerifyIdentificationPopupDestroyFinished onDestroy);

Parameters

NameTypeRequiredDescription
compareIdentifierboolYSDI를 이용한 검증 여부예요. false일 경우 simKey를 제공해요.
modeWebViewModeYWebView를 실행하는 모드예요.
onFinishedOnPopupFinishedYWebView 실행에 대한 결과를 넘겨받는 콜백 함수예요.
onDestroyOnVerifyIdentificationPopupDestroyFinishedY팝업을 닫을 시 응답받는 콜백 함수예요.

Returns

없음

Callback

csharp
public delegate void OnPopupFinished(CallbackResult result);
public delegate void OnVerifyIdentificationPopupDestroyFinished(CallbackResult result, string simKey);
NameTypeDescription
resultCallbackResult콜백 결과 값이에요.
simKeystring인증 성공 시 발급된 SIM 키예요.

onFinished는 WebView 실행 결과가 나왔을 때 1회 전달돼요. onDestroy는 본인인증 팝업이 종료되었을 때 1회 전달되며, 인증에 성공하면 simKey가 함께 전달돼요. 두 콜백 모두 Base_RunCallback()을 호출한 스레드에서 실행돼요.

Error Codes

CodeNameDescriptionShow to UserIn-Game Message
0SUCCESS성공x
17NOT_INITIALIZED팝업 기능이 초기화되어 있지 않음. View_Initialize를 먼저 호출해야 해요x
31NOT_SUPPORTED_COUNTRY한국 외 지역에서 호출되어 지원하지 않는 기능임x
80VIEWUI_NOT_INITIALIZED팝업을 표시할 웹뷰 초기화에 실패함x
82WEBVIEW_CREATE_FAIL팝업 웹뷰 생성에 실패함x
83WEBVIEW_LOAD_URL_FAIL팝업 웹뷰에서 페이지를 불러오지 못함x
84WEBVIEW_CLOSE_ALL_FAIL팝업 생성 전 기존에 열려 있던 팝업을 모두 닫는 데 실패함x
85WEBVIEW_CLOSE_FAIL팝업을 닫는 데 실패함(onDestroy 콜백으로 전달됨)x
87NO_POPUP_DATA표시할 팝업 설정 정보가 없음O팝업 설정 정보가 존재하지 않아 표시할 창이 없습니다. [확인]
253UNMANAGED_EXCEPTION네이티브 SDK 내부에서 예외가 발생함O일시적으로 문제가 발생했습니다. 다시 시도해 주세요. [확인]
254MANAGED_EXCEPTIONC# 래퍼 내부(마샬링 등)에서 예외가 발생함. CallbackResult.result.exceptionMessage 를 확인해야 해요O일시적으로 문제가 발생했습니다. 다시 시도해 주세요. [확인]

전체 목록은 ViewSDKResultCode 를 참조하세요.

Example

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

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

void OnVerifyIdentificationPopupDestroyed(CallbackResult callbackResult, string simKey)
{
    if (!string.IsNullOrEmpty(simKey))
    {
        // simKey를 필요한 곳에 사용해 주세요.
    }
}

View_VerifyIdentificationPopup(false, WebViewMode.INTERNAL,
                                OnVerifyIdentificationPopupFinished, OnVerifyIdentificationPopupDestroyed);

Notes

  • 다른 팝업 API들과 달리 onDestroy 콜백 타입이 OnVerifyIdentificationPopupDestroyFinished로, simKey 인자를 추가로 전달해요.
  • onFinishednull이면 compareIdentifier가 강제로 false로 처리되어 내부 함수가 호출돼요.
  • 화면에 표시된 팝업(들)을 한꺼번에 닫으려면 View_CloseAllPopups를 사용해요.

Changelog

VersionChange
3.3.4최초 제공
3.4.1한국 전용 기능으로 제한

See Also


ViewSDKMethod

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

Description

Result.methodCode로 조회하는 값으로, 팝업 기능의 어떤 메서드가 이 결과를 생성했는지 식별해요.

Declaration

csharp
public enum ViewSDKMethod
{
    INITIALIZE = 1,
    UNINITIALIZE = 2,
    // ... 이하 Values 표 참조
    FETCH_WEB_OPEN_KEY = 162,
};

Enum Values

CodeNameDescription
1INITIALIZEView_Initialize / View_InitializeWithWndInfo
2UNINITIALIZEView_UnInitialize
5GET_VERSIONView_GetVersion
6 ~ 79사용하지 않아요 (예약 구간)
80FETCH_AUTO이름으로 보아 AutoPopup 콘텐츠를 조회(Fetch)하는 내부 단계로 보이며, 별도의 공개 API는 제공되지 않아요
81AUTO_POPUPView_AutoPopup / View_AutoPopupEx
82FETCH_MANUAL이름으로 보아 ManualPopup 콘텐츠를 조회(Fetch)하는 내부 단계로 보이며, 별도의 공개 API는 제공되지 않아요
83MANUAL_POPUPView_ManualPopup / View_ManualPopupEx
84FETCH_NEWS이름으로 보아 NewsPopup 콘텐츠를 조회(Fetch)하는 내부 단계로 보이며, 별도의 공개 API는 제공되지 않아요
85NEWS_POPUPView_NewsPopup / View_NewsPopupEx
86FETCH_COUPON이름으로 보아 CouponPopup 콘텐츠를 조회(Fetch)하는 내부 단계로 보이며, 별도의 공개 API는 제공되지 않아요
87COUPON_POPUPView_CouponPopup / View_CouponPopupEx
88FETCH_COMMUNITY이름으로 보아 커뮤니티 콘텐츠를 조회(Fetch)하는 내부 단계로 보이며, 별도의 공개 API는 제공되지 않아요
89COMMUNITY_POPUP이름으로 보아 커뮤니티 팝업에 대응하는 것으로 보이며, 별도의 공개 API는 제공되지 않아요
90FETCH_VERIFY_IDENTIFICATION이름으로 보아 본인인증 콘텐츠를 조회(Fetch)하는 내부 단계로 보이며, 별도의 공개 API는 제공되지 않아요
91VERIFY_IDENTIFICATION_POPUPView_VerifyIdentificationPopup
92FETCH_CS이름으로 보아 고객센터 콘텐츠를 조회(Fetch)하는 내부 단계로 보이며, 별도의 공개 API는 제공되지 않아요
93CS_POPUP이름으로 보아 고객센터 팝업에 대응하는 것으로 보이며, 별도의 공개 API는 제공되지 않아요
94 ~ 159사용하지 않아요 (예약 구간)
160SET_POPUP_DISALLOWEDView_SetPopupDisallowed
161CLOSE_ALL_POPUPSView_CloseAllPopups
162FETCH_WEB_OPEN_KEYView_FetchWebOpenKey

이름에 INTERNAL이 들어간 값(3, 4)은 표에서 제외해요. 내부 전용 값은 문서에 포함하지 않아요.

Example

csharp
using static Stove.PCSDK.View;

Result result = View_Initialize();

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

Notes

  • 같은 팝업이라도 신규 인터페이스와 값이 달라요. 신규 인터페이스(Stove_AutoPopup 등)는 EStoveViewMethodCode1000 번대 값을 돌려줘요. 구 인터페이스는 이 문서의 값을 그대로 유지해요. 두 벌을 함께 쓰는 동안에는 로그 집계 기준을 벌마다 나누어 두세요.
  • FETCH_*, COMMUNITY_POPUP, CS_POPUP 값에는 대응하는 공개 API가 없어요.
  • Result.methodCodeuint 타입이므로 이 열거형 값과 비교할 때는 (uint)ViewSDKMethod....로 형변환해요.

See Also


ViewSDKResultCode

종류 결과코드 · 모듈 View · 버전 3.0.0.4

Description

Result.resultCode / CallbackResult.result.resultCode로 조회하는 값이에요. 0(SUCCESS)이면 성공이에요.

Declaration

csharp
public enum ViewSDKResultCode
{
    SUCCESS = 0,
    FAIL = 1,
    // ... 이하 Values 표 참조
    NO_POPUP_DATA = 87,
}

Enum Values

일반 결과

CodeNameDescriptionShow to UserIn-Game Message
0SUCCESS성공x
1FAIL일반 실패. 상세 원인은 로그/errorMessage로 확인해요x

설정/파라미터 검증 실패

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

초기화 상태 오류

CodeNameDescriptionShow to UserIn-Game Message
16BASE_NOT_INITIALIZEDSDK가 초기화되지 않았어요. Base_Initialize()를 선행 호출해요x
17NOT_INITIALIZED팝업 기능이 초기화되지 않았어요. View_Initialize를 선행 호출해요x
18ALREADY_INITIALIZED이미 초기화되어 있어요. 중복 초기화 호출을 제거해요x

토큰/엔티티 오류

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

HTTP/응답 오류

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

81Plug 관련 오류

CodeNameDescriptionShow to UserIn-Game Message
27LOG_81PLUG_ERROR81Plug 로그 처리 중 오류가 발생했어요. 로그·네트워크 상태를 확인해요x
28UPDATE_81PLUG_FEED_ERROR81Plug 피드 갱신 중 오류가 발생했어요. 로그·네트워크 상태를 확인해요x

기타 상태

CodeNameDescriptionShow to UserIn-Game Message
29ASYNC_OPERATION_IN_PROGRESS비동기 작업이 이미 진행 중이에요. 진행 중인 비동기 작업을 완료한 뒤 재호출해요x
30BASE_UNINITIALIZEDSDK가 이미 해제(UnInitialize)되었어요. Base_Initialize()를 재호출해요x
31NOT_SUPPORTED_COUNTRY지원하지 않는 국가/지역이에요. 국가/지역 제한을 확인 후 호출을 중단해요x
32 ~ 79사용하지 않아요 (예약 구간)

팝업 전용 오류

CodeNameDescriptionShow to UserIn-Game Message
80VIEWUI_NOT_INITIALIZEDView UI가 초기화되지 않았어요. View_Initialize / View_InitializeWithWndInfo 선행 호출을 확인해요x
81VIEWUI_UNINIT_FAILEDView UI 해제(UnInit)에 실패했어요x
82WEBVIEW_CREATE_FAIL웹뷰 생성에 실패했어요x
83WEBVIEW_LOAD_URL_FAIL웹뷰에서 URL 로드에 실패했어요x
84WEBVIEW_CLOSE_ALL_FAIL웹뷰 전체 닫기에 실패했어요x
85WEBVIEW_CLOSE_FAIL웹뷰 닫기에 실패했어요x
86WEBVIEW_CREATE_COOKIE_FAIL웹뷰 쿠키 생성에 실패했어요O페이지를 불러올 수 없습니다. 다시 시도해 주세요. [확인]
87NO_POPUP_DATA표시할 팝업 데이터가 없어요O팝업 설정 정보가 존재하지 않아 표시할 창이 없습니다. [확인]
88 ~ 250사용하지 않아요 (예약 구간)

시스템/런타임 실패

CodeNameDescriptionShow to UserIn-Game Message
251PCSDK_DLL_NOT_FOUNDPCSDK DLL을 찾을 수 없어요. PCSDK DLL 배치를 확인해요x
252NOT_IMPLEMENTED구현되지 않은 기능이에요. 호출을 제거하거나 대체 API를 확인해요x
253UNMANAGED_EXCEPTION관리되지 않는(unmanaged) 예외가 발생했어요. 예외 로그를 확인해요O일시적으로 문제가 발생했습니다. 다시 시도해 주세요. [확인]
254MANAGED_EXCEPTION관리되는(managed) 예외가 발생했어요. 예외 로그를 확인해요O일시적으로 문제가 발생했습니다. 다시 시도해 주세요. [확인]
255UNKNOWN_ERROR알 수 없는 오류예요. 상세 로그를 확인해요x

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

  • 19 INVALID_ACCESS_TOKEN — 로그인 세션이 만료되어 게임을 종료하고 다시 실행해야 해요

Example

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

void OnAutoPopupFinished(CallbackResult callbackResult)
{
    if (callbackResult.result.IsSuccessful())
    {
        // 성공 시 로직을 구현해 주세요.
    }
    else if (callbackResult.result.resultCode == (uint)ViewSDKResultCode.NO_POPUP_DATA)
    {
        // 표시할 팝업 데이터가 없는 경우의 로직을 구현해 주세요.
    }
    else
    {
        // 그 외 실패 시 로직을 구현해 주세요.
    }
}

Notes

  • 0 ~ 31, 251 ~ 255 구간은 다른 모듈의 *SDKResultCode와 값·의미가 동일해요.
  • resultCodeuint 타입이므로, 이 열거형 값과 비교할 때는 형변환이 필요해요.

See Also


WebViewMode

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

Description

WebViewMode 는 값 이름(EXTERNAL, INTERNAL)으로 보아 웹뷰를 외부 브라우저로 열지, SDK 내부 뷰로 열지를 구분하는 값으로 추정돼요.

Declaration

csharp
public enum WebViewMode
{
    EXTERNAL,
    INTERNAL
};

Enum Values

CodeNameDescription
0EXTERNAL외부 방식으로 웹뷰를 열어요
1INTERNAL내부 방식으로 웹뷰를 열어요

Example

csharp
using static Stove.PCSDK.Base;

WebViewMode mode = WebViewMode.EXTERNAL;

Notes

  • 없음

See Also

  • 없음