Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

cordova-plugin-appsflyer-sdk

Package Overview
Dependencies
Maintainers
2
Versions
124
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

cordova-plugin-appsflyer-sdk

Cordova AppsFlyer SDK Plugin

  • 4.4.9
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
3.5K
increased by17.46%
Maintainers
2
Weekly downloads
 
Created
Source

Cordova AppsFlyer plugin for Android and iOS.

npm version Build Status


Important!
Cordova AppsFlyer plugin version 4.4.0 and higher are meant to be used with cordova-android@7.0.0
For lower versions of cordova-android please use plugin version 4.3.0 available @ https://github.com/AppsFlyerSDK/cordova-plugin-appsflyer-sdk/tree/releases/4.x.x/4.3.x/4.3.0_cordova_android_6


In order for us to provide optimal support, we would kindly ask you to submit any issues to support@appsflyer.com

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


Table of content

Supported Platforms

  • Android
  • iOS 8+

This plugin is built for

  • iOS AppsFlyerSDK v4.8.4
  • Android AppsFlyerSDK v4.8.11

Installation using CLI:

$ cordova plugin add cordova-plugin-appsflyer-sdk

or directly from git:

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

For Google Install referrer support:

Open the build.gradle file for your application. Make sure that the repositories section includes a maven section with the "https://maven.google.com" endpoint. For example:

allprojects {
    repositories {
        jcenter()
        maven {
            url "https://maven.google.com"
        }
    }
}

Manual installation:

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" />

Inside the <aplication> tag, add the following receiver:

<receiver android:exported="true"    android:name="com.appsflyer.MultipleInstallBroadcastReceiver">
    <intent-filter>
        <action android:name="com.android.vending.INSTALL_REFERRER" />
    </intent-filter>
</receiver>

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.

iOS:

Copy:

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

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

Usage:

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:

for pure Cordova:
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);
For Ionic 1
  $ionicPlatform.ready(function() {      
    
    var options = {
           devKey:  'xxXXXXXxXxXXXXxXXxx8'// your AppsFlyer devKey               
         };
                              
    if (ionic.Platform.isIOS()) {
        options.appId = "123456789";            // your ios app id in app store 
    }

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

## API Methods


initSdk(options, onSuccess, onError): void

initialize the SDK.

parametertypedescription
optionsObjectSDK configuration
onSuccess(message: string)=>voidSuccess callback - called after successful SDK initialization. (optional)
onError(message: string)=>voidError callback - called when error occurs during initialization. (optional)

options

nametypedefaultdescription
devKeystringAppsflyer Dev key
appIdstringApple Application ID (for iOS only)
isDebugbooleanfalsedebug mode (optional)
collectIMEIbooleanfalseopt-out of collection of IMEI
collectAndroidIDbooleanfalseopt-out of collection of collectAndroidID
onInstallConversionDataListenerbooleanfalseAccessing 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
  /*
  {
  "data": {
    "af_dp": "https://ionic.fess.onelink.me",
    "af_click_lookback": "7d",
    "install_time": "2018-07-05 08:06:50.828",
    "cost_cents_USD": "0",
    "iscache": "true",
    "media_source": "someMedia",
    "click_time": "2018-07-05 08:06:02.956",
    "orig_cost": "0.0",
    "campaign": "someC",
    "key": "val",
    "af_status": "Non-organic",
    "is_first_launch": "true"
  },
  "type": "onAppOpenAttribution",
  "status": "success"
}
*/   
};

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

trackEvent(eventName, eventValues): void (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.
parametertypedescription
eventNameStringcustom event name, is presented in your dashboard. See the Event list HERE
eventValueObjectevent 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);

deviceTrackingDisabled(bool): void

End User Opt-Out (Optional) AppsFlyer provides you a method to opt‐out specific users from AppsFlyer analytics. This method complies with the latest privacy requirements and complies with Facebook data and privacy policies. Default is FALSE, meaning tracking is enabled by default.

Examples:

window.plugins.appsFlyer.setDeviceTrackingDisabled(true);

setCurrencyCode(currencyId): void
parametertypeDefaultdescription
currencyIdStringUSDISO 4217 Currency Codes

Examples:

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

setAppUserId(customerUserId): void

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.

parametertypedescription
customerUserIdString

Example:

window.plugins.appsFlyer.setAppUserId(userId);

stopTracking(isStopTracking): void

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.

parametertypedescription
isStopTrackingbooleanIn some extreme cases you might want to shut down all SDK tracking due to legal and privacy compliance. This can be achieved with the isStopTracking API. Once this API is invoked, our SDK will no longer communicate with our servers and stop functioning.

Example:

window.plugins.appsFlyer.stopTracking(true);

In any event, the SDK can be reactivated by calling the same API, but to pass false.


registerOnAppOpenAttribution(onSuccess, onError): void
parametertypedescription
onSuccess(message: stringifed JSON)=>voidSuccess callback - called after receiving data on App Open Attribution.
onError(message: stringifed JSON)=>voidError callback - called when error occurs.

Example:

window.plugins.appsFlyer.registerOnAppOpenAttribution(function        
   onAppOpenAttributionSuccess(res){
     /*
     {
    "data": {
      "af_deeplink": "true",
      "campaign": "boo",
      "key": "val",
      "media_source": "someMedia",
      "install_time": "2018-07-12 13:20:19",
      "af_status": "Non-organic",
      "path": "",
      "scheme": "https",
      "host": "ionic.fess.onelink.me"
    },
    "type": "onAppOpenAttribution",
    "status": "success"
  }
     */
   }, 
   function onAppOpenAttributionError(err){
    //...
 });

enableUninstallTracking(token, onSuccess, onError): void

Enables app uninstall tracking. More Information

parametertypedescription
FCM/GCM ProjectNumberStringGCM/FCM ProjectNumber
onSuccess(message: string)=>voidSuccess callback - called after successful register uninstall. (optional)
onError(message: string)=>voidError callback - called when error occurs during register uninstall. (optional)

updateServerUninstallToken("token"): void

Allows to pass GCM/FCM Tokens that where collected by third party plugins to the AppsFlyer server. Can be used for Uninstall Tracking.

parametertypedescription
tokenStringGCM/FCM Token

getAppsFlyerUID(successCB): void (Advanced)

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);
parametertypedescription
getUserIdCallbackFn() => voidSuccess callback

