Search
Duplicate

Pop-ups (Optional)

생성일
2024/03/14 06:08
태그
The PC SDK provides APIs to integrate popups into your game. Pop-ups supported by PC SDK include automatic, manual, news, coupon, and community.
The PC SDK provides data for popups to the game. The game creates a pop-up view using the provided data.
Each popup is defined as follows.
Automatic pop-up: Pop-up that is most exposed on the game lobby screen and shows advertisements and events
Manual pop-up: Pop-up showing registered events corresponding to the resource key -News pop-up: A pop-up that collects and shows announcement posts at once
Coupon pop-up: Pop-up showing the coupon registration page
Community popup: Popup showing the game community page
In order to use the PC SDK popup API, the metadata registration of the popup integrated with Partners must be preceded.

1. Callback setting

To communicate with the PC SDK using the pop-up API, the game must override the callback function defined in the UStoveSDKObject class below.
{ //StovePCSDK Callback public: void OnError(FStoveError Error) final; void OnInitComplete() final; void OnToken(FStoveToken Token) final; void OnUser(FStoveUser User) final; void OnOwnership(int Size, FStoveOwnership* Ownerships) final; }
C++
복사
You are not required to implement the OnAutoPopupOnManualPopupOnNewsPopupOnCouponPopupOnCommunityPopup callbacks.
You only need to implement and connect the necessary callback functions according to the pop-up used in the game.
/*As for when only using the Ownership function, apart from the essential callbacks OnError, OnInitcomplte, connect only the OnOwnership callback additionally.*/ void UMyStoveSDKObject::OnInitComplete() { // Process details after successful initialization } void UMyStoveSDKObject::OnError(FStoveError fError) { // Process details of the error } void UMyStoveSDKObject::OnOwnership(int size, FStoveOwnership* fOwnership) { // Process details after ownership has been viewed }
C++
복사

2. Game Profile Settings

Set game world and character information with UMyStoveSDKObject::StoveSDKSetGameProfile function.
Set information is used in pop-ups, so it must be set before using pop-ups.
The validity of the game profile is not checked separately. Therefore, you must enter the correct value by proceeding with validation (null) when entering.
The entered game profile is only valid for the life cycle of PCSDK.
That is, whenever PCSDK is initialized, the game world and character information must be set by calling the UMyStoveSDKObject::StoveSDKSetGameProfile function.
// input parameters // const FString& WorldId: The game's world identifier // const FString& CharacterNo: character identifier FStoveResult UMyStoveSDKObject::StoveSDKSetGameProfile(const FString & WorldId, const FString & CharactorNo) { /*Add the 'walkthrough' codes here.*/ FStoveResult ErrorResult = Super::StoveSDKSetGameProfile(WorldId, CharactorNo); if (ErrorResult.Result == StovePCResult::STOVE_PC_NO_ERROR) { // success handling } return ErrorResult; }
Plain Text
복사

3. Get automatic pop-up information

Search information about auto popup with UMyStoveSDKObject::StoveSDKGetAutoPopup function.
FStoveResult UMyStoveSDKObject::StoveSDKGetAutoPopup() { /*Add the 'walkthrough' codes here.*/ FStoveResult ErrorResult = Super::StoveSDKGetAutoPopup(); if (ErrorResult.Result == StovePCResult::STOVE_PC_NO_ERROR) { // success handling } return ErrorResult; }
Plain Text
복사
When the UMyStoveSDKObject::StoveSDKGetAutoPopup function is successfully processed, the UMyStoveSDKObject::OnAutoPopup callback is called.
The FStoveAutoPopup structure passed to the callback contains the URL to the autopopup.
The FStovePopupRequestHeader structure passed to the callback contains name/value pairs of headers to be set when requesting URLs.
void UMyStoveSDKObject::OnAutoPopup(int Size, FStoveAutoPopup * AutoPopups, int HeaderSize, FStovePopupRequestHeader * Headers) { OnLog("[AutoPopup]"); OnLog("AutoPopup size = %d ", Size); for (int i = 0; i < Size; i++, AutoPopups++) { OnLog("- AutoPopup[%d].Origin : %s", i, *(AutoPopups->Origin)); OnLog("- AutoPopup[%d].Id : %d", i, AutoPopups->Id); OnLog("- AutoPopup[%d].Url : %s", i, *(AutoPopups->Url)); OnLog("- AutoPopup[%d].Control.UI.DisallowedDay :%d", i, AutoPopups->Control.UI.DisallowedDay); OnLog("- AutoPopup[%d].Control.UI.Visible.BackButton :%s", i, AutoPopups->Control.UI.Visible.BackButton ? TEXT("true") : TEXT("false")); OnLog("- AutoPopup[%d].Control.UI.Visible.CloseButton :%s", i, AutoPopups->Control.UI.Visible.CloseButton ? TEXT("true") : TEXT("false")); OnLog("- AutoPopup[%d].Control.UI.Visible.DisallowedButton :%s", i, AutoPopups->Control.UI.Visible.DisallowedButton ? TEXT("true") : TEXT("false")); OnLog("- AutoPopup[%d].Control.UI.Visible.ForwardButton :%s", i, AutoPopups->Control.UI.Visible.ForwardButton ? TEXT("true") : TEXT("false")); OnLog("- AutoPopup[%d].Control.UI.Visible.HomeButton :%s", i, AutoPopups->Control.UI.Visible.HomeButton ? TEXT("true") : TEXT("false")); OnLog("- AutoPopup[%d].Control.UI.Visible.NavigationBar :%s", i, AutoPopups->Control.UI.Visible.NavigationBar ? TEXT("true") : TEXT("false")); OnLog("- AutoPopup[%d].Control.UI.Visible.RefreshButton :%s", i, AutoPopups->Control.UI.Visible.RefreshButton ? TEXT("true") : TEXT("false")); OnLog("- AutoPopups[%d].Control.UI.CloseButtonImage.Normal.FileId :%s", i, *(AutoPopups->Control.UI.CloseButtonImage.Normal.FileId)); OnLog("- AutoPopups[%d].Control.UI.CloseButtonImage.Normal.FileUrl :%s", i, *(AutoPopups->Control.UI.CloseButtonImage.Normal.FileUrl)); OnLog("- AutoPopups[%d].Control.UI.CloseButtonImage.Pressed.FileId :%s", i, *(AutoPopups->Control.UI.CloseButtonImage.Pressed.FileId)); OnLog("- AutoPopups[%d].Control.UI.CloseButtonImage.Pressed.FileUrl :%s", i, *(AutoPopups->Control.UI.CloseButtonImage.Pressed.FileUrl)); OnLog("- AutoPopup[%d].Control.UI.CloseButtonImage.Type :%d", i, AutoPopups->Control.UI.CloseButtonImage.Type); } OnLog(" - RequestHeader size = %d ", HeaderSize); for (int i = 0; i < HeaderSize; i++, Headers++) { OnLog(" - Header[%d].Name : %s", i, *(Headers->Name)); OnLog(" - Header[%d].Value : %s", i, *(Headers->Value)); } }
Plain Text
복사
Precautions Even if the success callback (OnAutoPopup) is executed, there are cases where the size callback parameter is 0. At this time, an empty array is passed to the AutoPopups callback parameter. Before using the AutoPopups callback parameter, you must first check the Size callback parameter and decide whether or not to open a popup. In this case, check Partners' automatic pop-up settings. The exposure order of auto popups must be the same as the order of AutoPopups array elements. For example, if the AutoPopups array contains three elements [A,B,C], then the popups should be exposed in the order A, B, C.
If an error occurs while running the UMyStoveSDKObject::StoveSDKGetAutoPopup function, the UMyStoveSDKObject::OnError callback is called.
External errors can be checked through the ExternalError field of the FStoveError structure.
ExternalError
Description
403000
Invalid Access Error
400000
Wrong API usage Error
400001
Not Found Error
400002
Not Match Error
400003
Already exist
500001
Internal Interaction Error
900000
Unknown Service Error

4. Obtain manual pop-up information

Use the UMyStoveSDKObject::StoveSDKGetManualPopup function to retrieve information about manual popup.
// input parameters // const FString& ResourceKey: Manual pop-up identifier registered by Partners FStoveResult UMyStoveSDKObject::StoveSDKGetManualPopup(const FString& ResourceKey) { /*Add the 'walkthrough' codes here.*/ FStoveResult ErrorResult = Super::StoveSDKGetManualPopup(ResourceKey); if (ErrorResult.Result == StovePCResult::STOVE_PC_NO_ERROR) { // success handling } return ErrorResult; }
Plain Text
복사
When the UMyStoveSDKObject::StoveSDKGetManualPopup function is successfully processed, the UMyStoveSDKObject::OnManualPopup callback is called.
The FStoveManualPopup structure passed to the callback contains the URL for the manual popup.
The FStovePopupRequestHeader structure passed to the callback contains name/value pairs of headers to be set when requesting URLs.
void UMyStoveSDKObject::OnManualPopup(int Size, FStoveManualPopup* ManualPopups, int HeaderSize, FStovePopupRequestHeader* Headers) { /*Add the 'walkthrough' codes here.*/ OnLog("[ManualPopup]"); OnLog("ManualPopup Size = %d ", Size); for (int i = 0; i < Size; i++, ManualPopups++) { OnLog("- ManualPopup[%d].Origin : %s", i, *(ManualPopups->Origin)); OnLog("- ManualPopup[%d].ResourceKey : %s", i, *(ManualPopups->ResourceKey)); OnLog("- ManualPopup[%d].Id : %d", i, ManualPopups->Id); OnLog("- ManualPopup[%d].Url : %s", i, *(ManualPopups->Url)); OnLog("- ManualPopup[%d].Control.UI.DisallowedDay :%d", i, ManualPopups->Control.UI.DisallowedDay); OnLog("- ManualPopup[%d].Control.UI.Visible.BackButton :%s", i, ManualPopups->Control.UI.Visible.BackButton ? TEXT("true") : TEXT("false")); OnLog("- ManualPopup[%d].Control.UI.Visible.CloseButton :%s", i, ManualPopups->Control.UI.Visible.CloseButton ? TEXT("true") : TEXT("false")); OnLog("- ManualPopup[%d].Control.UI.Visible.DisallowedButton :%s", i, ManualPopups->Control.UI.Visible.DisallowedButton ? TEXT("true") : TEXT("false")); OnLog("- ManualPopup[%d].Control.UI.Visible.ForwardButton :%s", i, ManualPopups->Control.UI.Visible.ForwardButton ? TEXT("true") : TEXT("false")); OnLog("- ManualPopup[%d].Control.UI.Visible.HomeButton :%s", i, ManualPopups->Control.UI.Visible.HomeButton ? TEXT("true") : TEXT("false")); OnLog("- ManualPopup[%d].Control.UI.Visible.NavigationBar :%s", i, ManualPopups->Control.UI.Visible.NavigationBar ? TEXT("true") : TEXT("false")); OnLog("- ManualPopup[%d].Control.UI.Visible.RefreshButton :%s", i, ManualPopups->Control.UI.Visible.RefreshButton ? TEXT("true") : TEXT("false")); OnLog("- ManualPopup[%d].Control.UI.CloseButtonImage.Normal.FileId :%s", i, *(ManualPopups->Control.UI.CloseButtonImage.Normal.FileId)); OnLog("- ManualPopup[%d].Control.UI.CloseButtonImage.Normal.FileUrl :%s", i, *(ManualPopups->Control.UI.CloseButtonImage.Normal.FileUrl)); OnLog("- ManualPopup[%d].Control.UI.CloseButtonImage.Pressed.FileId :%s", i, *(ManualPopups->Control.UI.CloseButtonImage.Pressed.FileId)); OnLog("- ManualPopup[%d].Control.UI.CloseButtonImage.Pressed.FileUrl :%s", i, *(ManualPopups->Control.UI.CloseButtonImage.Pressed.FileUrl)); OnLog("- ManualPopup[%d].Control.UI.CloseButtonImage.Type :%d", i, ManualPopups->Control.UI.CloseButtonImage.Type); } OnLog("- RequestHeader Size = %d ", HeaderSize); for (int i = 0; i < HeaderSize; i++, Headers++) { OnLog("- Header[%d].Name : %s", i, *(Headers->Name)); OnLog("- Header[%d].Value : %s", i, *(Headers->Value)); } }
Plain Text
복사
Precautions Even if the success callback (OnManualPopup) is executed, there are cases where the size callback parameter is 0. At this time, an empty array is passed to the ManualPopups callback parameter. Before using the ManualPopups callback parameter, you must first check the Size callback parameter and decide whether or not to open a popup. In this case, check the manual pop-up settings of Partners. The display order of manual popups must be the same as the order of ManualPopups array elements. For example, if the ManualPopups array contains three elements [A,B,C], then the popups should be exposed in A, B, C order.
If an error occurs while executing the UMyStoveSDKObjcet::StoveSDKGetManualPopup function, the UMyStoveSDKObjcet::OnError callback is called.
External errors can be checked through the ExternalError field of the FStoveError structure.
ExternalError
Description
403000
Invalid Access Error
400000
Wrong API usage Error
400001
Not Found Error
400002
Not Match Error
400003
Already exist
500001
Internal Interaction Error
900000
Unknown Service Error

5. Get news pop-up information

Use the UMyStoveSDKObject::StoveSDKGetNewsPopup function to retrieve information about the news popup.
FStoveResult UMyStoveSDKObject::StoveSDKGetNewsPopup() { /*Add the 'walkthrough' codes here.*/ FStoveResult ErrorResult = Super::StoveSDKGetNewsPopup(); if (ErrorResult.Result == StovePCResult::STOVE_PC_NO_ERROR) { // success handling } }
Plain Text
복사
When the UMyStoveSDKObject::StoveSDKGetNewsPopup function is successfully processed, the UMyStoveSDKObject::OnNewsPopup callback is called.
The FStoveNewsPopup structure passed to the callback contains the URL to the newspopup.
The FStovePopupRequestHeader structure passed to the callback contains name/value pairs of headers to be set when requesting URLs.
void UMyStoveSDKObject::OnNewsPopup(FStoveNewsPopup NewsPopup, int HeaderSize, FStovePopupRequestHeader* Headers) { /*Add the 'walkthrough' codes here.*/ OnLog("[NewsPopup]"); OnLog("- NewsPopup.Origin : %s", *(NewsPopup.Origin)); OnLog("- NewsPopup.Id : %d", NewsPopup.Id); OnLog("- NewsPopup.Url : %s", *(NewsPopup.Url)); OnLog("- NewsPopup.Control.UI.DisallowedDay :%d", NewsPopup.Control.UI.DisallowedDay); OnLog("- NewsPopup.Control.UI.Visible.BackButton :%s", NewsPopup.Control.UI.Visible.BackButton ? TEXT("true") : TEXT("false")); OnLog("- NewsPopup.Control.UI.Visible.CloseButton :%s", NewsPopup.Control.UI.Visible.CloseButton ? TEXT("true") : TEXT("false")); OnLog("- NewsPopup.Control.UI.Visible.DisallowedButton :%s", NewsPopup.Control.UI.Visible.DisallowedButton ? TEXT("true") : TEXT("false")); OnLog("- NewsPopup.Control.UI.Visible.ForwardButton :%s", NewsPopup.Control.UI.Visible.ForwardButton ? TEXT("true") : TEXT("false")); OnLog("- NewsPopup.Control.UI.Visible.HomeButton :%s", NewsPopup.Control.UI.Visible.HomeButton ? TEXT("true") : TEXT("false")); OnLog("- NewsPopup.Control.UI.Visible.NavigationBar :%s", NewsPopup.Control.UI.Visible.NavigationBar ? TEXT("true") : TEXT("false")); OnLog("- NewsPopup.Control.UI.Visible.RefreshButton :%s", NewsPopup.Control.UI.Visible.RefreshButton ? TEXT("true") : TEXT("false")); OnLog("- NewsPopup.Control.UI.CloseButtonImage.Normal.FileId :%s", *(NewsPopup.Control.UI.CloseButtonImage.Normal.FileId)); OnLog("- NewsPopup.Control.UI.CloseButtonImage.Normal.FileUrl :%s", *(NewsPopup.Control.UI.CloseButtonImage.Normal.FileUrl)); OnLog("- NewsPopup.Control.UI.CloseButtonImage.Pressed.FileId :%s", *(NewsPopup.Control.UI.CloseButtonImage.Pressed.FileId)); OnLog("- NewsPopup.Control.UI.CloseButtonImage.Pressed.FileUrl :%s", *(NewsPopup.Control.UI.CloseButtonImage.Pressed.FileUrl)); OnLog("- NewsPopup.Control.UI.CloseButtonImage.Type :%d", NewsPopup.Control.UI.CloseButtonImage.Type); OnLog("- RequestHeader size = %d", HeaderSize); for (int i = 0; i < HeaderSize; i++, Headers++) { OnLog(" - Header[%d].Name : %s", i, *(Headers->Name)); OnLog(" - Header[%d].Value : %s", i, *(Headers->Value)); } }
Plain Text
복사
Precautions Even if the success callback (OnNewsPopup) is executed, NewsPopup callback parameter properties may be default values (empty string or 0). You need to check the url property of the NewsPopup callback parameter before deciding whether to open a popup. In this case, check the news pop-up settings of Partners.
If an error occurs while running the UMyStoveSDKObject::StoveSDKGetNewsPopup function, the UMyStoveSDKObject::OnError callback is called.
You can check external errors through the ExternalError field of the FStoveError structure.
ExternalError
Description
403000
Invalid Access Error
400000
Wrong API usage Error
400001
Not Found Error
400002
Not Match Error
400003
Already exist
500001
Internal Interaction Error
900000
Unknown Service Error

6. Get coupon pop-up information

Search coupon popup information with UMyStoveSDKObject::StoveSDKGetCouponPopup function.
void UMyStoveSDKObject::OnCouponPopup(FStoveCouponPopup CouponPopup, int HeaderSize, FStovePopupRequestHeader* Headers) { /*Add the 'walkthrough' codes here.*/ OnLog("[CouponPopup]"); OnLog("- CouponPopup.Url : %s", *(CouponPopup.Url)); OnLog("- CouponPopup.Control.UI.DisallowedDay :%d", CouponPopup.Control.UI.DisallowedDay); OnLog("- CouponPopup.Control.UI.Visible.BackButton :%s", CouponPopup.Control.UI.Visible.BackButton ? TEXT("true") : TEXT("false")); OnLog("- CouponPopup.Control.UI.Visible.CloseButton :%s", CouponPopup.Control.UI.Visible.CloseButton ? TEXT("true") : TEXT("false")); OnLog("- CouponPopup.Control.UI.Visible.DisallowedButton :%s", CouponPopup.Control.UI.Visible.DisallowedButton ? TEXT("true") : TEXT("false")); OnLog("- CouponPopup.Control.UI.Visible.ForwardButton :%s", CouponPopup.Control.UI.Visible.ForwardButton ? TEXT("true") : TEXT("false")); OnLog("- CouponPopup.Control.UI.Visible.HomeButton :%s", CouponPopup.Control.UI.Visible.HomeButton ? TEXT("true") : TEXT("false")); OnLog("- CouponPopup.Control.UI.Visible.NavigationBar :%s", CouponPopup.Control.UI.Visible.NavigationBar ? TEXT("true") : TEXT("false")); OnLog("- CouponPopup.Control.UI.Visible.RefreshButton :%s", CouponPopup.Control.UI.Visible.RefreshButton ? TEXT("true") : TEXT("false")); OnLog("- CouponPopup.Control.UI.CloseButtonImage.Normal.FileId :%s", *(CouponPopup.Control.UI.CloseButtonImage.Normal.FileId)); OnLog("- CouponPopup.Control.UI.CloseButtonImage.Normal.FileUrl :%s", *(CouponPopup.Control.UI.CloseButtonImage.Normal.FileUrl)); OnLog("- CouponPopup.Control.UI.CloseButtonImage.Pressed.FileId :%s", *(CouponPopup.Control.UI.CloseButtonImage.Pressed.FileId)); OnLog("- CouponPopup.Control.UI.CloseButtonImage.Pressed.FileUrl :%s", *(CouponPopup.Control.UI.CloseButtonImage.Pressed.FileUrl)); OnLog("- CouponPopup.Control.UI.CloseButtonImage.Type :%d", CouponPopup.Control.UI.CloseButtonImage.Type); OnLog(" - RequestHeader size = %d", HeaderSize); for (int i = 0; i < HeaderSize; i++, Headers++) { OnLog(" - Header[%d].Name : %s", i, *(Headers->Name)); OnLog(" - Header[%d].Value : %s", i, *(Headers→Value)); } }
Plain Text
복사
When the UMyStoveSDKObject::StoveSDKGetCouponPopup function is successfully processed, the UMyStoveSDKObject::OnCouponPopup callback is called.
The FStoveCouponPopup structure passed to the callback contains the URL to the coupon popup.
The FStovePopupRequestHeader structure passed to the callback contains name/value pairs of headers to be set when requesting URLs.
void UMyStoveSDKObject::OnCouponPopup(FStoveCouponPopup CouponPopup, int HeaderSize, FStovePopupRequestHeader* Headers) { /*Add the 'walkthrough' codes here.*/ OnLog("[CouponPopup]"); OnLog("- CouponPopup.Url : %s", *(CouponPopup.Url)); OnLog("- CouponPopup.Control.UI.DisallowedDay :%d", CouponPopup.Control.UI.DisallowedDay); OnLog("- CouponPopup.Control.UI.Visible.BackButton :%s", CouponPopup.Control.UI.Visible.BackButton ? TEXT("true") : TEXT("false")); OnLog("- CouponPopup.Control.UI.Visible.CloseButton :%s", CouponPopup.Control.UI.Visible.CloseButton ? TEXT("true") : TEXT("false")); OnLog("- CouponPopup.Control.UI.Visible.DisallowedButton :%s", CouponPopup.Control.UI.Visible.DisallowedButton ? TEXT("true") : TEXT("false")); OnLog("- CouponPopup.Control.UI.Visible.ForwardButton :%s", CouponPopup.Control.UI.Visible.ForwardButton ? TEXT("true") : TEXT("false")); OnLog("- CouponPopup.Control.UI.Visible.HomeButton :%s", CouponPopup.Control.UI.Visible.HomeButton ? TEXT("true") : TEXT("false")); OnLog("- CouponPopup.Control.UI.Visible.NavigationBar :%s", CouponPopup.Control.UI.Visible.NavigationBar ? TEXT("true") : TEXT("false")); OnLog("- CouponPopup.Control.UI.Visible.RefreshButton :%s", CouponPopup.Control.UI.Visible.RefreshButton ? TEXT("true") : TEXT("false")); OnLog("- CouponPopup.Control.UI.CloseButtonImage.Normal.FileId :%s", *(CouponPopup.Control.UI.CloseButtonImage.Normal.FileId)); OnLog("- CouponPopup.Control.UI.CloseButtonImage.Normal.FileUrl :%s", *(CouponPopup.Control.UI.CloseButtonImage.Normal.FileUrl)); OnLog("- CouponPopup.Control.UI.CloseButtonImage.Pressed.FileId :%s", *(CouponPopup.Control.UI.CloseButtonImage.Pressed.FileId)); OnLog("- CouponPopup.Control.UI.CloseButtonImage.Pressed.FileUrl :%s", *(CouponPopup.Control.UI.CloseButtonImage.Pressed.FileUrl)); OnLog("- CouponPopup.Control.UI.CloseButtonImage.Type :%d", CouponPopup.Control.UI.CloseButtonImage.Type); OnLog(" - RequestHeader size = %d", HeaderSize); for (int i = 0; i < HeaderSize; i++, Headers++) { OnLog(" - Header[%d].name : %s", i, *(Headers->Name)); OnLog(" - Header[%d].value : %s", i, *(Headers->Value)); } }
Plain Text
복사
If an error occurs while running the UStoveSDKObject::StoveSDKGetCouponPopup function, the UStoveSDKObject::OnError callback is called.

7. Get community pop-up information

Use the UMyStoveSDKObject::StoveSDKGetCommunityPopup function to query community popup information.
FStoveResult UMyStoveSDKObject::StoveSDKGetCommunityPopup() { /*Add the 'walkthrough' codes here.*/ FStoveResult ErrorResult = Super::StoveSDKGetCommunityPopup(); if (ErrorResult.Result == StovePCResult::STOVE_PC_NO_ERROR) { // success handling } return ErrorResult; }
Plain Text
복사
When the UMyStoveSDKObject::StoveSDKGetCommunityPopup function is successfully processed, the UStoveSDKObject::OnCommunityPopup callback is called.
The FStoveCommunityPopup structure passed to the callback contains the URL to the community popup.
The FStovePopupRequestCookie structure passed to the callback contains the cookie name/value pair to be set when requesting the URL.
void UMyStoveSDKObject::OnCommunityPopup(FStoveCommunityPopup CommunityPopup, int CookieSize, FStovePopupRequestCookie* Cookies) { OnLog("[CommunityPopup]"); OnLog("- CommunityPopup.Url : %s", *(CommunityPopup.Url)); OnLog("- CommunityPopup.Control.UI.DisallowedDay :%d", CommunityPopup.Control.UI.DisallowedDay); OnLog("- CommunityPopup.Control.UI.Visible.BackButton :%s", CommunityPopup.Control.UI.Visible.BackButton ? TEXT("true") : TEXT("false")); OnLog("- CommunityPopup.Control.UI.Visible.CloseButton :%s", CommunityPopup.Control.UI.Visible.CloseButton ? TEXT("true") : TEXT("false")); OnLog("- CommunityPopup.Control.UI.Visible.DisallowedButton :%s", CommunityPopup.Control.UI.Visible.DisallowedButton ? TEXT("true") : TEXT("false")); OnLog("- CommunityPopup.Control.UI.Visible.ForwardButton :%s", CommunityPopup.Control.UI.Visible.ForwardButton ? TEXT("true") : TEXT("false")); OnLog("- CommunityPopup.Control.UI.Visible.HomeButton :%s", CommunityPopup.Control.UI.Visible.HomeButton ? TEXT("true") : TEXT("false")); OnLog("- CommunityPopup.Control.UI.Visible.NavigationBar :%s", CommunityPopup.Control.UI.Visible.NavigationBar ? TEXT("true") : TEXT("false")); OnLog("- CommunityPopup.Control.UI.Visible.RefreshButton :%s", CommunityPopup.Control.UI.Visible.RefreshButton ? TEXT("true") : TEXT("false")); OnLog("- CommunityPopup.Control.UI.CloseButtonImage.Normal.FileId :%s", *(CommunityPopup.Control.UI.CloseButtonImage.Normal.FileId)); OnLog("- CommunityPopup.Control.UI.CloseButtonImage.Normal.FileUrl :%s", *(CommunityPopup.Control.UI.CloseButtonImage.Normal.FileUrl)); OnLog("- CommunityPopup.Control.UI.CloseButtonImage.Pressed.FileId :%s", *(CommunityPopup.Control.UI.CloseButtonImage.Pressed.FileId)); OnLog("- CommunityPopup.Control.UI.CloseButtonImage.Pressed.FileUrl :%s", *(CommunityPopup.Control.UI.CloseButtonImage.Pressed.FileUrl)); OnLog("- CommunityPopup.Control.UI.CloseButtonImage.Type :%d", CommunityPopup.Control.UI.CloseButtonImage.Type); OnLog("- RequestCookie size = %d", CookieSize); for (int i = 0; i < CookieSize; i++, Cookies++) { OnLog(" - Cookie[%d].Name : %s", i, *(Cookies->Name)); OnLog(" - Cookie[%d].Value : %s", i, *(Cookies->Value)); } }
Plain Text
복사
If an error occurs while running the UMyStoveSDKObject::StoveSDKGetCommunityPopup function, the UStoveSDKObject::OnError callback is called.
External errors can be checked through the ExternalError field of the FStoveError structure.
ExternalError
Description
13008
Mandatory Parameter missing
90001
AccessToken invalid
40101
Invalid token

8. Disable pop-ups

With the UMyStoveSDKObject::StoveSDKSetPopupDisallowed function, set a specific pop-up not to be displayed for a certain period of time.
If the game directly implements the PC SDK pop-up UI, configure the UI by referring to the Control.UI.Visible.DisallowedButton value of the pop-up UI information
Call the UMyStoveSDKObject::StoveSDKSetPopupDisallowed function in the button click handler.
When calling the UMyStoveSDKObject::StoveSDKSetPopupDisallowed function, the days parameter uses the Control.UI.DisallowedDay value of the popup information.
If pop-up disallow is set, the relevant pop-up information will not be searched during the disallow period.
// input parameters // const int PopupId : Popup identifier issued by Partners //const int Days : the number of days that Partners has registered as unavailable (once) or -1 (don't look again) // const int Days : Unacceptable period registered by Partners (in days) FStoveResult UMyStoveSDKObject::StoveSDKSetPopupDisallowed(const int PopupId, const int Days) { /*Add the 'walkthrough' codes here.*/ FStoveResult ErrorResult = Super::StoveSDKSetPopupDisallowed(PopupId, Days); if (ErrorResult.Result == StovePCResult::STOVE_PC_NO_ERROR) { // success handling } return ErrorResult; }
Plain Text
복사