SDK de Unity - Seguimiento de eventos dentro de la aplicación

Documento

Seguimiento de eventos dentro de la aplicación

Realice un seguimiento de los eventos dentro de la aplicación para analizar el rendimiento de la campaña y medir los indicadores clave de rendimiento (KPI), como inicios de sesión de usuarios, registros, finalización de tutoriales o hitos de progresión.

Eventos estándar y atributos

Uso de eventos estándar

Singular admite eventosestándar que son reconocidos por las redes publicitarias para la generación de informes y la optimización. Utilice nombres de eventos estándar siempre que sea posible para un reconocimiento automático y una configuración simplificada.

Su equipo de UA, marketing o comercial debe compilar la lista de eventos basándose en los KPI de marketing de su organización. Consulte la guía How to Track In-App Events: Guide For Singular AttributionCustomers para la planificación.

Cada evento admite varios atributos. Consulte los atributos estándar recomendados por eventopara obtener detalles de implementación.


Envío de eventos

Directrices de implementación de eventos

Envíe eventos a Singular utilizando el método Event() con atributos opcionales para datos enriquecidos.

  • Eventos estándar: Utilice el nombre de Unidad del eventode la lista de eventos estándar, por ejemplo, Events.sngLogin
  • Eventos personalizados: Para eventos exclusivos de su aplicación que no coincidan con los eventos estándar, utilice cualquier cadena descriptiva que cumpla con las limitaciones de caracteres

Limitacionesde eventospersonalizados:

  • Idioma: Pasa los nombres y atributos de los eventos en inglés para garantizar la compatibilidad con socios de terceros y soluciones analíticas
  • Nombres de eventos: Limitados a 32 caracteres ASCII. Las cadenas no ASCII deben tener menos de 32 bytes cuando se convierten a UTF-8
  • Atributos y valores: Limitado a 500 caracteres ASCII

Método de eventos

Notificar eventos de usuario con o sin información adicional utilizando argumentos variables o formato Diccionario.

Firmas de métodos:

public static void Event(string name)
public static void Event(string name, params object[] args)
public static void Event(Dictionary<string, object> args, string name)

Nota: Cuando se utiliza la firma params object[] args, la lista args debe contener un número par de elementos (pares clave-valor) o el evento será rechazado. Al pasar diccionarios, los valores deben ser de uno de estos tipos: string, int, long, float, double, null, ArrayList, Dictionary<string, object>.

Ejemplos de uso

C#
// Example 1: Standard event without attributes
SingularSDK.Event(Events.sngLogin);

// Example 2: Standard event with recommended attributes (key-value pairs)
SingularSDK.Event(Events.sngTutorialComplete,
    Attributes.sngAttrContent, "Unity Basics",
    Attributes.sngAttrContentId, 32,
    Attributes.sngAttrContentType, "video",
    Attributes.sngAttrSuccess, "yes"
);

// Example 3: Standard event with attributes using Dictionary
Dictionary<string, object> attributes = new Dictionary<string, object>()
{
    [Attributes.sngAttrContent] = "Unity Basics",
    [Attributes.sngAttrContentId] = 32,
    [Attributes.sngAttrContentType] = "video",
    [Attributes.sngAttrSuccess] = "yes"
};
SingularSDK.Event(attributes, Events.sngTutorialComplete);

// Example 4: Custom event without attributes
SingularSDK.Event("SignUp");

// Example 5: Custom event with custom attributes
SingularSDK.Event("Bonus Points Earned", "Points", 500, "Level", 5);

Seguimiento de los ingresos desde la aplicación

Realice un seguimiento de los ingresos procedentes de compras dentro de la aplicación (IAP), suscripciones y fuentes de ingresos personalizadas para medir el rendimiento de la campaña y el retorno de la inversión publicitaria (ROAS).

Los datos de ingresos fluyen a través de tres canales:

  • Informes interactivos: Visualiza las métricas de ingresos en el panel de control de Singular.
  • Registros de exportación: Acceso a datos ETL detallados para análisis personalizados
  • Postbacks en tiempo real: Envíe eventos de ingresos a plataformas externas

Limitacionesde eventos de ingresos:

  • Nombres de eventos: Los nombres de eventos de ingresos personalizados están limitados a 32 caracteres ASCII (o 32 bytes para no ASCII cuando se convierten a UTF-8)
  • Atributos: Los nombres y valores de atributos de eventos están limitados a 500 caracteres ASCII
  • Códigos de moneda: Deben ser TODO MAYÚSCULAS y seguir la norma ISO 4217de tres letras (por ejemplo, USD, EUR, INR)

Nota: Los ingresos en distintas divisas se convierten automáticamente a la divisa preferida de su organización establecida en su cuenta de Singular.

