Cordova AppsFlyer plugin for Android and iOS.
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
- iOS AppsFlyerSDK v4.7.3
- Android AppsFlyerSDK v4.7.2
$ 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:
<feature name="AppsFlyerPlugin">
<param name="ios-package" value="AppsFlyerPlugin" />
</feature>
<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'
};
var userAgent = window.navigator.userAgent.toLowerCase();
if (/iphone|ipad|ipod/.test( userAgent )) {
options.appId = "123456789";
}
window.plugins.appsFlyer.initSdk(options);
}, false);
$ionicPlatform.ready(function() {
var options = {
devKey: 'xxXXXXXxXxXXXXxXXxxxx8'
};
if (ionic.Platform.isIOS()) {
options.appId = "123456789";
}
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) {
};
function onError(err) {
}
var options = {
devKey: 'd3Ac9qPardVYZxfWmCspwL',
appId: '123456789',
isDebug: false,
onInstallConversionDataListener: 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);
Examples:
window.plugins.appsFlyer.setCurrencyCode("USD");
window.plugins.appsFlyer.setCurrencyCode("GBP");
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);
AppsFlyer requires a Google Project Number to enable uninstall tracking.
More Information
parameter | type | description |
---|
GCMProjectNumber | String | |
Enables app uninstall tracking.
More Information
parameter | type | description |
---|
token | String | |
onSuccess | (message: string)=>void | Success callback - called after successfull register uninstall. (optional) |
onError | (message: string)=>void | Error callback - called when error occurs during register uninstall. (optional) |
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
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);
}
##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 Androidnpm run demo_c.ba
- builds Androidnpm run demo_c.ri
- runs iOSnpm run demo_c.bi
- builds iOS
For Angular:
npm run setup_a
npm run demo_a.ra
- runs Androidnpm run demo_a.ba
- builds Androidnpm run demo_a.ri
- runs iOSnpm run demo_a.bi
- builds iOS