Skip to main content
Version: 5.15.0

START

Update Notes

Incompatibility with BACKND Function 0.1.2

If you call BACKND Function 0.1.2 or an earlier version (released before December 28, 2021) from SDK 5.9.0,
the methods called from within the function will result in an error and not work properly.

You must upgrade BACKND Function to 0.2.0 before upgrading the SDK.

410 error issue when updating from SDK 5.6.0 and earlier versions

If you are updating from SDK 5.6.0 or an earlier version, all BACKND method calls may result in the 410 GoneResourceException error.
The error will not appear after relogging in, so please configure that the following login methods can be called:

  • Backend.BMember.CustomLogin
  • Backend.BMember.GuestLogin
  • Backend.BMember.AuthorizeFederation
  • Backend.BMember.LoginWithTheBackendToken
  • Backend.BMember.RefreshTheBackendToken
Note - 403 Forbidden logic update in SDK 5.8.0

From SDK 5.8.0, if the 403 Forbidden error occurs due to excessive requests, the local restricts sending further requests to the server for 5 minutes and 30 seconds; if a function is called during this time, the following error is returned:

statusCode : 403
errorCode : Forbidden
message : 403 Forbidden by Local

If you are using the previous messages to process the 403 error, use errorCode or the IsTooManyRequestError method.

Compression data unusable in SDK 5.11.0 - 5.11.3

When using compression data in SDK version 5.11.0 - 5.11.3, loading data with 0 added to the back of inDate will cause a fatal error that changes the inDate value.
If you wish to use compression data, please do so in SDK 5.11.4 or later versions.


5.15.0

InsertLog method deleted

The deprecated InsertLog method has been deleted. Please use InsertLogV2.

// Game log method available for 5.15.0 or below
// Backend.GameLog.InsertLog("logType", param);
// Backend.GameLog.InsertLogV2("logType", param);

// Game log method available for 5.15.0 or later (InsertLog deleted)
Backend.GameLog.InsertLogV2("logType", param);

Bug fixes

[Param] Fixed the error where LitJson.JsonData did not enter properly when added to Param

The issue where an error occurred in GameData and PlayerData methods when Param.Add(LitJson.JsonData) was called has been fixed.

[Chart management] Fixed the error that occurred when contentJson was called among the return values of Backend.CDN.Content.Get

The error where the loading process did not stop when contentJson was called among the return values of Backend.CDN.Content.Get has been fixed.

[Probability management] Fixed the error that occurred when contentJson was called among the return values of Backend.CDN.Probability.Get

The error where the loading process did not stop when contentJson was called among the return values of Backend.CDN.Probability.Get has been fixed.

[BACKND Match] Fixed the issue where certain values could not be loaded from each response handler

  • The issue where OldSuperUserRecord and NewSuperUserRecord could not be properly loaded from MatchInGameChangeSuperGamerEventArg, the response value of the OnChangeSuperGamer handler, has been fixed. (Occurred since 5.12.0)
  • The issue where GameRecord could not be properly loaded from MatchInGameSessionEventArgs, the response value of the OnMatchInGameAccess handler, has been fixed. (Occurred since 5.12.0)
  • The issue where InviteUserInfo could not be properly loaded from MatchMakingInvitedRoomEventArgs, the response value of the OnMatchMakingRoomSomeoneInvited handler, has been fixed. (Occurred since 5.12.0)
  • The issue where UserInfo could not be properly loaded from MatchMakingGamerInfoInRoomEventArgs, the response value of the OnMatchMakingRoomJoin handler, has been fixed. (Occurred since 5.12.0)
  • The issue where UserInfo could not be properly loaded from MatchMakingGamerInfoListInRoomEventArgs, the response value of the OnMatchMakingRoomUserList handler, has been fixed. (Occurred since 5.12.0)

5.14.1

Fixed the issue where the location information could not be read from iOS

The issue where the location information could not be read from iOS since BACKND SDK 5.12.0 has been fixed.

Rolled back UpdateLocationProperties method deletion

The Backend.LocationProperties.UpdateLocationProperties() method that was deleted from BACKND SDK 5.12.0 has been rolled back.


5.14.0

Group function added

The function of adding users to certain groups has been added.
Users belonging to a group can compete against each other on that group's leaderboard.

BackEnd.Group.BackendGroupReturnObject tableBro = Backend.Group.Table.Get();
BackEnd.Group.GroupItem group = tableBro.GetGroupList()[0];
var bro = Backend.Group.Update(group.groupUuid, group.groupName);

