SDK de Unreal Engine - Integración básica

Documento

Instalación

Instale el SDK de Singular Unreal Engine añadiendo el plugin del SDK a la carpeta Plugins de su proyecto y habilitándolo en su proyecto de Unreal Engine.

Instalación del SDK

Siga estos pasos para integrar el SDK de Singular en su proyecto de Unreal Engine.

  1. Descargue y extraiga el archivo del SDK desde el enlace anterior.
  2. En la carpeta raíz Project, cree una carpeta Plugins si no existe.
  3. Cree una carpeta "SingularSDK" en la carpeta "Plugins" de su aplicación.
  4. Copie los archivos extraídos en la carpeta "SingularSDK"" de la carpeta " Plugins" de su aplicación.

    unreal_sdk_install.png

  5. Cierre su proyecto Unreal si está abierto.
  6. Vuelva a abrir su proyecto. Si se le pregunta si faltan módulos, elija Sí para continuar.
    unrealModules.png
  7. Habilite SingularSDK Plugin desde el Menú: "Edit>Plugins". Busque Singular.
    unreal_plugin_enabled.png
  8. Añada SingularSDK como dependencia de la matriz PublicDependencyModuleNamesen el archivo Build.cs de su aplicación (Source/ProjectName/<YOUR_APP>.Build.cs).

    C++
    PublicDependencyModuleNames.AddRange(new string[] { 
        "Core", 
        "CoreUObject",
        "Engine", 
        "InputCore", 
        "SingularSDK" 
    });

Problema de instalación conocido

Durante la primera compilación, es posible que se produzca un error fatal en el archivo de cabecera de Singular framework.

PROBLEMA CONOCIDO: Durante la primera compilación, puede producirse el siguiente error fatal:

Plugins/SingularSDK/Source/SingularSDK/Private/SingularSDKBPLibrary.cpp:14:9: fatal error: 'Singular/Singular.h' file not found

Para solucionar este problema, siga estos pasos:

  • Extraiga el archivo Singular.framework.zipde "Plugins/SingularSDK/Source/ThirdParty/iOS".
  • Mueva la carpeta Singular.frameworka "/Users/Shared/Epic Games/UE_5.5/Engine/Intermediate/UnzippedFrameworks/Singular".
framework.png

Inicialización del SDK

Inicialice el SDK de Singular cada vez que inicie su aplicación para habilitar el seguimiento de atribuciones, la gestión de sesiones y los informes de eventos.

Cumplimiento de la privacidad: Recuerde cumplir con las leyes de privacidad promulgadas en las regiones donde hace negocios, incluyendo GDPR, CCPA y COPPA al implementar Singular SDK. Para obtener más información, consulte Prácticas de inclusión y exclusión del SDK.

Por qué inicializar el SDK

La inicialización del SDK es un requisito previo para toda la funcionalidad de atribución de Singular. Crea una nueva sesiónenviada a Singular para calcular las métricas de retención de usuarios.

Práctica recomendada: Inicialice el SDK lo antes posible en el ciclo de vida de su aplicación, por ejemplo, en el constructor del modo de juego.


Método Initialize

USingularSDKBPLibrary::Inicializar

Llame al método Initialize para iniciar el SDK de Singular y enviar una sesión de usuario a los servidores de Singular.

Firma del método

C++
static bool Initialize(
    FString sdkKey, 
    FString sdkSecret,
    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("")
);

Ejemplo de implementación

Inicialice el SDK en su constructor de modo de juego con las credenciales de la API y las opciones de configuración.

C++
// Copyright Epic Games, Inc. All Rights Reserved.

#include "MyProject2GameMode.h"
#include "MyProject2Character.h"
#include "UObject/ConstructorHelpers.h"
#include "SingularSDKBPLibrary.h"

#if PLATFORM_IOS
#include "IOS/IOSPlatformMisc.h"
#import <UIKit/UIKit.h>
#endif

AMyProject2GameMode::AMyProject2GameMode()
    : Super()
{
#if PLATFORM_IOS
    // Log IDFV for iOS testing
    NSString *idfv = [[UIDevice currentDevice] identifierForVendor].UUIDString;
    if (idfv)
    {
        FString IDFVString = FString(idfv);
        UE_LOG(LogTemp, Log, TEXT("IDFV: %s"), *IDFVString);
    }
    else
    {
        UE_LOG(LogTemp, Warning, TEXT("Failed to retrieve IDFV"));
    }
#endif

    // Initialize Singular SDK
    bool Success = USingularSDKBPLibrary::Initialize(
        "YOUR_SDK_KEY",        // API Key from Singular dashboard
        "YOUR_SDK_SECRET",      // Secret from Singular dashboard
        60,                      // Session timeout in seconds
        TEXT(""),               // Custom user ID (optional)
        true,                    // Enable SKAdNetwork for iOS
        false,                   // Manual SKAdNetwork conversion management
        30,                      // Wait 30 seconds for ATT prompt
        false,                   // Disable OAID collection
        true,                    // Enable logging for debugging
        3,                       // Log level (0-5, higher = more verbose)
        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"));
    }

    // Set default pawn class
    static ConstructorHelpers::FClassFinder<APawn> PlayerPawnClassFinder(
        TEXT("/Game/FirstPerson/Blueprints/BP_FirstPersonCharacter")
    );
    DefaultPawnClass = PlayerPawnClassFinder.Class;
}

Parámetros de configuración

Parámetros requeridos

Estos parámetros son necesarios para la inicialización del SDK. Obtenga sus credenciales del panel de control de Singular.

  • sdkKey: Su clave del SDK de Singular desde"Developer Tools > SDK Integration > SDK Keys" en su cuenta de Singular.
  • sdkSecret: Su secreto del SDK de Singular desde la misma ubicación en su cuenta de Singular.

Importante: Mantenga sus credenciales SDK seguras y no las envíe a repositorios públicos de control de versiones.


Parámetros opcionales

Personalice el comportamiento del SDK con estos parámetros de configuración opcionales.

  • sessionTimeout (predeterminado: 60): Establezca un tiempo de espera de sesión personalizado en segundos. Tras este periodo de inactividad, se crea una nueva sesión cuando el usuario vuelve a la aplicación.
  • customUserId (Predeterminado: vacío): Establece un identificador de usuario personalizado en la inicialización. Más información sobre identificadores de usuario personalizados.
  • skAdNetworkEnabled (Predeterminado: true, sólo iOS): Habilite la compatibilidad con SKAdNetwork para la atribución de iOS. Consulte Introducción a la solución SKAdNetwork de Singular.
  • manualSkanConversionManagement (Predeterminado: false, sólo iOS): Establezca en true para gestionar manualmente los valores de conversión de SKAdNetwork en lugar de dejar que Singular los gestione automáticamente.
  • waitForTrackingAuthorizationWithTimeoutInterval(Predeterminado: 0, sólo iOS): Retrasa el envío de sesiones/eventos a Singular hasta que el usuario responde a la solicitud de ATT (App Tracking Transparency) o transcurre el tiempo de espera. Más información sobre la compatibilidad con ATT.
  • oaidCollection (Predeterminado: false, sólo Android): Establézcalo como true para recopilar el OAID (Open Anonymous Device Identifier) del dispositivo en dispositivos Android.
  • enableLogging (Por defecto: false): Habilitar el registro de depuración SDK para la solución de problemas. Debe desactivarse en las versiones de producción.
  • logLevel (Predeterminado: 0): Establece el nivel de detalle del registro (0-5). Los valores más altos producen registros más detallados.
  • clipboardAttribution (Predeterminado: false, sólo iOS): activa la lectura del portapapeles para la atribución de enlaces universales.
  • facebookAppId (por defecto: vacío): Establezca su ID de aplicación de Facebook para la integración de atribución de Facebook.
  • customSdid (Predeterminado: vacío): Establezca un ID de dispositivo singular personalizado en lugar de utilizar el identificador generado automáticamente.