Unreal Engine SDK - Methods Reference

Unreal Engine SDK - Methods Reference

The Singular Unreal Engine SDK provides comprehensive tracking and attribution capabilities for Unreal Engine applications. This reference documents all available SDK methods with their signatures and usage examples.


CreateReferrerShortLink

Create Referrer Short Link

Generate a short Singular Link that can be shared to track user-to-user attribution and viral growth campaigns.

Signature

C++
static void CreateReferrerShortLink(
    FString baseLink,
    FString referrerName,
    FString referrerId,
    TMap<FString, FString> args
);

Usage Example

C++
// Create a referrer short link
FString BaseLink = TEXT("https://example.sng.link/abc123");
FString ReferrerName = TEXT("John Doe");
FString ReferrerId = TEXT("user_12345");

TMap<FString, FString> PassthroughParams;
PassthroughParams.Add(TEXT("campaign"), TEXT("summer_promo"));
PassthroughParams.Add(TEXT("level"), TEXT("5"));

USingularSDKBPLibrary::CreateReferrerShortLink(
    BaseLink,
    ReferrerName,
    ReferrerId,
    PassthroughParams
);

GetLimitDataSharing

Get Limit Data Sharing State

Check the current data sharing limitation status for privacy compliance.

Signature

C++
static bool GetLimitDataSharing();

Usage Example

C++
// Check if data sharing is limited
bool IsLimited = USingularSDKBPLibrary::GetLimitDataSharing();

if (IsLimited)
{
    UE_LOG(LogTemp, Log, TEXT("Data sharing is currently limited"));
}
else
{
    UE_LOG(LogTemp, Log, TEXT("Data sharing is enabled"));
}

Initialize

Initialize Singular SDK

Initialize the Singular SDK with configuration parameters including API credentials, tracking settings, and privacy options.

Signature

C++
static bool Initialize(
    FString apiKey,
    FString apiSecret,
    int sessionTimeout = 60,
    FString customUserId = TEXT(""),
    bool skAdNetworkEnabled = true,
    bool manualSkanConversionManagement = false,
    int waitForTrackingAuthorizationWithTimeoutInterval = 0,
    bool oaidCollection = false,
    bool enableLogging = false,
    int logLevel = 0,
    bool clipboardAttribution = false,
    FString facebookAppId = TEXT(""),
    FString customSdid = TEXT("")
);

Usage Example

C++
// Initialize SDK with required parameters
FString ApiKey = TEXT("YOUR_API_KEY");
FString ApiSecret = TEXT("YOUR_API_SECRET");

bool Success = USingularSDKBPLibrary::Initialize(
    ApiKey,
    ApiSecret,
    60,                    // Session timeout in seconds
    TEXT(""),             // Custom user ID (optional)
    true,                 // SKAdNetwork enabled
    false,                // Manual SKAN conversion management
    0,                    // Wait for tracking authorization timeout
    false,                // OAID collection
    true,                 // Enable logging for debugging
    3,                    // Log level (0-5)
    false,                // Clipboard attribution
    TEXT(""),             // Facebook App ID (optional)
    TEXT("")              // Custom SDID (optional)
);

if (Success)
{
    UE_LOG(LogTemp, Log, TEXT("Singular SDK initialized successfully"));
}
else
{
    UE_LOG(LogTemp, Error, TEXT("Failed to initialize Singular SDK"));
}

IsAllTrackingStopped

Check If All Tracking Is Stopped

Determine whether all tracking has been stopped for privacy compliance or user preference.

Signature

C++
static bool IsAllTrackingStopped();

Usage Example

C++
// Check tracking status
bool IsTrackingStopped = USingularSDKBPLibrary::IsAllTrackingStopped();

if (IsTrackingStopped)
{
    UE_LOG(LogTemp, Warning, TEXT("Tracking is currently stopped"));
    // Update UI to reflect tracking status
}
else
{
    UE_LOG(LogTemp, Log, TEXT("Tracking is active"));
}

LimitDataSharing

Set Data Sharing Limitation

Control whether user data is shared with third parties for privacy compliance with regulations like GDPR and CCPA.

Signature

C++
static void LimitDataSharing(bool shouldLimitDataSharing);

Usage Example

C++
// Limit data sharing when user opts out
USingularSDKBPLibrary::LimitDataSharing(true);
UE_LOG(LogTemp, Log, TEXT("Data sharing has been limited"));

// Enable data sharing when user opts in
USingularSDKBPLibrary::LimitDataSharing(false);
UE_LOG(LogTemp, Log, TEXT("Data sharing has been enabled"));

ResumeAllTracking

Resume All Tracking

Re-enable tracking after it has been stopped, allowing the SDK to resume data collection and event reporting.

Signature

C++
static void ResumeAllTracking();

Usage Example

C++
// Resume tracking when user grants consent
USingularSDKBPLibrary::ResumeAllTracking();
UE_LOG(LogTemp, Log, TEXT("Tracking has been resumed"));

SendEvent

Send Custom Event

Track a custom event by name to measure user actions and engagement within your application.

Signature

C++
static void SendEvent(FString eventName);

Usage Example

C++
// Track level completion event
USingularSDKBPLibrary::SendEvent(TEXT("level_completed"));

// Track tutorial start
USingularSDKBPLibrary::SendEvent(TEXT("tutorial_start"));

// Track user achievement
USingularSDKBPLibrary::SendEvent(TEXT("achievement_unlocked"));

SendEventWithArgs

Send Custom Event With Attributes

Track a custom event with additional attributes to provide detailed context about user actions.

Signature

C++
static void SendEventWithArgs(
    FString eventName,
    TMap<FString, FString> args
);

Usage Example

C++
// Track level completion with attributes
TMap<FString, FString> LevelAttributes;
LevelAttributes.Add(TEXT("level_name"), TEXT("Dark Forest"));
LevelAttributes.Add(TEXT("level_number"), TEXT("5"));
LevelAttributes.Add(TEXT("time_spent"), TEXT("245"));
LevelAttributes.Add(TEXT("score"), TEXT("8500"));

USingularSDKBPLibrary::SendEventWithArgs(
    TEXT("level_completed"),
    LevelAttributes
);

// Track item purchase with details
TMap<FString, FString> PurchaseAttributes;
PurchaseAttributes.Add(TEXT("item_id"), TEXT("sword_legendary"));
PurchaseAttributes.Add(TEXT("item_category"), TEXT("weapon"));
PurchaseAttributes.Add(TEXT("item_rarity"), TEXT("legendary"));

USingularSDKBPLibrary::SendEventWithArgs(
    TEXT("item_purchased"),
    PurchaseAttributes
);

SendRevenue

Send Revenue Event

Track revenue-generating events with currency and amount to measure monetization performance.

Signature

C++
static void SendRevenue(
    FString eventName,
    FString currency,
    float amount
);

Usage Example

C++
// Track in-app purchase revenue
USingularSDKBPLibrary::SendRevenue(
    TEXT("coin_pack_purchase"),
    TEXT("USD"),
    4.99f
);

// Track subscription purchase
USingularSDKBPLibrary::SendRevenue(
    TEXT("premium_subscription"),
    TEXT("EUR"),
    9.99f
);

SendRevenueWithArgs

Send Revenue Event With Attributes

Track revenue with additional attributes to provide detailed information about the transaction.

Signature

C++
static void SendRevenueWithArgs(
    FString eventName,
    FString currency,
    float amount,
    TMap<FString, FString> args
);

Usage Example

C++
// Track revenue with transaction details
TMap<FString, FString> TransactionAttributes;
TransactionAttributes.Add(TEXT("product_id"), TEXT("com.game.coins.large"));
TransactionAttributes.Add(TEXT("product_name"), TEXT("Large Coin Pack"));
TransactionAttributes.Add(TEXT("quantity"), TEXT("1"));
TransactionAttributes.Add(TEXT("payment_method"), TEXT("credit_card"));

USingularSDKBPLibrary::SendRevenueWithArgs(
    TEXT("iap_purchase"),
    TEXT("USD"),
    9.99f,
    TransactionAttributes
);

SetCustomUserId

Set Custom User ID

Assign a custom user identifier to track users across devices and sessions using your own ID system.

Signature

C++
static void SetCustomUserId(FString customUserId);

Usage Example

C++
// Set custom user ID after login
FString UserId = TEXT("user_abc123xyz");
USingularSDKBPLibrary::SetCustomUserId(UserId);
UE_LOG(LogTemp, Log, TEXT("Custom user ID set: %s"), *UserId);

SetUninstallToken

Set Uninstall Tracking Token

Register a push notification token to enable uninstall tracking for measuring user retention.

