React Native AppsFlyer plugin for Android and iOS

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 , production steps, logs, code snippets and any additional relevant information.

This plugin is built for

  • iOS AppsFlyerSDK v6.4.0
  • Android AppsFlyerSDK v6.4.0

❗ Breaking Changes

  • From version 6.3.0, we use xcframework for iOS platform, then you need to use cocoapods version >= 1.10

  • From version 6.2.30, logCrossPromotionAndOpenStore api will register as af_cross_promotion instead of af_app_invites in your dashboard.

    Click on a link that was generated using generateInviteLink api will be register as af_app_invites.

  • We have renamed the following APIs:

Old API New API
trackEvent logEvent
trackLocation logLocation
stopTracking stop
trackCrossPromotionImpression logCrossPromotionImpression
trackAndOpenStore logCrossPromotionAndOpenStore
setDeviceTrackingDisabled anonymizeUser
AppsFlyerTracker AppsFlyerLib

And removed the following ones:

  • trackAppLaunch -> no longer needed. See new init guide
  • sendDeepLinkData -> no longer needed. See new init guide
  • enableUninstallTracking -> no longer needed. See new uninstall measurement guide

If you have used 1 of the removed APIs, please check the integration guide for the updated instructions

? Adding the SDK to your project

Production version from npm:

$ npm install react-native-appsflyer --save

Then run the following:

iOS

$ cd ios && pod install
$ react-native run-ios

Android

$ react-native run-android

Starting from RN v0.60, and react-native-appsflyer v1.4.7 the plugin uses autolinking.

If your app does not support autolinking, check out the Installation Guide here.

?‍?‍?‍? Add or Remove Strict mode for App-kids

Starting from version 6.1.10 iOS SDK comes in two variants: Strict mode and Regular mode. Please read more here

Version <= 6.3.0: read this section of the README.md in branch: releases/6.x.x/6.3.x/6.3.0

Change to Strict mode

After you installed the AppsFlyer plugin, add $RNAppsFlyerStrictMode=true in the project's Podfile:

//MyRNApp/ios/Podfile
...
use_frameworks!
  $RNAppsFlyerStrictMode=true

  # Pods for MyRNApp
...

In the ios folder of your root project Run pod install

Change to Regular mode

Remove $RNAppsFlyerStrictMode=true from the project's Podfile or set it to false:

//MyRNApp/ios/Podfile
...
use_frameworks!
  $RNAppsFlyerStrictMode=false //OR remove this line

  # Pods for MyRNApp
...

In the ios folder of your root project Run pod install

? Initializing the SDK

Initialize the SDK to enable AppsFlyer to detect installations, sessions (app opens) and updates.

NOTE! for iOS 14.5, we use timeToWaitForATTUserAuthorization parameter. Please read more
here

import React, {Component} from 'react';
import {Platform, StyleSheet, Text, View} from 'react-native';
import appsFlyer from 'react-native-appsflyer';

appsFlyer.initSdk(
  {
    devKey: 'K2***********99',
    isDebug: false,
    appId: '41*****44',
    onInstallConversionDataListener: true, //Optional
    onDeepLinkListener: true, //Optional
    timeToWaitForATTUserAuthorization: 10 //for iOS 14.5
  },
  (result) => {
    console.log(result);
  },
  (error) => {
    console.error(error);
  }
);
Setting Description
devKey Your application devKey provided by AppsFlyer (required)
appId Your iTunes application ID (iOS only)
isDebug Debug mode - set to true for testing only
onInstallConversionDataListener Set listener for SDK init response (Optional. default=true)
onDeepLinkListener Set listener for DDL response (Optional. default=false)
timeToWaitForATTUserAuthorization Time for the sdk to wait before launch. please read more Here

GitHub

https://github.com/AppsFlyerSDK/appsflyer-react-native-plugin