com.appstack.unity-sdk UPM package, newest first. Always integrate against the latest
stable release — appstack-cli review will tell you what you
are on.
Unity integration guide
Install, configure, and send your first events.
Changed
- Pinned native SDKs are now Appstack iOS SDK
4.6.0and Appstack Android SDK1.8.0. Platform floors are unchanged: iOS 15.0+ and Android API level 21+. - Custom event parameters are encrypted on the device before being sent.
Parameter names that must stay readable, such as
currencyandrevenue, are excluded through a server-controlled list, so revenue reporting is unchanged. On-device encryption requires iOS 17 or newer; iOS 15 and 16 encrypt server-side as before. - The pinned iOS SDK ships an Apple privacy manifest declaring its required-reason API usage.
- On iOS, an event whose parameters hold
nullis no longer dropped, and a parameter value JSON cannot represent no longer crashes the app. Those keys are dropped individually and the event still sends.
Changed
- OpenUPM releases now use a Unity-signed
.tgzcreated with a pinned, checksum-verified Unity UPM CLI. Unity 6.3 and newer can verify the package’s publisher and integrity instead of showing the missing-signature warning.
Added
- Optional scene-independent auto-initialization configured through Edit → Project Settings → Appstack, with separate development and production keys for iOS and Android, per-platform enablement, automatic or pinned environment selection, explicit production-key fallback for development builds, and target-specific pre-build validation.
- Idempotent Unity-side configuration: the first successful automatic or manual configuration wins, identical repeats are silent, conflicting repeats warn without exposing credentials, and failed attempts remain retryable.
Added
SetCustomerUserId(customerUserId)andClearCustomerUserId()for setting or clearing the customer user ID afterConfigure(), bridging the native iOS/Android setter of the same name. Use them when a login reveals the ID: a repeatConfigure()is a no-op and ignores itscustomerUserId.null, an empty string, and whitespace all clear the stored ID, soClearCustomerUserId()is the explicit spelling ofSetCustomerUserId(null)rather than separate behavior. This differs fromConfigure(), where an emptycustomerUserIdmeans “not provided” because it never clears.
- Pinned native SDKs are now Appstack iOS SDK
4.5.0(from4.4.0) and Appstack Android SDK1.7.0(from1.5.0). Platform floors are unchanged: iOS 15.0+ and Android API level 21+. SendEvent(EventType.INSTALL)is a no-op.EventType.INSTALLis emitted automatically by the native SDKs on first launch, and both new pinned versions discard a manually sentINSTALL; the previous pins accepted it.
Added
- Initial Unity Package Manager distribution as
com.appstack.unity-sdkfor Unity 6 (6000.0) or newer. - Support for iOS 15.0+ through Appstack iOS SDK
4.4.0and Android API level 21+ through Appstack Android SDK1.5.0. - SDK configuration with an API key, log level, and optional customer user ID.
- Standard and custom event tracking with optional event parameters.
- Apple Ads attribution on iOS.
- Appstack ID, SDK status, and asynchronous attribution-parameter retrieval.
- Concurrent attribution requests with callbacks returned to the captured synchronization context when available.
- Automatic iOS Swift Package Manager integration through the Unity Xcode postprocessor, including dynamic-framework embedding in the application.
- Automatic Android native dependency resolution through EDM4U.
- Automatic Android R8/ProGuard configuration with no custom keep-rules step.
- Basic Integration sample for manual SDK configuration and event tracking.