Giter Site home page Giter Site logo

flutter_appsflyer_sdk's Introduction

appsflyer_sdk

A Flutter plugin for AppsFlyer SDK.

pub package Build Status

In order for us to provide optimal support, we would kindly ask you to submit any issues to [email protected]

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.


Supported Platforms

  • Android
  • iOS 8+

This plugin is built for

  • iOS AppsFlyerSDK v4.8.12
  • Android AppsFlyerSDK v4.8.20

## API Methods


Getting started

In order to install the plugin, visit this page.

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

AppsflyerSdk(Map options)
parameter type description
options Map SDK configuration

options

name type default description
afDevKey string Appsflyer Dev key
afAppId string Apple Application ID (for iOS only)
isDebug boolean false debug mode (optional)

Example:

import 'package:appsflyer_sdk/appsflyer_sdk.dart';
//..

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

AppsflyerSdk appsflyerSdk = AppsflyerSdk(appsFlyerOptions);

Or you can use AppsFlyerOptions class instead

AppsflyerSdk(Map options)
parameter type description
options AppsFlyerOptions SDK configuration

Example:

import 'package:appsflyer_sdk/appsflyer_sdk.dart';
//..

final AppsFlyerOptions options = AppsFlyerOptions(afDevKey: "af dev key",
                                                  showDebug: true,
                                                  appId: "123456789");

Once AppsflyerSdk object is created, you can call initSdk method.

static Future<dynamic> initSdk() async

initialize the SDK, using the options initialized from the constructor|

Example:

import 'package:appsflyer_sdk/appsflyer_sdk.dart';
//..

AppsflyerSdk appsflyerSdk = AppsflyerSdk({...});

try {
      result = await appsflyerSdk.initSdk();
    } on Exception catch (e) {
      print("error: " + e.toString());
      return;
    }

static Future<bool> trackEvent(String eventName, Map eventValues) async (optional)
  • These in-app events help you track how loyal users discover your app, and attribute them to specific campaigns/media-sources. Please take the time define the event/s you want to measure to allow you to track ROI (Return on Investment) and LTV (Lifetime Value).
  • The trackEvent method allows you to send in-app events to AppsFlyer analytics. This method allows you to add events dynamically by adding them directly to the application code.
parameter type description
eventName String custom event name, is presented in your dashboard. See the Event list HERE
eventValues Map event details

Example:

Future<bool> sendEvent(String eventName, Map eventValues) async {
    bool result;
    try {
      result = await appsflyerSdk.trackEvent(eventName, eventValues);
    } on Exception catch (e) {}
      print("Result trackEvent: ${result}");
  }

Conversion Data and on app open attribution

Returns Stream. Accessing AppsFlyer Attribution / Conversion Data from the SDK (Deferred Deeplinking). Read more: Android, iOS. AppsFlyer plugin will return attribution data as JSON Map in Stream.

static Stream<dynamic> registerConversionDataCallback()

Example:

appsflyerSdk.registerConversionDataCallback().listen((data) {
      //print("GCD: " + data.toString());
      //....
    }).onError((handleError) {
      print("error");
    });

Example of success Organic response:

{
  "status": "success",
  "type": "onInstallConversionDataLoaded",
  "data": {
    "af_status": "Organic",
    "af_message": "organic install",
    "is_first_launch": "false"
  }
}

Example of failure response:

{
  "status": "failure",
  "type": "onInstallConversionDataLoaded",
  "data": "SOME_ERROR_MESSAGE"
}

Deep Link

In case you want to use deep links in your app, you will need to use registerOnAppOpenAttributionCallback on the AppsflyerSdk instance you've created.

static Stream<dynamic> registerOnAppOpenAttributionCallback()

Example:

appsflyerSdk.registerOnAppOpenAttributionCallback().listen((data) {
      //print("OnAppOpenAttribution: " + data.toString());
      //....
    }).onError((handleError) {
      print("error");
    });

Example of response on deep-link "https://flutter.demo" :

{
  "status": "success",
  "type": "onAppOpenAttribution",
  "data": {
    "link": "https://flutter.demo"
  }
}

Other functionalities:

void setUserEmails(List<String> emails, [EmailCryptType cryptType] Set the user emails with the given encryption (EmailCryptTypeNone, EmailCryptTypeSHA1, EmailCryptTypeMD5, EmailCryptTypeSHA256). the default encryption is EmailCryptTypeNone. Example:

appsFlyerSdk.setUserEmails(
       ["[email protected]", "[email protected]"], EmailCryptType.EmailCryptTypeSHA1);

void setMinTimeBetweenSessions(int seconds) You can set the minimum time between session (the default is 5 seconds)

appsFlyerSdk.setMinTimeBetweenSessions(3)

void stopTracking(bool isTrackingStopped) You can stop sending events to Appsflyer by using this method. Example:

widget.appsFlyerSdk.stopTracking(true);

void setCurrencyCode(String currencyCode) Example:

appsFlyerSdk.setCurrencyCode("currencyCode");

void setIsUpdate(bool isUpdate) Example:

appsFlyerSdk.setIsUpdate(true);

void enableUninstallTracking(String senderId) Example:

appsFlyerSdk.enableUninstallTracking("senderId");

void setImeiData(String imei) Example:

appsFlyerSdk.setImeiData("imei");

void setAndroidIdData(String androidIdData) Example:

appsFlyerSdk.setAndroidIdData("androidId");

void enableLocationCollection(bool flag) Example:

appsFlyerSdk.enableLocationCollection(true);

void setCustomerUserId(String userId) What is customer user id? Example:

appsFlyerSdk.setCustomerUserId("id");

void waitForCustomerUserId(bool wait) You can set this function to true if you don't want to track events without setting customer id first. Example:

appsFlyerSdk.waitForCustomerUserId(true);

void setAdditionalData(Map addionalData) Example:

appsFlyerSdk.setAdditionalData({"customData": "data"});

void setCollectAndroidId(bool isCollect) Example:

appsFlyerSdk.setCollectAndroidId(true);

void setCollectIMEI(bool isCollect) Example:

appsFlyerSdk.setCollectIMEI(false);

void setHost(String hostPrefix, String hostName) You can change the default host (appsflyer) by using this function Example:

appsFlyerSdk.setHost("pref", "my-host");

Future<String> getHostName() Example:

appsFlyerSdk.getHostName().then((name) {
         print("Host name: ${name}");
       });

Future<String> getHostPrefix() Example:

appsFlyerSdk.getHostPrefix().then((name) {
         print("Host prefix: ${name}");
       });

void updateServerUninstallToken(String token) Example:

appsFlyerSdk.updateServerUninstallToken("token");

Stream validateAndTrackInAppPurchase( String publicKey, String signature, String purchaseData, String price, String currency, Map<String, String> additionalParameters) Example:

appsFlyerSdk.validateAndTrackInAppPurchase(
           "publicKey",
           "signature",
           "purchaseData",
           "price",
           "currency",
           {"fs": "fs"}).listen((data) {
         print(data);
       }).onError((error) {
         print(error);
       });

flutter_appsflyer_sdk's People

Contributors

3d24rd0 avatar af-fess avatar roughike avatar saharh avatar shaharaf avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.