Import the downloaded package to your project. From the Assets menu, go to Import Package - Custom Package… as shown:
Select rudder-sdk-unity.unitypackage from the downloaded location and click Open:
Click Import in the import popup as shown:
Initializing the RudderStack client
To initialize the RudderStack client, follow these steps:
Add the import to all files where you wish to use RudderClient .
usingRudderStack;
Then, add the following code in the Awake method of your main GameObject Script:
// Critical for iOS Applications where multiple components are using SQLite// This has no effect for Android, but can be added as a safety checkRudderClient.SerializeSqlite();// Build your configRudderConfigBuilderconfigBuilder=newRudderConfigBuilder().WithDataPlaneUrl(DATA_PLANE_URL);.WithLogLevel(RudderLogLevel.VERBOSE)// get instance for RudderClientRudderClientrudderClient=RudderClient.GetInstance(WRITE_KEY,configBuilder.Build());
If you are building an iOS project, RudderClient.SerializeSqlite() is important to handle races with SQLite.
Configuring your RudderStack client
You can configure your client based on the following parameters using RudderConfigBuilder:
Parameter
Type
Description
Default value
logLevel
Integer
Controls how much of the log you want to see from the SDK.
RudderLogLevel.INFO
dataPlaneUrl
String
Your data plane URL.
https://hosted.rudderlabs.com
flushQueueSize
Integer
Number of events in a batch request to the RudderStack server.
30
dbThresholdCount
Integer
Number of events to be saved in the SQLite database. Once the limit is reached, older events are deleted from the database.
10000
sleepcount
Integer
Minimum waiting time to flush the events to the RudderStack server. The minimum value can be set to 1 second.
10 seconds
configRefreshInterval
Integer
The SDK will fetch the config from dashboard after the specified time.
2 hours
trackLifecycleEvents
Boolean
Determines if the SDK will automatically capture the application lifecycle events.
true
recordScreenViews
Boolean
Determines if the SDK will automatically capture the screen view events.
false
autoCollectAdvertId
Boolean
Determines if the SDK will collect the advertisement ID.
false
controlPlaneUrl
String
Change this parameter only if you are self-hosting the control plane. Check the Self-hosted control plane section below for more information. The SDK will add /sourceConfig along with this URL to fetch the source configuration.
If you are using a device mode destination like Adjust, Firebase, etc., the Unity SDK needs to fetch the required configuration from the control plane. If you are using the Control plane lite utility to host your own Control Plane, then follow the steps in this section and specify controlPlaneUrl in your RudderConfigBuilder that points to your hosted source configuration file.
You should not pass the controlPlaneUrl parameter during the SDK initialization if you are using the RudderStack Cloud dashboard. This parameter is supported only if you are using the open source Control Plane Lite utility to self-host your control plane.
Identify
The Unity SDK captures the deviceId and uses that as the anonymousId for identifying the user. This helps in tracking the users across the application installation. To attach more information to the user, you can use the identify method. Once the SDK identifies the user, it persists and passes the user information to the subsequent calls.
To reset the user identification, you can use the reset method.
RudderStack provides some pre-defined APIs for building the RudderTraits object like PutEmail(), PutAge(), etc. These APIs can be used to set the values of the standard traits by directly passing them as parameters.
For the custom traits which do not have any pre-defined API, you can use the Put() method and pass a key-value pair of the trait, as shown in the sample identify event below:
RudderMessageidentifyMessage=newRudderMessageBuilder().Build();RudderTraitstraits=newRudderTraits();//pre-defined API's for inserting standard traitstraits.PutEmail("alex@example.com");traits.PutAge("40");//Put API to insert custom traitstraits.Put("location","New Orleans");traits.Put("gender","Male");traits.Put("consent","Granted");rudderClient.Identify("some_user_id",traits,identifyMessage);
Overriding anonymousId using setAnonymousId
You can explicitly set the anonymousId for all future events using the setAnonymousId() method:
rudderClient.setAnonymousId("anonymousID1");
Track
You can record the users’ in-game activity through the track method. Every user action is called an event.
A sample track event is as shown:
// create event propertiesDictionary<string,object>eventProperties=newDictionary<string,object>();eventProperties.Add("test_key_1","test_value_1");eventProperties.Add("test_key_2","test_value_2");// create user propertiesDictionary<string,object>userProperties=newDictionary<string,object>();userProperties.Add("test_u_key_1","test_u_value_1");userProperties.Add("test_u_key_2","test_u_value_2");// create message to trackRudderMessageBuilderbuilder=newRudderMessageBuilder();builder.WithEventName("test_event_name");builder.WithUserId("test_user_id");builder.WithEventProperties(eventProperties);builder.WithUserProperties(userProperties);rudderClient.Track(builder.Build());
// create message to trackRudderMessageBuilderbuilder=newRudderMessageBuilder();builder.WithEventName("test_event_name");builder.WithUserId("test_user_id");builder.WithEventProperty("foo","bar");builder.WithUserProperty("foo1","bar1");rudderClient.Track(builder.Build());
Screen
The screen call lets you record the user activities on their mobile screen with any additional relevant information about the viewed screen.
The reset method clears all persisted traits of the previously identified user.
rudderClient.Reset();
Upgrading the SDK
To upgrade the SDK, remove all files related to the SDK from the Plugins folder. Also, remove the Rudder folder completely before importing a newer version of the SDK.
You can find the following files in the Plugins folder for the SDK:
Plugins/Android/unity-plugin-release.aar
Plugins/iOS/RudderSDKUnity
Advertisement ID
RudderStack collects the advertisement ID only if withAutoCollectAdvertId is explicitly set to true during the SDK initialization:
Tracking application lifecycle events on the Android platform
The Unity SDK automatically tracks the Application Lifecycle Events to get insights into the app metrics like installs, opens, updates, etc. However, you can disable the automatic tracking by setting the withTrackLifecycleEvents parameter to false:
To track the application life cycle events on the Android platform, you need to add the RudderPreferbs.prefab file from the path Assets/Rudder/RudderPreferbs.prefab to every scene in your Unity app. Also, ensure that the RudderPreferbs.prefab is linked to the RudderClient.cs script.
The Unity SDK depends on the lifecycle method onApplicationFocus of the MonoBehaviour class to determine the Application Opened and Application Backgrounded events on the Android platform.
Hence, when an application is brought to focus, an Application Opened event is sent, and when the application is moved out of focus, an Application Backgrounded event is sent. So, these events might be triggered even before the RudderStack SDK gets initialized to create the actions and execute them once the SDK is initialized.
Triggering Application Updated lifecycle event
The following requirements must be met to ensure that the Application Updated lifecycle event is triggered:
For iOS: Make sure the Bundle version in the Info.plist file of your application is incremented. If the Bundle version of your target points to the Bundle version of your project, then increment it.
For Android: Make sure the versionCode in the defaultConfig object nested in the android object of your app’s build.gradle is incremented.
This site uses cookies to improve your experience while you navigate through the website. Out of
these
cookies, the cookies that are categorized as necessary are stored on your browser as they are as
essential
for the working of basic functionalities of the website. We also use third-party cookies that
help
us
analyze and understand how you use this website. These cookies will be stored in your browser
only
with
your
consent. You also have the option to opt-out of these cookies. But opting out of some of these
cookies
may
have an effect on your browsing experience.
Necessary
Always Enabled
Necessary cookies are absolutely essential for the website to function properly. This
category only includes cookies that ensures basic functionalities and security
features of the website. These cookies do not store any personal information.
This site uses cookies to improve your experience. If you want to
learn more about cookies and why we use them, visit our cookie
policy. We'll assume you're ok with this, but you can opt-out if you wish Cookie Settings.