if(bro.IsSuccess() == false)
{
Debug.LogError(bro);
}

Leaderboard function added

For the newly added leaderboard, leaderboards can be updated according to the group.

In the case of the URank function, even if a user belongs to a group, when the leaderboard update function is called, it will be updated in the NULL group's leaderboard.

  • Leaderboard that is not grouped can be registered without issues.

Therefore, if you want to use the leaderboard for the group you belong to, you need to switch to the Leaderboard method.

For more details, refer to Differences with Rankings.

Param param = new Param();
param.Add("score", i);
param.Add("extraData", "additional info");

Backend.Leaderboard.User.UpdateMyDataAndRefreshLeaderboard("leaderboard uuid", "table name", "row inDate to be updated", param);

Columns added to the return values of the ranking configuration retrieval function

For leaderboards created after September 24, 2024, Backend.URank.User.GetRankTableList() column will be added to the return values of the function.

Return value of Backend.URank.User.GetRankTableList()

{
"rows": [
{
...
// Reward mail title set in the console (output as a fallback)
"rewardPostTitle": {
"S": "Mail reward title"
},
// Name of the column used as ranking score
"column" : {
"S":"score"
},
// Name of the column used as an additional field of the ranking (exists only when the additional field is registered)
}
// and etc...
]
}

Column added to the return values of the ranking mail loading function

For ranking rewards sent from leaderboards created after September 24, 2024, Backend.UPost.GetPostList() column will be added to the return values of the function.

"postTitle": {
"ko": "Achieved best score rank!",
"en": "You Best Score!",
"fallback": "en"
},

Return value of Backend.UPost.GetPostList()

{
"postList": [
{
"rankType": "guild",
"content": "All Random All Mid ranking (21 - 40)",",
"expirationDate": "2021-12-26T19:03:44.163Z",
"reservationDate": "2021-12-19T19:03:44.163Z",
"nickname": "User2",
"inDate": "2021-12-19T19:03:44.163Z",
"title": "All Random All Mid ranking (21 - 40)",",
"sentDate": "2021-12-19T19:03:44.163Z",
// ======================================
// The following column has been added.
"postTitle": {
"ko": "Achieved best score rank!",
"en": "You Best Score!",
"fallback": "en"
},
// =====================================
"items": [
{
"item": {
"itemID": "i102",
"itemName": "Item2",
"hpPower": "10",
"aabab": "2"
},
"itemCount": 1,
"chartName": "Ranking rewards chart2"
}
]
}
]
}

Game information management error fixes

Fixed the error where the callback for the Insert, Update, and transaction functions is called twice when an Exception occurs in the callback

The error where the callback for the Insert, Update, and transaction functions is called twice when an Exception occurs in the callback has been fixed.

Fixed the issue where a "Malformed URL" error occurs when calling the Get function using a select statement on devices with iOS 16 or higher

The issue where a "Malformed URL" error occurs when calling the Get function using a select statement on devices with iOS 16 or higher has been fixed.

Fixed the error where exceptions occur in GetWriteCapacity and GetReadCapacity during transaction calls

The error that occurred when calling GetWriteCapacity and GetReadCapacity during transaction calls for PlayerData has been fixed.

Fixed the error where a "bad signature" occurs when calling CheckUserInBackend

The error causing a "bad signature" when calling CheckUserInBackend on iOS has been fixed.

[BACKND Function] Fixed the issue where an error occurs when calling the backend function from an EXE file built for Windows

The error that caused a "bad app id" issue when calling the backend function from an EXE file built for Windows has been fixed.


5.13.0

Batch download feature added for chart files and probability files

The feature to bulk load chart files and probability files has been added.

private void GetProgress(int totalCount, int remainCount, string fileName)
{
Debug.Log("totalCount : " + totalCount + " remainCount : " + remainCount + " fileName : " + fileName);
}

public void GetContentListTestAsync()
{
Backend.CDN.Content.Table.Get(bro =>
{
Backend.CDN.Content.Get(bro.GetContentTableItemList(), GetProgress, bro2 =>
{
if(bro.IsSuccess()) {
foreach(BackEnd.Content.ContentItem item in bro2.GetContentList)
{
Debug.Log(item);
}
}
});
});
}

IEnumerator GetContentListTestAsyncIEnumerator()
{
BackEnd.Content.BackendContentTableReturnObject callback = null;



yield return new WaitUntil(() => callback != null);

if(callback.IsSuccess() == false) {
Debug.LogError(callback);
yeild break;
}

BackEnd.Content.BackendContentReturnObject callback2 = null;


}

Receipt verification price added

You can enter the price and currency during receipt verification.
The price and currency will be available for verification in the console through a future update.

Backend.Receipt.IsValidateGooglePurchase(args.purchasedProduct.receipt, "receiptDescription", isSubScription, args.purchasedProduct.metadata.localizedPrice, args.purchasedProduct.metadata.isoCurrencyCode);

5.12.1

Communication library changed

The communication library of the BACKND has been changed from HttpClient to UnityWebRequest.
All requests are now executed on Unity's main thread.

If there are existing logics that use external threads, they may not function properly.

Task use disabled

You will not be able to call BACKND functions within a Task, such as when invoking synchronous methods from an external thread as shown below.

Task.Run( () => {
Backend.BMember.CustomSignUp("user1", "user1");
Backend.BMember.UpdateNickname("user1");
});

async deleted from asynchronous methods

The async modifier has been removed from all asynchronous methods.

AsyncPoll deleted

BACKND SDK has removed the Backend.AsyncPoll feature, as callbacks will no longer be returned from external threads when calling asynchronous methods.

void Update() {
// if (Backend.IsInitialized) {
// Backend.AsyncPoll();
// }
}

Backend.Initialize parameters changed

As external threads will no longer be called, the following parameters have been removed.

  • useAsyncPoll: Indicates whether to process asynchronous method calls in external threads on the BACKND.
  • autoLocationToAsync: Indicates whether to retrieve country information asynchronously (can be selected in the inspector).
// Below 5.12.1
// public static BackendReturnObject Initialize(bool useAsyncPoll = false, bool autoLocationToAsync = true)
// public async static void InitializeAsync(bool useAsyncPoll, bool autoLocationToAsync, BackendCallback callback)

// Above 5.12.1
public static BackendReturnObject Initialize()
public static void InitializeAsync(BackendCallback callback)

Error handler poll method deleted

The BACKND SDK no longer returns callbacks from external threads when calling asynchronous methods. As a result, the error handler that was previously detected in external threads will now be detected in the main thread, leading to the deletion of the Poll() and InitializePoll methods.

void Start() {
// Backend.ErrorHandler.InitializePoll(true);
}

void Update() {
// if (Backend.ErrorHandler.UseAsyncQueuePoll) {
// Backend.ErrorHandler.Poll();
// }
}

dll files changed

The dll files have been changed. When updating the SDK, if you wish to delete any files that are no longer in use, delete the TheBackend folder and then import the new version.

The project settings values located in the TheBackend > Resources folder will also be deleted, therefore re-enter the clientAppId.

Deleted files

  • TheBackend.iOS.dll
  • BackendIOSPushNotification.mm
  • XCodeBuildForPushNotification.cs
  • TheBackend.iOS.dll
  • TheBackendHashKeySettings.dll
  • SendQueueMgr.cs

Added file

  • WebSocket4Net.dll

5.11.9

image

5.12.1

image

BackendManager object created when calling the initialization function

When calling Backend.Initialize(), DontDestroyOnLoad BackendManager game object is created.
Be aware that if the object is destroyed or if any scripts associated with the BackendManager are deleted, communication will no longer occur.

image

Fixed initialization failure error when the name of the Windows PC is in Korean

The error that caused initialization and BACKND function calls to fail when the name of the Windows PC was in Korean has been fixed.

Push message settings

Automatic device token retrieval feature deleted

The PutDeviceToken method, which does not have any parameters, has been removed.
You must now provide a device token when using the PutDeviceToken method.

Deleted methods

Backend.Android.PutDeviceToken();
Backend.iOS.PutDeviceToken();

Substitute methods

string token = "";
Backend.Android.PutDeviceToken(token);
Backend.iOS.PutDeviceToken(token);

Game information management

Multiplication and division functions for game information calculations removed

The multiplication and division functions have been removed from the game information operations in game information management.
The division and multiplication functionalities have been removed from the GameInfoOperator enum used in AddCalculation.
In the GameInfoOperator enum used in AddCalculation, only addition and subtraction are available for selection.

Param updateParam = new Param();
updateParam.AddCalculation("atk", GameInfoOperator.addition, 10); // Add 10 to atk of the existing data
updateParam.AddCalculation("def", GameInfoOperator.subtraction, 20); // Subtract 20 from the def of the existing data

Backend.GameData.UpdateWithCalculationV2("tableName", inDate, Backend.UserInDate, updateParam);

Old version chat

