Changelog
Changelog
If you have previously read the SDK guide for an earlier version (0.0.1), check this section for changes.
v0.2.0 (2026-06-24) — Current Version
New Features
-
Unified Rewarded Slot API added: Rewarded video, banner, and share are unified into a single slot model. Query active slots to render them, and run with
ShowRewardedAd(slot)on user tap.TudadaSDK.Instance.GetRewardedAdSlots(
onSuccess: res =>
{
if (res.slots.Length == 0) return;
var slot = res.slots[0];
// slotData may be null for default video/share slots — null-check before access
TudadaSDK.Instance.ShowRewardedAd(slot,
onSuccess: r => { if (r.isEnded) GiveReward(); });
});- New:
GetRewardedAdSlots(...)/GetRewardedAdSlot(slotId, ...) ShowRewardedAd(slot)overload added — the platform dispatches by action (REWARD_VIDEO/BANNER/SHARE)- New types:
RewardedAdSlot,RewardSlotData - The existing Banner API (
GetAvailableBannerIds/GetBanner/RunBannerAction) is superseded by unified slots (kept for compatibility)
- New:
-
Payment API added: An in-game product purchase API. The game purchases by
productIdonly; payment method, pricing, verification, and granting are handled by the platform.TudadaSDK.Instance.payment.GetProducts(
onSuccess: res => { /* res.products */ },
onFail: err => Debug.LogError(err.code)); // PaymentFailResult — branch by codepayment.GetProducts()/GetProduct()/Purchase()/GetTransaction()onFailisPaymentFailResult(code/errMsg/txnKey/failReason) — branch bycode- Works by round-tripping through the platform via the JS SDK — availability and results are decided by the platform (
PAYMENT_UNAVAILABLEwhere payment is not provided)
-
servicePlatformfield added toSystemInfoandAppBaseInfo: Identifies which host service ("kakaotalk"/"kakaopay"/"house") the game is running in.var info = TudadaSDK.Instance.GetSystemInfoSync();
Debug.Log(info.servicePlatform); // "kakaotalk" | "kakaopay" | "house"
Deprecated
CreateRewardedVideoAd/TudadaRewardedVideoAd(legacy) — wx-compatible legacy instance API. Replaced by the unifiedShowRewardedAd()and scheduled for removal in the next version. A[System.Obsolete]attribute was added (compile warning on use).
v0.1.6 (2026-05-12)
New Features
-
Banner Ad API added (slot model): A new API has been added that lets the game receive banner images per slot, render them itself, and delegate actions to the platform on user tap.
// 1) List active banner slot IDs
TudadaSDK.Instance.GetAvailableBannerIds(
onSuccess: (result) => Debug.Log("slots: " + string.Join(",", result.bannerIds))
);
// 2) Fetch banner data matched to a slot
TudadaSDK.Instance.GetBanner("main_menu_top",
onSuccess: (result) => {
if (result.banner != null) RenderBanner(result.banner.imageUrl);
}
);
// 3) Delegate the action on user tap (reward is handled by the game)
TudadaSDK.Instance.RunBannerAction("main_menu_top");bannerIddoubles as the game-defined slot nameRunBannerActiononly signals success/fail — the game handles reward delivery itself- See: Ad API → Banner Ad
-
TudadaSDK.GameActionaction logging API added (Phase 1): Sends game lifecycle actions to the platform as fire-and-forget events.// Game start
TudadaSDK.Instance.GameAction.Start();
// Game clear
TudadaSDK.Instance.GameAction.Complete(new GameActionCompleteOption {
payload = new GameActionPayload { score = 1200, level = 5 }
});
// Game exit (with reason)
TudadaSDK.Instance.GameAction.Exit(new GameActionExitOption {
payload = new GameActionPayload { reason = "USER_QUIT" }
});GameAction.Start(option?)/Complete(option)/Exit(option)— lifecycle action signals- Calls are fire-and-forget; downstream routing is the platform's responsibility
- See: GameAction API
-
Login()response now includes user info credential fieldsLoginResultnow exposesuserInfoPayload/userInfoSignature— signed user info that the game server can verify on its own using only a shared secret key, without any server-to-server call.TudadaSDK.Instance.Login(
onSuccess: (result) => {
// Existing fields — unchanged
Debug.Log(result.code + " " + result.userId);
// Verify on game server
SendToGameServer(result.userInfoPayload, result.userInfoSignature);
}
);- Existing response fields (
code,userId,errMsg,errCode) are preserved - See: Auth API → User Info Credential
- Existing response fields (
-
GetUserInfo()response reshaped to Tudada-fit (Breaking change)The wx-compatible 4 fields (
encryptedData/iv/signature/rawData) are removed fromGetUserInfoResult. It now returns the same credential asLogin()(userInfoPayload/userInfoSignature). ThewithCredentialsparameter is also removed, simplifying the signature toGetUserInfo(onSuccess, onFail).// before (v0.1.5)
TudadaSDK.Instance.GetUserInfo(withCredentials: true,
onSuccess: (result) => {
// result.encryptedData/iv/signature were mock-only
}
);
// after (v0.1.6)
TudadaSDK.Instance.GetUserInfo(
onSuccess: (result) => {
Debug.Log(result.userInfo.nickName);
SendToGameServer(result.userInfoPayload, result.userInfoSignature);
}
);
v0.1.5 (2026-03-30)
New Features
-
ShareForReward API added: A new API for granting rewards upon share completion has been added.
TudadaSDK.Instance.ShareForReward(
url: "https://example.com/share", // optional
onSuccess: (result) => {
if (result.rewarded) Debug.Log("Share complete — reward granted");
},
onFail: (error) => Debug.LogError($"Share failed: {error}")
);ShareForReward(url, onSuccess, onFail): Share + reward processing- Share handling is automatically managed by the platform
Required Files:
- Game SDK:
tudadaGameSDK.0.1.5.js - Unity Client:
tudada-unity-client-v0.1.5-hotfix0420.unitypackage
v0.1.4 (2026-03-18)
New Features
-
ShowRewardedAd API added: Handles loading through displaying a rewarded ad in a single call.
TudadaSDK.Instance.ShowRewardedAd("your-ad-unit-id",
onSuccess: (result) => {
if (result.isEnded) Debug.Log("Watch complete — grant reward");
},
onFail: (error) => Debug.LogError($"Ad failed: {error.errMsg}")
);ShowRewardedAd(adUnitId, onSuccess, onFail): Handles loading + displaying in one call- Loading UI, retries, and failure popups are automatically handled by the platform
CreateRewardedVideoAdis maintained as legacy
-
CheckFeature API added: Allows you to check in advance whether a specific API is supported on the current platform.
TudadaSDK.Instance.CheckFeature("startAccelerometerSensor",
onSuccess: (result) => Debug.Log($"Supported: {result.apiName}"),
onFail: (result) => Debug.Log($"Not supported: {result.status}")
);CheckFeature(apiName, onSuccess, onFail): Check API supportCheckFeatureStatus:supported,unknown_api,version_required,platform_unsupported,device_unsupported,permission_denied
-
LaunchOptions API added: Allows you to retrieve query parameters and referrer information passed when the game launches.
TudadaLaunchOptions options = TudadaSDK.Instance.GetLaunchOptions();
Debug.Log("Query JSON: " + options.query);GetLaunchOptions(): Synchronously retrieve launch optionsqueryis a JSON string (requires parsing with a third-party JSON library)
Required Files:
- Game SDK:
tudadaGameSDK.0.1.4.js - Unity Client:
tudada-unity-client-v0.1.4.unitypackage
v0.1.3 (2026-02-26)
New Features
-
Accelerometer API added:
StartAccelerometerSensor(),StopAccelerometerSensor(), andOnAccelerometerChangeevent have been added.TudadaSDK.Instance.OnAccelerometerChange += (res) => {
Debug.Log($"X: {res.x}, Y: {res.y}, Z: {res.z}");
};
TudadaSDK.Instance.StartAccelerometerSensor(
sensitivity: AccelerometerSensitivity.normal,
onSuccess: (result) => Debug.Log("Sensor started")
);
TudadaSDK.Instance.StopAccelerometerSensor();- XYZ axis-based acceleration data reception
- Sensitivity-based control:
sensitive|normal|insensitive - Flat API pattern:
StartAccelerometerSensor(),StopAccelerometerSensor(),OnAccelerometerChange Input.accelerationsimulation support in Unity Editor
Required Files:
- Game SDK:
tudadaGameSDK.0.1.4.js - Unity Client:
tudada-unity-client-v0.1.4.unitypackage
v0.1.2 (2026-02-26)
New Features
-
environmentfield added toSystemInfoandAppBaseInfoA field indicating the current access environment has been added.
SystemInfo info = TudadaSDK.Instance.GetSystemInfoSync();
Debug.Log(info.environment); // "prod" or "dev"
AppBaseInfo appInfo = TudadaSDK.Instance.GetAppBaseInfo();
Debug.Log(appInfo.environment); // "prod" or "dev"Value Description "prod"Production environment "dev"Development environment
Required Files:
- Game SDK:
tudadaGameSDK.0.1.2.js - Unity Client:
tudada-unity-client-v0.1.2.unitypackage
v0.1.1 (2026-02-20)
- Internal improvements applied (no game code changes required)
v0.1.0 (2026-02-06)
New Features
-
userIdfield added toLoginresultTudadaSDK.Instance.Login(
onSuccess: (result) => {
Debug.Log("Code: " + result.code); // existing
Debug.Log("User ID: " + result.userId); // newly added
}
); -
SystemInfo.wifiEnablednow returns the actual valuePreviously it was a fixed value, but now it returns the actual Wi-Fi enabled status.
Changes (Migration Required)
-
Unity Client package update required
You need to re-import
tudada-unity-client-v0.1.0.unitypackageor later. Remove the existing package and import the new one. -
CheckSessioncallback result type changed// 0.0.1 — onSuccess included login information
TudadaSDK.Instance.CheckSession(
onSuccess: (result) => {
// result included code, userId, etc.
}
);
// 0.1.0 and later — onSuccess contains only general result
TudadaSDK.Instance.CheckSession(
onSuccess: (result) => {
// Only result.errMsg is included
// Call Login() separately if login info is needed
}
);
Update Procedure
- Import the new
.unitypackagefile (overwrite existing files) - Update the SDK script version in
index.html:<script src="tudadaGameSDK.0.1.0.js"></script> - If you were using login information from the
CheckSessioncallback, separate it into aLogincall
v0.0.1 (2026-02-02) — Initial Release
This is the initial release version. The following APIs are included:
- Auth API (Login, CheckSession, GetUserInfo)
- Storage API (Set/Get/Remove/Clear Storage + Sync versions)
- TudadaStore API (cloud storage)
- System API (GetSystemInfoSync, GetWindowInfo, GetDeviceInfo, etc.)
- Device API (vibration, keyboard, clipboard)
- Ad API (rewarded video ads)
- Lifecycle API (OnShow, OnHide, ExitMiniProgram, RestartMiniProgram)
Copyright 2026 Tudada. All rights reserved.