Skip to main content

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

  1. 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)
  2. Payment API added: An in-game product purchase API. The game purchases by productId only; 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 code
    • payment.GetProducts() / GetProduct() / Purchase() / GetTransaction()
    • onFail is PaymentFailResult (code/errMsg/txnKey/failReason) — branch by code
    • Works by round-tripping through the platform via the JS SDK — availability and results are decided by the platform (PAYMENT_UNAVAILABLE where payment is not provided)
  3. servicePlatform field added to SystemInfo and AppBaseInfo: 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 unified ShowRewardedAd() 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

  1. 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");
    • bannerId doubles as the game-defined slot name
    • RunBannerAction only signals success/fail — the game handles reward delivery itself
    • See: Ad API → Banner Ad
  2. TudadaSDK.GameAction action 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
  3. Login() response now includes user info credential fields

    LoginResult now exposes userInfoPayload/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);
    }
    );
  4. GetUserInfo() response reshaped to Tudada-fit (Breaking change)

    The wx-compatible 4 fields (encryptedData/iv/signature/rawData) are removed from GetUserInfoResult. It now returns the same credential as Login() (userInfoPayload/userInfoSignature). The withCredentials parameter is also removed, simplifying the signature to GetUserInfo(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

  1. 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

  1. 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
    • CreateRewardedVideoAd is maintained as legacy
  2. 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 support
    • CheckFeatureStatus: supported, unknown_api, version_required, platform_unsupported, device_unsupported, permission_denied
  3. 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 options
    • query is 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

  1. Accelerometer API added: StartAccelerometerSensor(), StopAccelerometerSensor(), and OnAccelerometerChange event 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.acceleration simulation 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

  1. environment field added to SystemInfo and AppBaseInfo

    A 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"
    ValueDescription
    "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

  1. userId field added to Login result

    TudadaSDK.Instance.Login(
    onSuccess: (result) => {
    Debug.Log("Code: " + result.code); // existing
    Debug.Log("User ID: " + result.userId); // newly added
    }
    );
  2. SystemInfo.wifiEnabled now returns the actual value

    Previously it was a fixed value, but now it returns the actual Wi-Fi enabled status.

Changes (Migration Required)

  1. Unity Client package update required

    You need to re-import tudada-unity-client-v0.1.0.unitypackage or later. Remove the existing package and import the new one.

  2. CheckSession callback 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

  1. Import the new .unitypackage file (overwrite existing files)
  2. Update the SDK script version in index.html:
    <script src="tudadaGameSDK.0.1.0.js"></script>
  3. If you were using login information from the CheckSession callback, separate it into a Login call

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.