setAppInviteOneLinkID(OneLinkID): void (User Invite / Cross Promotion)

Set AppsFlyer’s OneLink ID. Setting a valid OneLink ID will result in shortened User Invite links, when one is generated. The OneLink ID can be obtained on the AppsFlyer Dashboard.

Example:

window.plugins.appsFlyer.setAppInviteOneLinkID("Ab1C");
parametertypedescription
OneLinkIDStringOneLink ID

generateInviteLink(options, onSuccess, onError): void (User Invite)

Allowing your existing users to invite their friends and contacts as new users to your app can be a key growth factor for your app. AppsFlyer allows you to track and attribute new installs originating from user invites within your app.

Example:

var inviteOptions {
  channel: "gmail",
  campaign: "myCampaign",
  customerID: "1234",
  
  userParams {
    myParam : "newUser",
    anotherParam : "fromWeb",
    amount : 1
  }
};

var onInviteLinkSuccess = function(link) {
  console.log(link); // Handle Generated Link Here
}

function onInviteLinkError(err) {
  console.log(err);
}

window.plugins.appsFlyer.generateInviteLink(inviteOptions, onInviteLinkSuccess, onInviteLinkError);
parametertypedescription
inviteOptionsObjectParameters for Invite link
onInviteLinkSuccess() => voidSuccess callback (generated link)
onInviteLinkError() => voidError callback

A complete list of supported parameters is available here. Custom parameters can be passed using a userParams{} nested object, as in the example above.


trackCrossPromotionImpression("appID", "campaign"): void (Cross Promotion)

Use this call to track an impression use the following API call. Make sure to use the promoted App ID as it appears within the AppsFlyer dashboard.

Example:

window.plugins.appsFlyer.trackCrossPromotionImpression("com.myandroid.app", "myCampaign");
parametertypedescription
appIDStringPromoted Application ID
campaignStringPromoted Campaign

For more details about Cross-Promotion tracking please see here.


trackAndOpenStore("appID","campaign", options): void (Cross Promotion)

Use this call to track the click and launch the app store's app page (via Browser)

Example:

var crossPromOptions {
  customerID: "1234",
  myCustomParameter: "newUser"
};

window.plugins.appsFlyer.trackAndOpenStore("com.myandroid.app", "myCampaign", crossPromOptions);
parametertypedescription
appIDStringPromoted Application ID
campaignStringPromoted Campaign
optionsObjectAdditional Parameters to track

For more details about Cross-Promotion tracking please see here.


Deep linking Tracking

Android

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

iOS URL Types

Add the following lines to your code to be able to track deeplinks with AppsFlyer attribution data:

for pure Cordova - add a function 'handleOpenUrl' to your root, and call our SDK as shown:

    window.plugins.appsFlyer.handleOpenUrl(url);

It appears as follows:

var handleOpenURL = function(url) {
    window.plugins.appsFlyer.handleOpenUrl(url);
}

To enable Universal Links in iOS please follow the guide here.

Note: Our plugin utilizes the

- (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray * _Nullable))restorationHandler;

If additional instances of the method exist in your code - merge all calls into one
(Available on cordova-plugin-appsflyer-sdk 4.2.24 and higher )

Demo

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

For Cordova:

npm run setup_c 
  • npm run demo_c.ra - runs Android
  • npm run demo_c.ba - builds Android
  • npm run demo_c.ri - runs iOS
  • npm run demo_c.bi - builds iOS

For Angular:

npm run setup_a
  • npm run demo_a.ra - runs Android
  • npm run demo_a.ba - builds Android
  • npm run demo_a.ri - runs iOS
  • npm run demo_a.bi - builds iOS

demo printscreen

Keywords

FAQs

Package last updated on 17 Jul 2018

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc