Unity SDK Quick Start Guide
Overview
This section shows how to install the CleverTap SDK, track your first user event, and see this information within the CleverTap dashboard in less than ten minutes. CleverTap provides Unity SDK that enables app developers to track, segment, and engage their users.
Install
You can now install the CleverTap Unity SDK using the .unitypackage
Unity package or as a local package through Unity Package Manager (UPM).
This installation involves the following major steps:
- Import the CleverTap Unity Package
- Import the CleverTap Unity Package as a Local Dependency
- Set Up the Unity SDK
- Callbacks
Import the CleverTap Unity Package
- Download the latest version of the CleverTap Unity package. Import the
.unitypackage
into your Unity Project. Go to Assets > Import Package > Custom Package. - Add the PlayServiceResolver and the ExternalDependencyManager folders. These folders will install the EDM4U plugin, which automatically adds all the Android and iOS dependencies when building your project.
- Ensure that the
AndroidPostImport
script is added since it sets upclevertap-android-wrapper
library for Android.
Import the CleverTap Unity Package as a Local Dependency
Clone the latest release version of CleverTap Unity SDK. The SDK can be imported as a local package through the Unity Package Manager.
Set Up the Unity SDK
CleverTap API can be accessed anywhere in your project by simply calling the static CleverTap class. No need to create GameObject with the CleverTapUnity name or attach any script. The new architecture handles the following:
- Instantiation of platform-specific binding
- Creation of
GameObject
- Script attachment.
You can view your CleverTap Account ID
and CleverTap Account Token
from the Settings page.
// Initialize CleverTap
CleverTap.LaunchWithCredentialsForRegion({YOUR_CLEVERTAP_ACCOUNT_ID}, {YOUR_CLEVERTAP_ACCOUNT_TOKEN}, {CLEVERTAP_ACCOUNT_REGION});
Callbacks
A new mechanism to handle callbacks is introduced. You can now add an event listener for a callback directly through the CleverTap static events. No need to set all callbacks in the CleverTapUnity.cs
anymore.
CleverTap.OnCleverTapDeepLinkCallback += YOUR_CALLBACK_METHOD;
CleverTap.OnCleverTapProfileInitializedCallback += YOUR_CALLBACK_METHOD;
CleverTap.OnCleverTapProfileUpdatesCallback += YOUR_CALLBACK_METHOD;
This introduces breaking changes in the CleverTapUnity.cs
, rendering all existing callback methods obsolete, and these methods will not be called anymore. If you still want to use the callbacks through the CleverTapUnity.cs
methods, each method must subscribe to a new event listener found at CleverTap.On{CleveTapUnity_Callback_MethodName}
.
The following is a sample code on how to subscribe to new event listeners with existing methods in CleverTapUnity.cs
:
CleverTap.OnCleverTapDeepLinkCallback += CleverTapDeepLinkCallback;
CleverTap.OnCleverTapProfileInitializedCallback += CleverTapProfileInitializedCallback;
CleverTap.OnCleverTapProfileUpdatesCallback += CleverTapProfileUpdatesCallback;
CleverTap.OnCleverTapPushOpenedCallback += CleverTapPushOpenedCallback;
CleverTap.OnCleverTapInitCleverTapIdCallback += CleverTapInitCleverTapIdCallback;
CleverTap.OnCleverTapInAppNotificationDismissedCallback += CleverTapInAppNotificationDismissedCallback;
CleverTap.OnCleverTapInAppNotificationShowCallback += CleverTapInAppNotificationShowCallback;
CleverTap.OnCleverTapOnPushPermissionResponseCallback += CleverTapOnPushPermissionResponseCallback;
CleverTap.OnCleverTapInAppNotificationButtonTapped += CleverTapInAppNotificationButtonTapped;
CleverTap.OnCleverTapInboxDidInitializeCallback += CleverTapInboxDidInitializeCallback;
CleverTap.OnCleverTapInboxMessagesDidUpdateCallback += CleverTapInboxMessagesDidUpdateCallback;
CleverTap.OnCleverTapInboxCustomExtrasButtonSelect += CleverTapInboxCustomExtrasButtonSelect;
CleverTap.OnCleverTapInboxItemClicked += CleverTapInboxItemClicked;
CleverTap.OnCleverTapNativeDisplayUnitsUpdated += CleverTapNativeDisplayUnitsUpdated;
CleverTap.OnCleverTapProductConfigFetched += CleverTapProductConfigFetched;
CleverTap.OnCleverTapProductConfigActivated += CleverTapProductConfigActivated;
CleverTap.OnCleverTapProductConfigInitialized += CleverTapProductConfigInitialized;
CleverTap.OnCleverTapFeatureFlagsUpdated += CleverTapFeatureFlagsUpdated;
IDFV Usage for CleverTap ID
Starting from CleverTap Unity SDK 2.1.2, you can optionally disable the usage of IDFV for CleverTap ID by selecting CLEVERTAP_DISABLE_IDFV. We recommend this for apps that send data from different iOS apps to a common CleverTap account. By default, the CLEVERTAP_DISABLE_IDFV checkbox is cleared.
iOS Specific Instructions
- To enable Push Notifications, ensure to add the Push Notifications capability to your Xcode project.
- Add a run script to your build phases. In Xcode, go to your Targets, under your appβs name, select Build Phases after embed frameworks, add a run script phase, and set it to use
/bin/sh
and the iOS script:
The script scans your built applicationβs Frameworks
folder and strips the unnecessary simulator architectures from the CleverTakSDK.framework
prior to archiving/submitting the app store.
- Build and run your iOS project.
Add Region Code
To know how to add region code for iOS in Unity SDK, refer to Region Codes.
Android Specific Instructions
Steps for Android X Dependencies
Perform these additional steps only if you are using Android X dependencies.
- Go to File > Build Settings > Android > Player Settings > Publishing Settings > Build.
- Ensure the
Custom Gradle Template
option is selected.- Go to Assets > Play Services Resolver > Android Resolver > Settings.
- Ensure that
Use Jetifier
andPatch mainTemplate.gradle
options are selected.
- To enable Push Notifications, add the Firebase Unity SDK to your app. For more information, refer to Firebase Unity Setup Docs.
Note
The Firebase Unity SDK may override your
AndroidManifest.xml
file. If that happens, revert to your original manifest file.
- Run Assets > Play Services Resolver > Android Resolver > Resolve Client Jars from the Unity menu bar to install the required google play services and android support library dependencies.
- Edit the
AndroidManifest.xml
file inAssets/Plugins/Android
to add your Bundle Identifier, FCM Sender ID, CleverTap Account Id, CleverTap Token, and Deep Link URL scheme (if applicable):
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="YOUR_BUNDLE_IDENTIFIER" android:versionName="1.0" android:versionCode="1" android:installLocation="preferExternal"> <supports-screens android:smallScreens="true" android:normalScreens="true" android:largeScreens="true" android:xlargeScreens="true" android:anyDensity="true" />
<meta-data
android:name="CLEVERTAP_ACCOUNT_ID"
android:value="Your CleverTap Account ID"/>
<meta-data
android:name="CLEVERTAP_TOKEN"
android:value="Your CleverTap Account Token"/>
<!-- Deep Links uncomment and replace YOUR_URL_SCHEME, if applicable, or remove if not supporting deep links-->
<intent-filter android:label="@string/app_name">
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="YOUR_URL_SCHEME" />
</intent-filter>
- Add the following in the
AndroidManifest.xml
file:
<service
android:name="com.clevertap.android.sdk.pushnotification.fcm.FcmMessageListenerService">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT"/>
</intent-filter>
</service>
- Add your
google-services.json
file to the project's Assets folder. - Build your app or Android project as usual.
Add Region Code
To know how to add region code for Android in Unity SDK, refer to Region Codes.
Initialize CleverTap SDK
#if (UNITY_IPHONE)
CleverTap.LaunchWithCredentials(CLEVERTAP_ACCOUNT_ID, CLEVERTAP_ACCOUNT_TOKEN);
#endif
#if (UNITY_ANDROID)
CleverTap.Initialize(CLEVERTAP_ACCOUNT_ID, CLEVERTAP_ACCOUNT_TOKEN);
#endif
Track User Profiles
Create a User profile when the user logs in (On User Login):
Dictionary<string, string> newProps = new Dictionary<string, string>();
newProps.Add("email", "[email protected]");
newProps.Add("Identity", "123456");
newProps.put("Name", "Jack Montana"); // String
newProps.put("Identity", "61026032"); // String
newProps.put("Email", "[email protected]"); // Email address of the user
newProps.put("Phone", "+14155551234"); // Phone (with the country code, starting with +)
newProps.put("Gender", "M"); // Can be either M or F
CleverTap.OnUserLogin(newProps);
Track User Events
Record an event without event data:
// record basic event with no properties
CleverTap.RecordEvent("testEvent");
Record an event with event data:
// record event with properties
Dictionary<string, object> Props = new Dictionary<string, object>();
Props.Add("testKey", "testValue");
CleverTap.RecordEvent("testEventWithProps", Props);
Updated about 1 month ago