This document provides a comprehensive overview of the Trackier SDK integration in the TicTacToe Android application, including all implemented features, event tracking, deep linking, and dynamic link functionality.
- SDK Initialization
- Event Tracking
- Deep Link Handling
- Dynamic Link Creation
- Deferred Deep Link Resolution
- File Locations
- Configuration
- Logging and Debugging
The Trackier SDK is initialized in the Application class with the following configuration:
// SDK Configuration
TrackierSDKConfig sdkConfig = new TrackierSDKConfig(this, TR_DEV_KEY, "development");
sdkConfig.setDeepLinkListener(deepLinkListener);
TrackierSDK.initialize(sdkConfig);Key Features:
- Development environment configuration
- Deep link listener setup
- SDK initialization with custom configuration
Location: app/src/main/java/com/cloudstuff/tictactoe/activity/SplashActivity.java
TrackierEvent event = new TrackierEvent("sEMWSCTXeu");
event.param1 = "Param1";
TrackierSDK.trackEvent(event);Trigger: When the app is launched (SplashActivity onCreate)
Location: app/src/main/java/com/cloudstuff/tictactoe/fragment/GameFragment.java
TrackierEvent event = new TrackierEvent("ErkEjPi4X1");
event.param1 = "Player one won";
TrackierSDK.trackEvent(event);TrackierEvent event = new TrackierEvent("ErkEjPi4X1");
event.param1 = "Player two won";
TrackierSDK.trackEvent(event);Trigger: When a player wins the game
Location: app/src/main/java/com/cloudstuff/tictactoe/fragment/SettingsFragment.java
TrackierEvent event = new TrackierEvent(TrackierEvent.INVITE);
event.param1 = "Settings Screen";
event.param2 = "Invite Button Clicked";
TrackierSDK.trackEvent(event);Trigger: When user clicks "Invite Friends" button in settings
Location: app/src/main/java/com/cloudstuff/tictactoe/activity/MainActivity.java
FirebaseAnalytics mFirebaseAnalytics;
mFirebaseAnalytics = FirebaseAnalytics.getInstance(this);
mFirebaseAnalytics.setUserProperty("ct_objectId", Objects.requireNonNull(TrackierSDK.getTrackierId()));
Log.d("TAG", "onCreate: "+TrackierSDK.getTrackierId());Trigger: When the app is launched (MainActivity onCreate) Purpose: Tracks uninstall events by setting Trackier ID as Firebase Analytics user property
Location: app/src/main/java/com/cloudstuff/tictactoe/TicTacToe.java
Comprehensive logging for all deep link data:
DeepLinkListener deepLinkListener = new DeepLinkListener() {
public void onDeepLinking(@NonNull DeepLink deepLink) {
Log.d("DeepLink", "=== Deep Link Received ===");
Log.d("DeepLink", "Deep Link Value: " + deepLink.getDeepLinkValue());
Log.d("DeepLink", "URL: " + deepLink.getUrl());
Log.d("DeepLink", "Is Deferred: " + deepLink.isDeferred());
Log.d("DeepLink", "Partner ID: " + deepLink.getPartnerId());
Log.d("DeepLink", "Site ID: " + deepLink.getSiteId());
Log.d("DeepLink", "Sub Site ID: " + deepLink.getSubSiteId());
Log.d("DeepLink", "Campaign: " + deepLink.getCampaign());
Log.d("DeepLink", "P1: " + deepLink.getP1());
Log.d("DeepLink", "P2: " + deepLink.getP2());
Log.d("DeepLink", "P3: " + deepLink.getP3());
Log.d("DeepLink", "P4: " + deepLink.getP4());
Log.d("DeepLink", "P5: " + deepLink.getP5());
Log.d("DeepLink", "All Data: " + deepLink.getData());
if (deepLink.getSdkParams() != null) {
Log.d("DeepLink", "SDK Params: " + deepLink.getSdkParams());
}
Log.d("DeepLink", "=== End Deep Link Info ===");
}
};Location: app/src/main/java/com/cloudstuff/tictactoe/activity/MainActivity.java
private Map<String,String> getDeepLinkParams(Uri uri) {
Map<String,String> deepLinkParams = new HashMap<String,String>();
if(uri != null){
Set<String> paramNames = uri.getQueryParameterNames();
for(String name : paramNames){
deepLinkParams.put(name,uri.getQueryParameter(name));
}
}
return deepLinkParams;
}Complete dynamic link creation with Trackier SDK:
private void createDynamicLink(Context context) {
// Build the dynamic link parameters
Map<String, String> sdkParams = new HashMap<>();
sdkParams.put("param1", "value1");
sdkParams.put("param2", "value2");
DynamicLink dynamicLink = new DynamicLink.Builder()
.setTemplateId("78R2J2") // Set the template ID for the link
.setLink(Uri.parse("https://trackier58.u9ilnk.me")) // The base link
.setDomainUriPrefix("trackier59.unilink.me") // Domain prefix for the link
.setDeepLinkValue("NewMainActivity") // Deep link destination within the app
// Additional SDK parameters
.setSDKParameters(sdkParams)
// Attribution parameters for tracking
.setAttributionParameters(
"my_channel",
"my_campaign",
"at_invite",
"param1_value",
"param2_value",
"param3_value",
"param4_value",
"param5_value"
)
.build();
// Call the SDK to create the dynamic link
TrackierSDK.createDynamicLink(
dynamicLink,
dynamicLinkUrl -> {
// Log success messages
Log.d("DynamicLinkSuccess", "Dynamic link created: " + dynamicLinkUrl);
// Track the invite event
TrackierEvent event = new TrackierEvent(TrackierEvent.INVITE);
event.param1 = "Settings Screen";
event.param2 = "Invite Button Clicked";
TrackierSDK.trackEvent(event);
// Share the dynamic link
shareDynamicLink(dynamicLinkUrl);
return null;
},
errorMessage -> {
// Log error messages
Log.d("DynamicLinkError", errorMessage);
showError("Failed to create invite link. Please try again.");
return null;
}
);
}private void shareDynamicLink(String dynamicLinkUrl) {
try {
Intent shareIntent = new Intent(Intent.ACTION_SEND);
shareIntent.setType("text/plain");
shareIntent.putExtra(Intent.EXTRA_SUBJECT, "Invite to Tic Tac Toe");
shareIntent.putExtra(Intent.EXTRA_TEXT, "Hey! Check out this awesome Tic Tac Toe game: " + dynamicLinkUrl);
startActivity(Intent.createChooser(shareIntent, "Share via"));
} catch (Exception e) {
Log.e("ShareError", "Error sharing dynamic link: " + e.getMessage());
showError("Failed to share invite link.");
}
}// Resolve and print the deferred deep link URL
TrackierSDK.resolveDeeplinkUrl("https://trackier58.u9ilnk.me/d/NKmWH9E7b1",
resultUrl -> {
Log.d("TrackierSDK", "Resolved Deferred Deep Link URL: " + resultUrl);
return null;
},
error -> {
Log.e("TrackierSDK", "Error resolving deferred deep link: " + error.getMessage());
return null;
}
);- Application Class:
app/src/main/java/com/cloudstuff/tictactoe/TicTacToe.java - Main Activity:
app/src/main/java/com/cloudstuff/tictactoe/activity/MainActivity.java - Splash Activity:
app/src/main/java/com/cloudstuff/tictactoe/activity/SplashActivity.java - Game Fragment:
app/src/main/java/com/cloudstuff/tictactoe/fragment/GameFragment.java - Settings Fragment:
app/src/main/java/com/cloudstuff/tictactoe/fragment/SettingsFragment.java
- Build Configuration:
app/build.gradle - Proguard Rules:
app/proguard-rules.pro
implementation 'com.trackier:android-sdk:1.6.73'-keep class com.trackier.sdk.** { *; }
private static final String TR_DEV_KEY = "<PLACE_SDK_OR_APP_KEY_HERE>";"DeepLink"- Deep link data logging"TrackierSDK"- SDK operations logging"DynamicLinkSuccess"- Dynamic link creation success"DynamicLinkError"- Dynamic link creation errors"ShareError"- Share functionality errors
- Deep Link Received: Complete deep link data dump
- Resolved Deferred Deep Link: URL resolution results
- Dynamic Link Created: Successfully created dynamic links
- Event Tracking: All tracked events with parameters
| Event ID | Event Name | Location | Trigger |
|---|---|---|---|
sEMWSCTXeu |
App Launch | SplashActivity | App opened |
ErkEjPi4X1 |
Game Win | GameFragment | Player wins game |
TrackierEvent.INVITE |
Invite Friends | SettingsFragment | Invite button clicked |
TrackierSDK.getTrackierId() |
Uninstall Tracking | MainActivity | App launched (Firebase Analytics) |
- β SDK Initialization - Complete setup with deep link listener
- β Event Tracking - Multiple events across different app sections
- β Deep Link Handling - Comprehensive deep link data logging
- β Dynamic Link Creation - Full invite functionality with sharing
- β Deferred Deep Link Resolution - URL resolution with error handling
- β Error Handling - Proper error logging and user feedback
- β Logging - Detailed logging for debugging and monitoring
- β Uninstall Tracking - Firebase Analytics integration for uninstall detection
- Replace SDK Key: Update
TR_DEV_KEYinTicTacToe.java - Configure Template ID: Update template ID in dynamic link creation
- Test Deep Links: Use the provided test URL for deferred deep link testing
- Monitor Logs: Use Logcat with filter tags to monitor SDK operations
- App Launch β Trackier event fired + Uninstall tracking setup
- Game Play β Win events tracked
- Invite Friends β Dynamic link created and shared
- Deep Link Received β Complete data logged
- Deferred Deep Link β URL resolved and logged
- Uninstall Detection β Trackier ID linked to Firebase Analytics for uninstall tracking
This integration provides comprehensive tracking, deep linking, and dynamic link functionality for the TicTacToe Android application using the Trackier SDK.