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.4.0

  • Android AppsFlyerSDK v6.4.0

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

❗Breaking changes in v6.4.0

❗Breaking changes in v6.3.5+2

  • Remove stream from the plugin (no change is needed if you use callbacks for handling deeplink).

❗Migration Guide to v6

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

Before v6v6
Before v6.1.2+4v6.1.2+4

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.