Prácticas recomendadas

  • Nombres estándar: Utilice la convención de nomenclatura estándar de eventos y atributosde Singular.
  • Idioma: Envíe nombres de eventos de ingresos personalizados en inglés para mejorar la compatibilidad de postback de la red publicitaria
  • Importes distintos de cero: Sólo envía eventos de ingresos cuando el importe es mayor o menor que 0

Integración con Unity IAP

Compras dentro de la aplicación con Unity IAP

Pase el objeto de compra o pedido IAP de Unity al método InAppPurchase() para obtener informes enriquecidos y validación de transacciones.

Ventajas:

  • Datos enriquecidos: Singular recibe detalles completos de la transacción para informes exhaustivos
  • Prevención del fraude: Los recibos de transacciones permiten la validación para combatir el fraude dentro de la aplicación.

Compatibilidad con la versión de Unity IAP:

  • Unity IAP v5: Utiliza la nueva API de compras de Unitycon Google Play Billing Library 7+. Compatible con Unity 2021.3 LTS y posteriores. Utiliza los métodos de InAppPurchase(Order)
  • Unity IAP v4: Utiliza la antigua Unity IAP APIcon Google Play Billing Library 6. Compatible con Unity 2018.4 LTS hasta 2020.3 LTS. Utiliza los métodos de InAppPurchase(Product)

Método InAppPurchase (Unity IAP v5)

Envía eventos IAP utilizando el objeto Order de Unity IAP v5 para obtener validación automática y datos enriquecidos.

Firmas de métodos:

public static void InAppPurchase(Order order)
public static void InAppPurchase(Order order, Dictionary<string, object> attributes)
public static void InAppPurchase(Order order, bool isRestored)
public static void InAppPurchase(Order order, string eventName, Dictionary<string, object> attributes)

Ejemplos de uso

C#
// Example 1: IAP with order object only
SingularSDK.InAppPurchase(order);

// Example 2: IAP with order and additional attributes
Dictionary<string, object> attr = new Dictionary<string, object>()
{
    ["promo_code"] = "SUMMER2025",
    ["user_tier"] = "premium"
};
SingularSDK.InAppPurchase(order, attr);

// Example 3: IAP with restored transaction flag
SingularSDK.InAppPurchase(order, true);

// Example 4: IAP with custom event name and attributes
Dictionary<string, object> attr = new Dictionary<string, object>()
{
    ["subscription_tier"] = "gold",
    ["billing_period"] = "monthly"
};
SingularSDK.InAppPurchase(order, "PremiumSubscription", attr);

Método InAppPurchase (Unity IAP v4)

Envía eventos IAP utilizando el objeto Product de Unity IAP v4 para validación automática y datos enriquecidos.

Firmas de métodos:

public static void InAppPurchase(Product product, Dictionary<string, object> attributes, bool isRestored = false)
public static void InAppPurchase(string eventName, Product product, Dictionary<string, object> attributes, bool isRestored = false)
public static void InAppPurchase(IEnumerable<Product> products, Dictionary<string, object> attributes, bool isRestored = false)
public static void InAppPurchase(string eventName, IEnumerable<Product> products, Dictionary<string, object> attributes, bool isRestored = false)

Ejemplos de uso

C#
// Example 1: IAP with single product, no extra attributes
SingularSDK.InAppPurchase(myProduct, null);

// Example 2: IAP with single product and attributes
Dictionary<string, object> attr = new Dictionary<string, object>()
{
    ["promo_code"] = "SUMMER2025",
    ["user_tier"] = "premium"
};
SingularSDK.InAppPurchase(myProduct, attr);

// Example 3: IAP with custom event name
SingularSDK.InAppPurchase("PremiumUpgrade", myProduct, null);

// Example 4: IAP with list of products
SingularSDK.InAppPurchase(myProductList, null);

// Example 5: IAP with list of products and custom event name
SingularSDK.InAppPurchase("BundlePurchase", myProductList, null);

Ingresos personalizados sin validación de compra

Seguimiento Manual de Ingresos

Realice un seguimiento de los ingresos pasando la divisa, el importe y los detalles opcionales del producto sin el objeto Compra u Orden. Tenga en cuenta que este método no proporciona recibos de transacción para su validación.

Importante: Cuando se utilizan estos métodos, Singular no puede validar transacciones. Recomendamos encarecidamente utilizar los métodos de Unity IAP descritos anteriormente siempre que sea posible.


Método de ingresos

Envía eventos de ingresos con moneda, importe y detalles opcionales del producto.

Método Firmas:

public static void Revenue(string currency, double amount)
public static void Revenue(string currency, double amount, string productSKU, string productName, string productCategory, int productQuantity, double productPrice)
public static void Revenue(string currency, double amount, Dictionary<string, object> attributes)

