Skip to content

af-dan/cordova-plugin-appsflyer-sdk

 
 

Repository files navigation

Cordova AppsFlyer plugin for Android and iOS.

npm version Build Status

Table of content

  • Android
  • iOS 8+
  • iOS AppsFlyerSDK v4.5.12
  • Android AppsFlyerSDK v4.6.1
$ cordova plugin add cordova-plugin-appsflyer-sdk

or directly from git:

$ cordova plugin add https://github.com/AppsFlyerSDK/cordova-plugin-appsflyer-sdk.git

1. Add the following xml to your config.xml in the root directory of your www folder:

<!-- for iOS -->
<feature name="AppsFlyerPlugin">
  <param name="ios-package" value="AppsFlyerPlugin" />
</feature>
<!-- for Android -->
<feature name="AppsFlyerPlugin">
  <param name="android-package" value="com.appsflyer.cordova.plugin.AppsFlyerPlugin" />
</feature>

2. For Android, add the following xml to your AndroidManifest.xml:

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

3. Copy appsflyer.js to www/js/plugins and reference it in index.html:

<script type="text/javascript" src="js/plugins/appsflyer.js"></script>

4. Download the source files and copy them to your project.

Copy:

  • AppsFlyerPlugin.h
  • AppsFlyerPlugin.m
  • AppsFlyerTracker.h
  • libAppsFlyerLib.a to platforms/ios/<ProjectName>/Plugins

Copy AppsFlyerPlugin.java to platforms/android/src/com/appsflyer/cordova/plugins (create the folders)

1. Set your App_ID (iOS only), Dev_Key and enable AppsFlyer to detect installations, sessions (app opens) and updates.

This is the minimum requirement to start tracking your app installs and is already implemented in this plugin. You MUST modify this call and provide:
-devKey - Your application devKey provided by AppsFlyer. -appId - For iOS only. Your iTunes Application ID.

Add the following lines to your code to be able to initialize tracking with your own AppsFlyer dev key:

document.addEventListener("deviceready", function(){
    
   var options = {
             devKey:  'xxXXXXXxXxXXXXxXXxxxx8'// your AppsFlyer devKey               
           };

    var userAgent = window.navigator.userAgent.toLowerCase();
                          
    if (/iphone|ipad|ipod/.test( userAgent )) {
        options.appId = "123456789";            // your ios app id in app store        
    }
    window.plugins.appsFlyer.initSdk(options);
}, false);
  $ionicPlatform.ready(function() {      
    
    var options = {
           devKey:  'xxXXXXXxXxXXXXxXXxxxx8'// your AppsFlyer devKey               
         };
                              
    if (ionic.Platform.isIOS()) {
        options.appId = "123456789";            // your ios app id in app store 
    }

      window.plugins.appsFlyer.initSdk(options);      
  });

## API Methods


initialize the SDK.

parameter type description
options Object SDK configuration
onSuccess (message: string)=>void Success callback - called after successfull SDK initialization. (optional)
onError (message: string)=>void Error callback - called when error occurs during initialization. (optional)

options

name type default description
devKey string Appsflyer Dev key
appId string Apple Application ID (for iOS only)
isDebug boolean false debug mode (optional)
onInstallConversionDataListener boolean false Accessing AppsFlyer Attribution / Conversion Data from the SDK (Deferred Deeplinking). Read more: Android, iOS. AppsFlyer plugin will return attribution data in onSuccess callback.

Example:

var onSuccess = function(result) {
     //handle result
};

function onError(err) {
    // handle error
}
var options = {
               devKey:  'd3Ac9qPardVYZxfWmCspwL',
               appId: '123456789',
               isDebug: false,
               onInstallConversionDataLoaded: true
             };
window.plugins.appsFlyer.initSdk(options, onSuccess, onError);

  • 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
eventValue Object event details

Example:

var eventName = "af_add_to_cart";
var eventValues = {
           "af_content_id": "id123",
           "af_currency":"USD",
           "af_revenue": "2"
           };
window.plugins.appsFlyer.trackEvent(eventName, eventValues);

parameter type Default description
currencyId String USD ISO 4217 Currency Codes

Examples:

window.plugins.appsFlyer.setCurrencyCode("USD");
window.plugins.appsFlyer.setCurrencyCode("GBP"); // British Pound

Setting your own Custom ID enables you to cross-reference your own unique ID with AppsFlyer’s user ID and the other devices’ IDs. This ID is available in AppsFlyer CSV reports along with postbacks APIs for cross-referencing with you internal IDs.

Note: The ID must be set during the first launch of the app at the SDK initialization. The best practice is to call this API during the deviceready event, where possible.

parameter type description
customerUserId String

Example:

window.plugins.appsFlyer.setAppUserId(userId);

Set the GCM API key. AppsFlyer requires a Google Project Number and GCM API Key to enable uninstall tracking.

parameter type description
GCMProjectID String

//TBD should be from delegate

AEnables tracking app. uninstalls.

parameter type description
token String

Get AppsFlyer’s proprietary Device ID. The AppsFlyer Device ID is the main ID used by AppsFlyer in Reports and APIs.

function getUserIdCallbackFn(id){/* ... */} 
window.plugins.appsFlyer.getAppsFlyerUID(getUserIdCallbackFn);

Example:

var getUserIdCallbackFn = function(id) {
    alert('received id is: ' + id);
}
window.plugins.appsFlyer.getAppsFlyerUID(getUserIdCallbackFn);
parameter type description
getUserIdCallbackFn () => void Success callback

In ver. 4.2.5 deeplinking metadata (scheme/host) is sent automatically

Open in Xcode AppDelegate.m, add #import "AppsFlyerTracker.h" and add the following method under application: openURL :

[[AppsFlyerTracker sharedTracker] handleOpenURL:url sourceApplication:sourceApplication withAnnotation:annotation];

It appears as follows:

-(BOOL) application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {
    
    [[AppsFlyerTracker sharedTracker] handleOpenURL:url sourceApplication:sourceApplication withAnnotation:annotation];
    return YES;
}

##Demo

This plugin has a examples folder with demoA (Angular 1) project bundled with it. To give it a try , clone this repo and from root a.e. cordova-plugin-appsflyer-sdk execute the following:

npm run setup
  • npm run demo.ra - runs Android
  • npm run demo.ba - builds Android
  • npm run demo.ri - runs iOS
  • npm run demo.bi - builds iOS

demo printscreen

About

AppsFlyer plugin for Cordova

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Objective-C 47.9%
  • JavaScript 29.0%
  • Java 23.1%