Change Log
[1.2.0] - 2026-09-07
Added
- Reward Center (optional module). When the Reward Center package is installed, CiaoSDK automatically initializes it, forwards event names to
RewardCenter.ReportEvent, and forwards deep links toRewardCenter.HandleDeepLink. Studios do not need any extra integration code. - 'Update' menu item in the Ciao Games menu and Setup Window.
[1.1.0] - 2026-08-14
Added
- Support for multiple ad units per format (interstitial and rewarded). At show time, the SDK picks the highest eCPM ad unit, falling back to rotation when revenue data is unavailable.
- New analytics event ciao_ad_competition reporting winner, worst, and selection method.
- New config schema fields:
legacyLevelEventNameandlegacyLevelDigitsFormat. Fields are used only whenmnPrefix=true.
Changed
- Config schema: interstitial and rewarded are now lists of ad unit IDs. banner is a list of one.
- Config download now bypasses HTTP cache so studios always receive the latest version.
- Changed Singular event reporting in cases of mnPrefix=true, to support legacy games.
[1.0.1] - 2026-08-07
Changed
- LevelPlay adapter debug is now controlled by
CiaoSDKLogger.CurrentLogLevel. Enabled only atInfo; disabled atWarn/Error/None. Silences vendor adapter noise for studios shipping at production log levels.
Fixed
- Singular: privacy flags (
TrackingOptIn,LimitDataSharing,TrackingUnder13,SetLimitAdvertisingIdentifiers) are now applied beforeInitializeSingularSDKper Singular's guidance, ensuring they are reflected in the first-session payload.
[1.0.0] - 2026-08-06
First general release.
Added
- Consent snapshot event (
ciao_consent) sent to MMP and Analytics onInitializeandUpdateConsent, for dashboard visibility on how studios are wiring consent. Fields:gdpr_consent,ccpa_do_not_sell,is_child_directed,is_under_age_of_consent,att_granted,gdpr_networks_source.
Changed
- Singular: Opt-In consent pattern per Singular's official guidance.
InitializeSingularSDK()is now called only aftergdprConsent=true. Declined users produce no session and no events.UpdateConsent(true)later triggers deferred initialization. - ByteBrew: Opt-In consent pattern.
InitializeByteBrew()is now called only aftergdprConsent=trueand non-child-directed. Same deferred behavior on later consent updates.
[0.7.6] - 2026-08-03
Fixed
- LevelPlay consent: use
LevelPlay.SetConsent(bool)(LevelPlay 9.4+) instead ofLevelPlayPrivacySettings.SetGDPRConsent(bool)(LevelPlay 9.5+), restoring compatibility.
[0.7.5] - 2026-08-03
Fixed
- ByteBrew analytics: possible NRE on
SendEventwhenInitialize()bailed out early. Event queue is now constructed first. - Singular consent: opting back in after
gdprConsent=falsedid not resume tracking. Opt-in path now also resumes. - LevelPlay consent: Always wire primary GDPR flag
SetGDPRConsent(bool).
Changed
- Added diagnostic logs around platform key writes in
ByteBrewAnalyticsProvider(no key values logged).
[0.7.4] - 2026-07-30
Changed
- Removed
maxLevelcap from custom level event reporting.
[0.7.3] - 2026-07-20
Changed
- Custom level events now include level 1 (
level_0001). Previously levels below 2 were silently skipped from Singular custom level reporting.
[0.7.2] - 2026-07-20
Fixed
- Singular SDK logging now respects
CiaoSDKLogger.CurrentLogLevel. OnlyLogLevel.Infoenables verbose Singular output that logs Singular API key.
[0.7.1] - 2026-07-15
Fixed
- InstallSourceChecker detects emulator and sideload installs. Application.installMode fallback removed.
- Anti-cheat events fired during initialization are no longer lost. MMP and Analytics providers are now initialized before the anti-cheat provider, so early detections reach the reporting sinks.
Changed
- LevelCompletedArgs: currencyName and currencyBalance are now optional. Analytics events omit these fields when currencyName is empty.
- TimeChecker now reads server time from the HTTP
Dateheader of a configurable endpoint (default:www.example.com), replacing the previous JSON time API. More reliable and globally reachable.
[0.7.0] - 2026-07-14
Added
- Remote Config support via ByteBrew: CiaoSDKAnalytics.RefreshConfig, IsConfigReady, GetConfig.
- User attribute tagging for segmentation: CiaoSDKAnalytics.SetUserAttribute (string/int/double/bool).
- CiaoSDKAnalytics.GetUserId- returns the ByteBrew user ID.
- CiaoSDKAnalytics.StartPushNotifications - enables ByteBrew push notifications (studio-side platform + dashboard setup required).
[0.6.0] - 2026-07-09
Added
- Events queue in Singular and ByteBrew providers. Events are queued and processed one at a time with a configurable delay, preventing race conditions during provider initialization.
- ciaosdk_version global property attached to all Singular and ByteBrew events.
- Auto-sync of SDK version into CiaoSDKSettings on every Editor domain reload.
Changed
- Providers no longer drop events that arrive before initialization completes; events are queued and delivered once the provider is ready.
[0.5.2] - 2026-07-06
Fixed
- Detect legacy vendor SDK imports (LevelPlay, Singular, ByteBrew) in Assets/ and block activation with a clear migration message.
- Detect UPM vendor SDK version below required minimum and block with an update message.
- Vendor SDK package definitions moved to sdkPackages.json.
Changed
- Editor folder reorganized into PackageManagement/, SetupWizard/, Configuration/.
[0.5.1] - 2026-07-01
Fixed
- iOS IAP v5: revenue now correctly reported to Singular (was showing as nil due to missing
rattribute). - iOS IAP v5: receipt now works with StoreKit 2 by extracting the payload from Apple's JWS representation (Unity IAP v5's
Order.Info.Receipt.Payloadis empty on iOS). - IAP v5:
restoredflag now correctly forwarded to Singular (was being ignored due to overload resolution).
Changed
- Renamed
SingularMMPHelper.BuildIAPAttributestoBuildIOSIAPAttributesfor clarity. - Cleaned up
CiaoSDKTest.cssample script (removed diagnostic logs, made IAP/ATT sections opt-in via comments).
[0.5.0] - 2026-06-30
This is the Pilot pre-release of CiaoSDK.
Changed
- None - this is the Pilot pre-release version.
Fixed
- None - initial Pilot pre-release.
Updated 3 days ago
Did this page help you?
