After install, you will need to integrate the CleverTap SDK into your iOS and Android apps.
Clevertap supports the ReactNative New Architecture starting from clevertap-react-native v3.0.0, while still maintaining compatibility with the old architecture. Please refer to the official guide to optionally enable New Architecture in your app.
⚠️ For app maintainers to migrate to the New Architecture, all of their dependencies must support the New Architecture as well
- Follow the integration instructions starting with Step 2 here.
- In your
AppDelegate didFinishLaunchingWithOptions:
notify the CleverTap React SDK of application launch:
[CleverTap autoIntegrate]; // integrate CleverTap SDK using the autoIntegrate option
[[CleverTapReactManager sharedInstance] applicationDidLaunchWithOptions:launchOptions];
NOTE: Don't forget to add the CleverTap imports at the top of the file.
#import <CleverTap-iOS-SDK/CleverTap.h>
#import <clevertap-react-native/CleverTapReactManager.h>
Note: Need to use @import CleverTapSDK; instead of #import <CleverTap-iOS-SDK/CleverTap.h> and @import CleverTapReact; instead of #import <clevertap-react-native/CleverTapReactManager.h> in the AppDelegate class in case if using use_modular_headers!
in the podfile.
-
Follow the integration instructions starting with Step 2 here.
-
Add CleverTapPackage to the packages list in MainApplication.java (
android/app/src/[...]/MainApplication.java
)// ... // CleverTap imports import com.clevertap.android.sdk.ActivityLifecycleCallback; import com.clevertap.react.CleverTapPackage; import com.clevertap.react.CleverTapRnAPI; //... // add CleverTapPackage to react-native package list @Override protected List<ReactPackage> getPackages() { List<ReactPackage> packages = new PackageList(this).getPackages(); // Packages that cannot be autolinked yet can be added manually here, for // example: packages.add(new CleverTapPackage());// only needed when not auto-linking return packages; }
-
Initialise Clevertap ReactNative Integration - This adds support for
ClevertapPushNotiificationClicked
from killed state and registers theActivityLifecycleCallback
-
From clevertap-react-native v3.0.0 onwards, if developers don't want their
Application
class to extendCleverTapApplication
, they should callCleverTapRnAPI.initReactNativeIntegration(this)
andActivityLifecycleCallback.register(this)
from theonCreate()
to support Push Notification click callback in killed state.import com.clevertap.react.CleverTapRnAPI; import com.clevertap.android.sdk.ActivityLifecycleCallback; import com.clevertap.android.sdk.CleverTapAPI; import com.clevertap.android.sdk.CleverTapAPI.LogLevel; // ... public class MainApplication implements ReactApplication { // ... @Override public void onCreate() { CleverTapAPI.setDebugLevel(LogLevel.VERBOSE); ActivityLifecycleCallback.register(this); CleverTapRnAPI.initReactNativeIntegration(this); super.onCreate(); // ... } // ... }
-
From clevertap-react-native v3.0.0 onwards developers can make their
Application
class extendCleverTapApplication
to support out of the box integration. Before v3.0.0 developers were forced to register activity lifecycle in theirApplication
class manually which is being abstract out inCleverTapApplication
class.import com.clevertap.react.CleverTapApplication; import com.clevertap.android.sdk.ActivityLifecycleCallback; import com.clevertap.android.sdk.CleverTapAPI; import com.clevertap.android.sdk.CleverTapAPI.LogLevel; // other imports public class MainApplication extends CleverTapApplication implements ActivityLifecycleCallbacks, ReactApplication { // ... @Override public void onCreate() { CleverTapAPI.setDebugLevel(LogLevel.VERBOSE); ActivityLifecycleCallback.register(this); // Not required for v3.0.0+ super.onCreate(); // ... } }
- Optionally override onCreate in MainActivity.java to notify CleverTap of a launch deep link (
android/app/src/[...]/MainActivity.java
)import com.clevertap.react.CleverTapModule; import android.os.Bundle; public class MainActivity extends ReactActivity { // ... @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); CleverTapRnAPI.setInitialUri(getIntent().getData()); } // ... }