Old version chat deleted

The old version of the chat (Backend.Chat) feature has been deleted.

// Backend.Chat.OnJoinChannel = (JoinChannelEventArgs args) => {
// // This method has been deleted.
// }

User management

Error sanction details added for user blocking and device blocking

When blocking a user or a device, you will now be able to view more detailed information compared to the previous errors.

When the user is blocked

StatusCode : 403  
ErrorCode : The reason for blocking entered in the console
Message : Forbidden blocked user, forbidden blocked user
Code : 403100
ErrorMessage : 757fe1d0-03af-11ef-bda5-fd24a5f141c1 blocked until 2024-11-29T12:41:19.465Z
ErrorData : {
uuid : 757fe1d0-03af-11ef-bda5-fd24a5f141c1
nickname : Nickname
blockReason : The reason for blocking entered in the console
blockDate : 2024-11-29T12:41:19.465Z
}

If the user is blocked, you can check the following error data.

  • Code : Unique ID for the error case
  • ErrorMessage : Details of that error
  • ErrorData : Detailed data related to the error (If nickname and blockReason do not exist, data cannot be parsed.)

Error use example

var callback = Backend.BMember.CustomLogin("a0", "a0");

Debug.Log(
if (callback.GetMessage().StartsWith("Forbidden blocked user"))
{
StringBuilder returnString = new StringBuilder();
returnString.Append("StatusCode : ").Append(callback.GetStatusCode()).AppendLine();
returnString.Append("ErrorCode : ").Append(callback.GetErrorCode()).AppendLine();
returnString.Append("Message : ").Append(callback.GetMessage()).AppendLine();

returnString.Append("Code : ").Append(callback.GetCode()).AppendLine();
returnString.Append("ErrorMessage : ").Append(callback.GetErrorMessage()).AppendLine();

returnString.Append("errorData(uuid) : ").Append(callback.GetErrorData()["uuid"].ToString()).AppendLine();

if (callback.GetErrorData().ContainsKey("nickname"))
{
returnString.Append("errorData(nickname) : ").Append(callback.GetErrorData()?["nickname"].ToString()).AppendLine();
}

if (callback.GetErrorData().ContainsKey("blockReason"))
{
returnString.Append("errorData(blockReason) : ").Append(callback.GetErrorData()?["blockReason"].ToString()).AppendLine();
}

returnString.Append("errorData(blockDate) : ").Append(callback.GetErrorData()["blockDate"].ToString()).AppendLine();

Debug.Log(returnString.ToString());
}
)

When the device is blocked

StatusCode : 403
ErrorCode : ForbiddenException
Message : Forbidden blocked device, forbidden blocked device
Code : 403100
ErrorMessage : 20240426092307fc5ac478c is blocked
errorData : {
deviceUniqueId : 20240426092307fc5ac478c
}

If the device is blocked, you can check the following error data.

  • Code : Unique ID for the error case
  • ErrorMessage : Details of that error
  • ErrorData : Detailed data related to the error

Error use example

var callback = Backend.BMember.CustomSignUp("a0", "a0");

if (callback.IsDeviceBlockError())
{
StringBuilder returnString = new StringBuilder();

returnString.Append("StatusCode : ").Append(callback.GetStatusCode()).AppendLine();
returnString.Append("ErrorCode : ").Append(callback.GetErrorCode()).AppendLine();
returnString.Append("Message : ").Append(callback.GetMessage()).AppendLine();

returnString.Append("Code : ").Append(callback.GetCode()).AppendLine();

returnString.Append("ErrorMessage : ").Append(callback.GetErrorMessage()).AppendLine();

returnString.Append("errorData(deviceUniqueId)").Append(callback.GetErrorData()["deviceUniqueId"].ToString()).AppendLine();

Debug.Log(returnString.ToString());
}

[Version management] Version management feature added for ONE store

A feature to retrieve versions based on parameters has been added to version management.

Backend.Utils.GetLatestVersion(VersionInfo.GooglePlayStore);
Backend.Utils.GetLatestVersion(VersionInfo.AppStore);
Backend.Utils.GetLatestVersion(VersionInfo.OneStore);

[5.12.1] Fixed OnOtherDeviceLoginDetectedError error

The error where OnOtherDeviceLoginDetectedError malfunctioned when calling asynchronous functions multiple times after 24 hours of logging in has been fixed.

[5.12.1] Fixed the initialization failure error when the iOS device language is set to Turkish

The error that caused the initialization function call to fail when the iOS device was set to Turkish has been fixed.