Skip to content


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
This branch is 127 commits behind AppsFlyerSDK:master.

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time


A Flutter plugin for AppsFlyer SDK.

pub package Coverage

🛠 In order for us to provide optimal support, we would kindly ask you to submit any issues to

When submitting an issue please specify your AppsFlyer sign-up (account) email , your app ID , reproduction steps, logs, code snippets and any additional relevant information.

Table of content

Supported Platforms

  • Android
  • iOS 8+

This plugin is built for

  • iOS AppsFlyerSDK v6.3.2

  • Android AppsFlyerSDK v6.3.2

Flutter 2.0 is supported from version 6.2.3+2, including null safety support!

The version 6.2.4-flutterv1 will use iOS SDK V6.2.4 with Flutter V1

❗Migration Guide to v6

In v6 of AppsFlyer SDK there are some api breaking changes:

Before v6 v6
trackEvent logEvent
stopTracking stop
validateAndTrackInAppPurchase validateAndLogInAppPurchase
Before v6.1.2+4 v6.1.2+4
validateAndTrackInAppPurchase validateAndTrackInAppIosPurchase/validateAndTrackInAppAndroidPurchase

Important notice

  • Switch ConversionData and OnAppOpenAttribution to be based on callbacks instead of streams since plugin version 6.0.5+2

📲 Getting started

In order to install the plugin, visit this page.

⚙️ AppsFlyerOptions

To start using AppsFlyer you first need to create an instance of AppsflyerSdk before using any other of our sdk functionalities.

AppsflyerSdk receives a map or AppsFlyerOptions object. This is how you can configure our AppsflyerSdk instance and connect it to your AppsFlyer account.

Example (using map):

import 'package:appsflyer_sdk/appsflyer_sdk.dart';

Map appsFlyerOptions = { "afDevKey": afDevKey,
                "afAppId": appId,
                "isDebug": true};

AppsflyerSdk appsflyerSdk = AppsflyerSdk(appsFlyerOptions);

Disable Advertiser ID & IDFA:

Adding "disableAdvertisingIdentifier": true in the appsFlyerOptions will disable:


OAID (Open Anonymous Device Identifier)

AAID (Amazon Advertising ID)

GAID (Google Advertising ID)



Map appsFlyerOptions = { 
    "afDevKey": afDevKey,
    "afAppId": appId,
    "isDebug": true
    "disableAdvertisingIdentifier": true

🚀 Initializing the SDK

The next step is to call initSdk which have the optional boolean parameters registerConversionDataCallback, registerOnAppOpenAttributionCallback and registerOnDeepLinkingCallback which are set to true as default.

After we call initSdk we can use all of AppsFlyer SDK features.

Initialize the SDK to enable AppsFlyer to detect installations, sessions (app opens) ,updates and use all of our features.

    registerConversionDataCallback: true,
    registerOnAppOpenAttributionCallback: true,
    registerOnDeepLinkingCallback: true

Set plugin for IOS 14

  1. Add #import <AppTrackingTransparency/AppTrackingTransparency.h> in your AppDelegate.m

  2. Add the ATT pop-up for IDFA collection so your AppDelegate.m will look like this:

-(BOOL)application:(UIApplication*)application didFinishLaunchingWithOptions:(NSDictionary*)launchOptions
    [GeneratedPluginRegistrant registerWithRegistry:self];
    if (@available(iOS 14, *)) {
        [ATTrackingManager requestTrackingAuthorizationWithCompletionHandler:^(ATTrackingManagerAuthorizationStatus status) {
            //If you want to do something with the pop-up
    return [super application:application didFinishLaunchingWithOptions:launchOptions];
  1. Add Privacy - Tracking Usage Description inside your .plist file in Xcode.

  2. Optional: Set the timeToWaitForATTUserAuthorization property in the AppsFlyerOptions to delay the sdk initazliation for a number of x seconds until the user accept the consent dialog:

AppsFlyerOptions options = AppsFlyerOptions(
    afDevKey: DotEnv().env["DEV_KEY"],
    appId: DotEnv().env["APP_ID"],
    showDebug: true,
    timeToWaitForATTUserAuthorization: 30

For more info visit our Full Support guide for iOS 14:

**📖 Additional Guides (Deeplinking, out of store, Strict mode (app for kids) & iOS 14) **

Great installation and setup guides can be viewed here


see the full API available for this plugin.


Flutter Plugin for AppsFlyer SDK







No packages published


  • Dart 37.8%
  • Objective-C 31.3%
  • Java 27.9%
  • Ruby 2.5%
  • JavaScript 0.4%
  • Kotlin 0.1%