appstack_plugin 2.2.1
appstack_plugin: ^2.2.1 copied to clipboard
Track events and revenue with Apple Search Ads attribution for Flutter apps. Supports iOS 14.3+ and Android 5.0+.
Appstack Flutter Plugin #
Track events and revenue with Apple Search Ads attribution in your Flutter app.
pub.dev repository #
Here, you will find the pub.dev appstack_plugin documentation. Please use the latest available version of the SDK.
Requirements #
iOS #
- iOS version: 13.0+ (14.3+ recommended for Apple Ads)
- Xcode: 14.0+
Android #
- Minimum SDK: Android 5.0 (API level 21)
- Target SDK: 34+
General #
- Flutter: 3.3.0+
- Dart: 2.18.0+
Initial setup #
Advanced usage #
Attribution parameters #
Two methods are available to retrieve attribution parameters:
| Method | Mechanism | When to use |
|---|---|---|
getAttributionParams() |
Future — request/response over method channel |
Simple use cases where timing is predictable |
getAttributionParamsWithCallback() |
Stream — native background thread pushes result |
When retrieval time may vary; frees the platform thread immediately |
getAttributionParams()
final params = await AppstackPlugin.getAttributionParams();
if (params != null) {
print('Attribution params: $params');
}
getAttributionParamsWithCallback()
Spawns a native background thread (Swift Task.detached on iOS, Thread on Android). The stream emits exactly one value then closes.
AppstackPlugin.getAttributionParamsWithCallback().listen(
(params) {
if (params != null) {
print('Attribution params: $params');
}
},
onError: (e) => print('Error: $e'),
);
Checking SDK status #
After calling configure(), you can verify the SDK was enabled (for example, that the API key is valid). isSdkDisabled() returns true when the SDK is disabled.
await AppstackPlugin.configure('your-api-key');
if (await AppstackPlugin.isSdkDisabled()) {
print('SDK is disabled - check your API key');
}
Getting the Appstack ID #
Retrieve the unique Appstack ID for the current user. Returns null if it is not available yet.
final appstackId = await AppstackPlugin.getAppstackId();
print('Appstack ID: $appstackId');
Environment-based configuration #
Set up different API keys for different environments:
// Use environment variables or configuration
final apiKey = Platform.isIOS
? const String.fromEnvironment('APPSTACK_IOS_API_KEY')
: const String.fromEnvironment('APPSTACK_ANDROID_API_KEY');
await AppstackPlugin.configure(apiKey);
Platform-specific considerations #
iOS #
Apple Ads attribution:
- Only works on iOS 14.3+
- Requires app installation from App Store or TestFlight
- Attribution data appears within 24-48 hours
- User consent may be required for detailed attribution (iOS 14.5+)
if (Platform.isIOS) {
await AppstackPlugin.enableAppleAdsAttribution();
}
Android #
Play Store Attribution
- Install referrer data collected automatically
- Attribution available immediately for Play Store installs
- Works with Android 5.0+ (API level 21)
Cross-platform best practices #
Future<void> initializeSDK() async {
final apiKey = Platform.isIOS
? 'your-ios-api-key'
: 'your-android-api-key';
await AppstackPlugin.configure(apiKey);
if (Platform.isIOS) {
await AppstackPlugin.enableAppleAdsAttribution();
}
}
Limitations #
Attribution timing #
- iOS: Apple Ads attribution data appears within 24-48 hours after install
- Android: Install referrer data available immediately for Play Store installs
- Attribution only available for apps installed from official stores
Platform constraints #
- iOS: Requires iOS 14.3+
- Android: Minimum API level 21 (Android 5.0)
- Flutter: 3.3.0+
- Some Apple Ads features may not work in development/simulator environments
Event tracking #
- Event names are case-sensitive and standardized
- For revenue events, always pass a
revenue(orprice) and acurrencyparameter - The SDK must be initialized before any tracking calls
enableAppleAdsAttribution()only works on iOS and returns false on Android- Network connectivity required for event transmission (events are queued offline)
Support #
For questions or issues:
- Check the GitHub Repository
- Contact our support team at support@appstack.tech
- Open an issue in the repository