Signature

C++
static void SetUninstallToken(FString token);

Usage Example

C++
// Set push notification token for uninstall tracking
FString PushToken = TEXT("abc123def456...");
USingularSDKBPLibrary::SetUninstallToken(PushToken);
UE_LOG(LogTemp, Log, TEXT("Uninstall token registered"));

SkanGetConversionValue

Get SKAdNetwork Conversion Value

Retrieve the current SKAdNetwork conversion value for iOS apps (iOS only).

Signature

C++
static int SkanGetConversionValue();

Usage Example

C++
// Get current SKAdNetwork conversion value (iOS only)
int ConversionValue = USingularSDKBPLibrary::SkanGetConversionValue();
UE_LOG(LogTemp, Log, TEXT("Current conversion value: %d"), ConversionValue);

SkanRegisterAppForAdNetworkAttribution

Register App for Ad Network Attribution

Register the app with Apple's SKAdNetwork framework for attribution tracking (iOS only).

Signature

C++
static void SkanRegisterAppForAdNetworkAttribution();

Usage Example

C++
// Register for SKAdNetwork attribution (iOS only)
USingularSDKBPLibrary::SkanRegisterAppForAdNetworkAttribution();
UE_LOG(LogTemp, Log, TEXT("Registered for SKAdNetwork attribution"));

SkanUpdateConversionValue

Update SKAdNetwork Conversion Value

Update the SKAdNetwork conversion value to reflect user engagement and monetization (iOS only).

Signature

C++
static bool SkanUpdateConversionValue(int conversionValue);

Usage Example

C++
// Update conversion value based on user actions (iOS only)
int NewValue = 10;
bool Success = USingularSDKBPLibrary::SkanUpdateConversionValue(NewValue);

if (Success)
{
    UE_LOG(LogTemp, Log, TEXT("Conversion value updated to: %d"), NewValue);
}
else
{
    UE_LOG(LogTemp, Warning, TEXT("Failed to update conversion value"));
}

SkanUpdateConversionValues

Update SKAdNetwork Conversion Values With Fine and Coarse Values

Update SKAdNetwork with fine-grained conversion value, coarse value, and lock status for iOS 16.1+ (iOS only).

Signature

C++
static void SkanUpdateConversionValues(
    int conversionValue,
    int coarse,
    bool lock
);

Usage Example

C++
// Update conversion values with fine and coarse values (iOS 16.1+)
int FineValue = 25;
int CoarseValue = 1;  // 0 = low, 1 = medium, 2 = high
bool Lock = false;    // Set to true to prevent further updates

USingularSDKBPLibrary::SkanUpdateConversionValues(FineValue, CoarseValue, Lock);
UE_LOG(LogTemp, Log, TEXT("Updated conversion values: fine=%d, coarse=%d"), FineValue, CoarseValue);

StopAllTracking

Stop All Tracking

Completely stop all SDK tracking activities to comply with user privacy preferences or regulatory requirements.

Signature

C++
static void StopAllTracking();

Usage Example

C++
// Stop tracking when user withdraws consent
USingularSDKBPLibrary::StopAllTracking();
UE_LOG(LogTemp, Warning, TEXT("All tracking has been stopped"));

TrackingOptIn

Record Tracking Opt-In

Notify Singular that the user has explicitly opted in to tracking for GDPR compliance.

Signature

C++
static void TrackingOptIn();

Usage Example

C++
// Record user opt-in for GDPR compliance
USingularSDKBPLibrary::TrackingOptIn();
UE_LOG(LogTemp, Log, TEXT("User has opted in to tracking"));

TrackingUnder13

Mark User as Under 13

Notify Singular that the user is under 13 years old for COPPA compliance and children's privacy protection.

Signature

C++
static void TrackingUnder13();

Usage Example

C++
// Mark user as under 13 for COPPA compliance
USingularSDKBPLibrary::TrackingUnder13();
UE_LOG(LogTemp, Log, TEXT("User marked as under 13 years old"));

UnsetCustomUserId

Remove Custom User ID

Clear the previously set custom user ID, typically used during logout or account switching.

Signature

C++
static void UnsetCustomUserId();

Usage Example

C++
// Clear custom user ID on logout
USingularSDKBPLibrary::UnsetCustomUserId();
UE_LOG(LogTemp, Log, TEXT("Custom user ID has been cleared"));