Ejemplos de uso

C#
// Example 1: Revenue without product details
SingularSDK.Revenue("USD", 1.99);

// Example 2: Revenue with product details
SingularSDK.Revenue("USD", 4.99, "coin_package_abc123", "Coin Pack 5", "Bundles", 1, 4.99);

// Example 3: Revenue with attributes dictionary
Dictionary<string, object> attributes = new Dictionary<string, object>()
{
    ["productSKU"] = "coin_package_abc123",
    ["productName"] = "Coin Pack 5",
    ["productCategory"] = "Bundles",
    ["productQuantity"] = 2,
    ["productPrice"] = 4.99,
    ["transaction_id"] = "T12345"
};
SingularSDK.Revenue("USD", 9.98, attributes);

Método CustomRevenue

Envía eventos de ingresos personalizados con un nombre de evento especificado, divisa, importe y atributos de transacción opcionales.

Firmas de métodos:

public static void CustomRevenue(string eventName, string currency, double amount)
public static void CustomRevenue(string eventName, string currency, double amount, string productSKU, string productName, string productCategory, int productQuantity, double productPrice)
public static void CustomRevenue(string eventName, string currency, double amount, Dictionary<string, object> attributes)

Ejemplos de uso

C#
// Example 1: Custom revenue without product details
SingularSDK.CustomRevenue("MyCustomRevenue", "USD", 9.99);

// Example 2: Custom revenue with product details
SingularSDK.CustomRevenue("MyCustomRevenue", "USD", 50.50, "abc123", "Premium Item", "Virtual Goods", 2, 25.50);

// Example 3: Custom revenue with attributes dictionary
Dictionary<string, object> attributes = new Dictionary<string, object>()
{
    ["productSKU"] = "premium_bundle_xyz",
    ["productName"] = "Premium Bundle",
    ["productCategory"] = "Bundles",
    ["productQuantity"] = 1,
    ["productPrice"] = 99.99,
    ["discount_applied"] = true
};
SingularSDK.CustomRevenue("PremiumBundlePurchase", "USD", 99.99, attributes);

Seguimiento de Eventos Híbrido (Avanzado)

Envíe todos los eventos e ingresos a través del SDK de Singular integrado en su aplicación para una atribución óptima. Sin embargo, Singular puede recopilar eventos de otras fuentes cuando sea necesario.

Los eventos enviados fuera del SDK de Singular deben cumplir con la documentación de eventos de servidor a servidor de Singular y proporcionar identificadores de dispositivo coincidentes para una atribución correcta.

Importante:

Se producen discrepancias cuando los identificadores de dispositivo en las solicitudes de servidor a servidor no coinciden con los identificadores registrados por Singular SDK:

  • Eventos tempranos: Si un evento llega antes de que Singular SDK registre el identificador del dispositivo, el evento se convierte en la "primera sesión" de un dispositivo desconocido, lo que da lugar a una atribución orgánica.
  • Identificadores no coincidentes: Si Singular SDK registra un identificador de dispositivo diferente al de la solicitud de servidor a servidor, el evento se atribuirá incorrectamente.

Guías de seguimiento de eventos híbridos

Envío de eventos desde un servidor interno

Recopile datos de ingresos desde su servidor interno para analizar el rendimiento de la campaña y el ROI.

Requisitos:

  • Capturar identificadores de dispositivos: Durante los eventos de registro o inicio de sesión dentro de la aplicación, capture y pase los identificadores de dispositivo y, a continuación, almacene estos datos con el ID de usuario en su servidor. Actualice los identificadores cuando los usuarios generen nuevas sesiones de aplicación para garantizar una atribución correcta.
  • Identificadores específicos de la plataforma: Envíe eventos del lado del servidor con el identificador de dispositivo que coincida con la plataforma (por ejemplo, IDFA o IDFV para dispositivos iOS, GAID para dispositivos Android).
  • Actualizaciones en tiempo real: Utilice el mecanismo de postback de BI interno de Singular para enviar eventos en tiempo real a su endpoint. Consulte las preguntas frecuentes sobre postback de BIinterno
  • Detalles de implementación: Revise la sección "Seguimiento de ingresos" en la guía de integración de servidor a servidor

Envío de Eventos desde un Proveedor de Ingresos

Integre proveedores de ingresos de terceros como RevenueCat o adapty para enviar ingresos por compras y suscripciones a Singular.

Proveedores compatibles:


Envío de eventos desde Segment

Habilite Segment para enviar eventos a Singular en paralelo con el SDK de Singular añadiendo un destino "Cloud-Mode" en Segment.

Siga la guía de implementación Integración Singular-Segment para obtener instrucciones detalladas de configuración.