Skip to content

Latest commit

 

History

History
122 lines (95 loc) · 5.27 KB

integration.md

File metadata and controls

122 lines (95 loc) · 5.27 KB

Integrating the CleverTap SDK

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

iOS

  1. Follow the integration instructions starting with Step 2 here.
  2. 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.

See the Example Project.

Android

  1. Follow the integration instructions starting with Step 2 here.

  2. Add CleverTapPackage to the packages list in MainApplication.java (android/app/src/[...]/MainApplication.java)

    // ...
    
    // CleverTap imports
    import com.clevertap.react.CleverTapPackage;
    
    //...
    
    // 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;
        }
  3. Initialise Clevertap ReactNative Integration - This adds support for ClevertapPushNotiificationClicked from killed state and registers the ActivityLifecycleCallback

  • From clevertap-react-native v3.0.0 onwards, if developers don't want their Application class to extend CleverTapApplication, they should call CleverTapRnAPI.initReactNativeIntegration(this) and ActivityLifecycleCallback.register(this) from the onCreate() 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();
            // ...
        }
    
    // ...
    }
OR

  • From clevertap-react-native v3.0.0 onwards developers can make their Application class extend CleverTapApplication to support out of the box integration. Before v3.0.0 developers were forced to register activity lifecycle in their Application class manually which is being abstract out in CleverTapApplication 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();
          // ...
        }
    }
  1. Optionally override onCreate in MainActivity.java to notify CleverTap of a launch deep link (android/app/src/[...]/MainActivity.java)
    import com.clevertap.react.CleverTapRnAPI;
    import android.os.Bundle;
    
    
    public class MainActivity extends ReactActivity {
        // ...
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            CleverTapRnAPI.setInitialUri(getIntent().getData()); // From v3.0.0+
    	}
    
        // ...
    }

See the Example Project