appstack_plugin 2.6.0
appstack_plugin: ^2.6.0 copied to clipboard
Track events and revenue with Apple Search Ads attribution for Flutter apps. Supports iOS 15.0+ and Android 5.0+.
Changelog #
All notable changes to the Appstack Flutter Plugin will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
2.6.0 - 2026-08-11 #
Added #
AppstackPlugin.setCustomerUserId(customerUserId)— sets or clears the customer user ID afterconfigure(), bridging the native iOS/Android setter of the same name. Use it when a login reveals the ID; callingconfigure()a second time does not work, as a repeatconfigure()is a no-op and ignores itscustomerUserId. Clear it on logout so the previous user's ID stops being attached to later events. Passingnull(or a blank string) clears the stored ID — unlikeconfigure(), which treats a blank value as "not provided" because it never clears. Safe to call at any time; last write wins.
Changed #
- Updated the Appstack iOS SDK to 4.5.0 — on iOS,
getAttributionParams()no longer comes back empty: the map now always carries anappstack_match_statuskey reporting the attribution outcome (matched,matched_no_params,organic,skipped,failedornot_configured). Onlyfailedis worth re-reading later; the rest are settled answers. The Dart signature is unchanged — the result is still nullable, so existing null checks keep working — but code that read an empty result as "not attributed" should switch to the status key. Treat the key as iOS-only for now: Android 1.7.0 does not add it, so an empty map still means "nothing yet" there. Also fixed on iOS: asetCustomerUserId()call made immediately afterconfigure()is no longer overwritten by thecustomerUserIdpassed toconfigure(), and a blank customer user ID is treated as absent rather than sent as an empty string. - Updated the Appstack Android SDK to 1.7.0 — adds the native
setCustomerUserIdsetter thatAppstackPlugin.setCustomerUserId()bridges on Android. No new permission is required.
2.5.0 - 2026-08-06 #
Changed #
- Updated the Appstack iOS SDK to 4.4.1 — attribution matching now includes additional network context to improve match diagnostics.
- Updated the Appstack Android SDK to 1.6.0 — attribution matching now includes additional device and network context to improve match accuracy, and the Play install referrer is now resolved before the match request so attribution can be determined deterministically. No new permission is required.
EventType.installis no longer sent when passed tosendEvent()— both native SDKs already track the install automatically, so sending it by hand previously double-counted installs. Such calls are now logged and discarded natively; the Dart call still succeeds.
Fixed #
- Android: a remotely disabled app no longer fires the attribution match request — previously
enabled=falsesuppressed only the event POSTs, and a fresh install still called/attribution/match. A disabled app now makes no attribution network calls at all.
2.4.0 - 2026-07-21 #
Changed #
- Updated the Appstack iOS SDK to 4.4.0
- Updated the Appstack Android SDK to 1.5.0
- Raised the minimum supported iOS version to 15.0 (required by iOS SDK 4.4.0). This applies to both integration paths — the Swift Package Manager package (
Package.swift) and the CocoaPods podspec.
2.1.1 - 2026-05-19 #
Fixed #
- Synced iOS native implementation across all integration paths (CocoaPods and SPM): the SPM source copies of
AppstackPlugin.swiftwere stale and missingcustomerUserId,wrapperVersion, and the attribution event channel, causing an undefined symbol error at build time.
2.1.0 - 2026-05-19 #
Added #
wrapperVersionis now automatically passed to the native iOS and Android SDKs on configure, identifying the Flutter wrapper version (e.g.flutter-2.1.0). This is handled internally and not exposed to the public API.
2.0.5 - 2026-04-20 #
Added #
- New
getAttributionParamsWithCallback()method — retrieves attribution parameters via a push-style stream backed by a native background thread (SwiftTask.detachedon iOS,Threadon Android). The stream emits one value then closes. Use this as an alternative togetAttributionParams()when attribution retrieval time may vary.
1.5.1 - 2026-01-28 #
Added #
- Updated the Android SDK to 1.3.1
- Updated the iOS SDK to 3.5.1
- Add the support of customer_user_id in configure method
1.4.1 - 2026-01-15 #
Added #
- Fix some bugs linked to Apple Search Ads attribution (upgrade to iOS 3.3.1)
1.2.0 - 2025-12-15 #
Added #
- New matching method on Android (upgrade to 1.2.2)
- New securities on iOS (upgrade to 3.1.1)
1.1.0 - 2025-12-09 #
Added #
- New
getAttributionParams()method to retrieve attribution parameters from the SDK - Updated iOS and Android SDK references to latest versions with attribution params support
- Added attribution params display in sample app
1.0.3 - 2025-11-25 #
Fixed #
- Updated the way we are handling the methods on iOS to ensure we are avoiding crashes & threads hanging
1.0.2 - 2025-11-17 #
Fixed #
- Updated SPM plugin code to use
parametersmap instead of deprecatedrevenueparameter insendEventmethod
1.0.1 - 2025-11-17 #
Fixed #
- Fixed iOS SDK version reference to use 3.0.0 instead of 2.5.0, resolving compilation errors with
sendEventparameters andisSdkDisabledmethod
1.0.0 - 2025-11-14 #
Changed #
- BREAKING CHANGE: Modified
sendEvent()method to acceptparametersmap instead ofrevenueparameter - Updated iOS SDK reference to 3.0.0
- Updated Android SDK reference to 1.0.0
- Both SDK versions now use parameters dictionary for event data instead of separate revenue parameter
- Updated all examples and documentation to use the new parameters-based API
Migration Guide #
// Old API (deprecated)
await AppstackPlugin.sendEvent(EventType.purchase, revenue: 29.99);
// New API (current)
await AppstackPlugin.sendEvent(EventType.purchase, parameters: {'revenue': 29.99, 'currency': 'USD'});
0.0.14 - 2025-10-31 #
Changed #
- Modified
configure()method to returnFuture<void>instead ofFuture<bool> - Updated documentation and examples to reflect the void return type
- Add a method
isSdkDisabled()to see the value configured in the iOS or the Android SDK
0.0.13 - 2025-10-29 #
Added #
- New
getAppstackId()method to retrieve the unique Appstack ID for the current user - Updated example app to demonstrate the new
getAppstackId()functionality - Comprehensive test coverage for the new method across all platform layers
- Retrieve IDFA automatically on iOS
Changed #
- Updated iOS native implementation to expose
getAppstackId()from AppstackSDK - Updated Android native implementation to expose
getAppstackId()from AppstackSDK - Enhanced documentation with usage examples for the new method
0.0.12 - 2025-10-17 #
- IMPORTANT : Add the support to be able to install the SDK with CocoaPods
- WARNING : This support feature will be removed as soon as this ticket will be completed and we will go back to SPM usage to have a much cleaner repository (deprecation on flutter's side of cocoapods)
0.0.11 - 2025-10-16 #
- Update the documentation to reference the SPM setup needed to make works the SDK
0.0.10 - 2025-10-15 #
- Update the changelog for 0.0.9 and 0.0.10 to avoid having a reduced score on pub.dev
0.0.9 - 2025-10-15 #
- Update the iOS SDK reference to 2.5.0 (use the new automatic releases for iOS)
0.0.4 - 2025-10-06 #
Fixed #
- Match in a better way what is expected for Swift Package Manager handling
0.0.3 - 2025-10-06 #
Added #
- Example documentation necessary for pub.dev points completion
- Formatting using dart format .
- add Package.swift to handle Swift Package Manager
0.0.1 - 2025-10-06 #
Added #
- Initial release of Appstack Flutter Plugin
- Support for iOS (14.3+) and Android (API 21+)
- Event tracking with
sendEvent()method - Revenue tracking for purchase events
- Apple Search Ads attribution support on iOS
- Comprehensive EventType enum with standard attribution events
- Debug mode and custom log levels
- Custom endpoint URL support
- Simple, clean API following Flutter best practices
Features #
- iOS Integration: Full support for Apple Search Ads attribution
- Android Integration: Google Play Store attribution support
- Event Types:
- Lifecycle: install, login, signUp, register
- Monetization: purchase, addToCart, addToWishlist, initiateCheckout, startTrial, subscribe
- Gaming: levelStart, levelComplete
- Engagement: tutorialComplete, search, viewItem, viewContent, share
- Custom: custom events with custom names
- Configuration Options: Debug mode, log levels, custom endpoints
- Documentation: Complete README and USAGE guide
Technical Details #
- Minimum iOS version: 14.3
- Minimum Android SDK: 21 (Android 5.0)
- Flutter SDK: 3.3.0+
- Dart SDK: 3.9.2+
- Dependencies:
- iOS: AppstackSDK ~> 2.0
- Android: tech.appstack.android-sdk:appstack-android-sdk:0.0.12