Guía de integración del plugin de Unity V6: integración básica del SDK

De un vistazo: Integra e instala el SDK de AppsFlyer en aplicaciones de Android o iOS desarrolladas con Unity. Una vez completadas las tareas básicas de integración, tu aplicación estará lista para la atribución de instalaciones y la medición de eventos in-app. 

 Lectura relacionada:

Para obtener una imagen completa de la integración del plugin de Unity con tus aplicaciones, asegúrate de leer estos artículos:

Agregar el plugin a tu aplicación

 ¡Importante!

El SDK de Unity de AppsFlyer no es compatible con Unity Internal Build System.

Descargar el plugin de Unity de AppsFlyer

Descarga el último plugin de Unity de GitHub.

Instalar el plugin

Usa uno de los siguientes métodos de instalación.

Con EDM4USin EDM4U

El External DependencyManager for Unity (EDM4U) se distribuye de forma predeterminada por el plugin Unity de AppsFlyer. Esto facilita el proceso de integración resolviendo conflictos de dependencia entre tu plugin y otros plugins de tu proyecto.

Para instalar el plugin:

Agrega appsflyer-unity-plugin.v*.unitypackage para importar automáticamente todos los activos necesarios tanto para el plugin de AppsFlyer como para el EDM4U.

Configurar Android

Para configurar los permisos necesarios para Android:

Configura los siguientes permisos a AndroidManifest.xml:

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />

Las aplicaciones dirigidas al nivel 31 de la API (Android 12) deben agregar el siguiente permiso a AndroidManifest.xml para acceder al Identificador de publicidad de Android:

<uses-permission android:name="com.google.android.gms.permission.AD_ID" />

Inicializar el plugin

Esta sección describe cómo implementar e inicializar el plugin.

Recuperar la clave de desarrollador

admin.png

  • La clave es única e identifica la cuenta. En algunos casos hay una clave a nivel de aplicación. 
  • La clave de desarrollador es obligatoria.

Para obtener la clave de desarrollador:

  1. En AppsFlyer, ve a Configuración > Configuración de la aplicación. 
  2. Obtener la clave de desarrollador. 

Inicializar el plugin

Con el prefabricado de AppsFlyerIntegrar manualmente

Para inicializar el plugin usando prefab:

  1. Ve a Assets >AppsFlyer.
  2. Arrastra AppsFlyerObject.prefab a tu escena.

    prefab_en-us.png
  3. Configura los siguientes campos:

     Configuración Observaciones
    Clave de desarrollador Pega la clave de desarrollador que obtuviste anteriormente.
    ID de aplicación

    iOS: ingresa el ID de aplicación de iOS (sin prefijo de id).

    Android: déjalo en blanco.

    Obtener datos de conversión Si la aplicación implementa los enlaces profundos de AppsFlyer, configúralo como "true" (verdadero). El valor predeterminado es "false" (falso), lo que significa que los enlaces profundos NO están implementados de forma predeterminada.
    Es depurado

    Para ver los registros de depuración durante el desarrollo: configúralo como true.

    Nota: Asegúrate de desactivar (configurar en false) antes de lanzar la aplicación a producción.

  4. Actualiza el código en Assets > AppsFlyer > AppsFlyerObjectScript.cs con otras APIs disponibles.

Atribuir eventos in-app

Atribuye eventos in-app para medir KPI como los ingresos, el ROI y el valor de vida útil (LTV).

Los eventos in-app deben implementarse para atribuir los eventos del usuario. Los eventos pueden enviarse de varias maneras:

  • [Práctica recomendada] Enviar eventos a través de la aplicación como se describe en este artículo.
  • Para conocer métodos adicionales consulta la guía general sobre eventos in-app.

Para las aplicaciones que pertenecen a una vertical, por ejemplo, viajes, gaming, comercio electrónico, consulta la lista de eventos in-app recomendados por vertical.

Parámetros y nombres de eventos in-app

Para enviar eventos:

[Práctica recomendada] Usa nombres y parámetros de eventos por los siguientes motivos:

  • Nomenclatura estándar: AppsFlyer puede asignar automáticamente eventos a redes de autorreporte (SRN) como Facebook, Google y Twitter.
  • Compatibilidad con versiones anteriores: no tendrás problemas si AppsFlyer decide cambiar el nombre o parámetro del evento. La implementación es compatible con versiones anteriores.

Cómo registrar los ingresos

Reporta ingresos agregando el parámetro af_revenue a los eventos in-app.

  • Completa af_revenue con valores numéricos. Se permiten valores negativos. 
  • El parámetro af_revenue completa los contadores de ingresos y los campos de raw data de AppsFlyer. Esto permite a los marketers ver los ingresos en el panel de control.
  • Los ingresos pueden enviarse usando otros parámetros, pero la plataforma de AppsFlyer no los reconocerá como ingresos. Haz clic aquí para obtener más detalles. 
  • Los valores de los ingresos no pueden contener comas para separar, signos de divisas ni texto.
    Ejemplo de evento de ingresos: 1234.56

Práctica recomendada: Obtén información sobre la configuración, visualización y conversión de divisas.

 Requisitos de código de divisa al enviar eventos generadores de ingresos

  • Divisa predeterminada: USD
  • Usa un código ISO 4217 de 3 caracteres (a continuación se muestra un ejemplo).
  • Configura el código de divisa llamando a esta API:
    AppsFlyer.setCurrencyCode("ZZZ")

Ejemplo: evento de compra in-app con ingresos

Este evento de compra es por 200.12 euros. Para que los ingresos se reflejen en el panel de control, usa lo siguiente. 

System.Collections.Generic.Dictionary<string, string> purchaseEvent = new 
System.Collections.Generic.Dictionary<string, string> ();
purchaseEvent.Add(AFInAppEvents.CURRENCY, "EUR");
purchaseEvent.Add(AFInAppEvents.REVENUE, "200.12");
purchaseEvent.Add(AFInAppEvents.QUANTITY, "1");
purchaseEvent.Add(AFInAppEvents.CONTENT_TYPE, "category_a",);
AppsFlyer.sendEvent ("af_purchase", purchaseEvent);

Registro de ingresos negativos

Registra los ingresos negativos usando el signo menos.

  • El valor de ingresos está precedido por un signo menos.
  • El nombre del evento tiene un valor único, "cancel_purchase". Esto te permite identificar los eventos con ingresos negativos en los reportes de raw data y en el panel de control.

Ejemplo: un usuario de la aplicación recibe un reembolso o cancela una suscripción.

System.Collections.Generic.Dictionary<string, string> purchaseEvent = new 
System.Collections.Generic.Dictionary<string, string> ();
purchaseEvent.Add(AFInAppEvents.CURRENCY, "USD");
purchaseEvent.Add(AFInAppEvents.REVENUE, "-200");
purchaseEvent.Add(AFInAppEvents.QUANTITY, "1");
purchaseEvent.Add(AFInAppEvents.CONTENT_TYPE, "category_a");
AppsFlyer.sendEvent ("cancel_purchase", purchaseEvent);

Validación de compras in-app

El plugin proporciona verificación de servidor para las compras in-app.

Para validar una compra, instrucciones específicas del sistema operativo:

AndroidiOS
#if UNITY_ANDROID && !UNITY_EDITOR
AppsFlyerAndroid.validateAndSendInAppPurchase(
"publicKey",
"signature",
"purchaseData",
"price",
"currency",
null,
this);
#endif

Parámetros de método

Android iOS
Parámetro Descripción
String publicKey Clave pública de Google Developer Console.
String signature

Firma de transacción, devuelta por la API de Google cuando se finaliza la compra.

String purchaseData

Producto comprado en formato JSON, devuelto por la API de Google cuando se finaliza la compra.

String revenue Ingresos del evento in-app que deben notificarse a AppsFlyer.
String currency Divisa del evento in-app que debe notificarse a AppsFlyer.
Dictionary<String, String> additionalParameters

Parámetros adicionales de eventos in-app que aparecen en el campo event_value en el raw data del evento in-app.

 Nota

Llama a validateReceipt para generar automáticamente un evento in-app af_purchase.

No envíes un evento de compra después de validar la compra. Al hacerlo, se duplica la información sobre los eventos.

Consideraciones de los eventos in-app

  • Nombre del evento: máximo de 45 caracteres.
  • El Valor del evento: no debe superar los 1000 caracteres; si es más largo, puede que lo trunquemos.
  • Admite caracteres no ingleses para eventos in-app (y otras API)
  • Precios e ingresos:
    • Solo usa números y decimales como 5 o 5.2.
    • Se permiten hasta 5 números después del decimal. Por ejemplo, 5.12345

Ejemplos de atribución de eventos in-app

Puedes atribuir eventos in-app al llamar a sendEvent e incluir los parámetros de valor y nombre del evento.
Para más detalles, consulta Eventos in-app.

Ejemplo: cómo atribuir un evento de compra in-app.

Para ver una lista completa de fragmentos de código listos por segmento vertical, consulta nuestras guías de eventos in-app enriquecidos por segmento vertical.

System.Collections.Generic.Dictionary<string, string> purchaseEvent = new 
System.Collections.Generic.Dictionary<string, string> ();
purchaseEvent.Add(AFInAppEvents.CURRENCY, "USD");
purchaseEvent.Add(AFInAppEvents.REVENUE, "200");
purchaseEvent.Add(AFInAppEvents.QUANTITY, "2");
purchaseEvent.Add(AFInAppEvents.CONTENT_TYPE, "category_a");
purchaseEvent.Add(AFInAppEvents.CONTENT_ID, "092");
AppsFlyer.sendEvent (AFInAppEvents.PURCHASE, purchaseEvent);

Atribuir eventos in-app sin conexión

En ocasiones, los usuarios generan eventos in-app cuando no están conectados a Internet. AppsFlyer almacena en caché el evento y lo reporta cuando es posible. 

  • El plugin envía los eventos a los servidores de AppsFlyer y espera una respuesta.
  • Si el plugin no recibe una respuesta 200, el evento se almacena en el caché.
  • Una vez recibida la respuesta 200, el evento almacenado en el caché se vuelve a enviar al servidor.
  • Si hay múltiples eventos en el caché, se envían al servidor uno tras otro.

 Nota

El caché puede almacenar hasta 40 eventos.

  • Solo se guardan los primeros 40 eventos sin conexión.
  • Todo los eventos siguientes sin conexión se descartarán hasta la próxima respuesta 200.
  • En el reporte de raw data:
    • Hora del evento = cuando se envió un evento a AppsFlyer después de que el dispositivo vuelve a estar en línea.
    • No es la hora en que ocurrió el evento.

Enlaces profundos con OneLink

OneLink de AppsFlyer es la solución para la atribución multiplataforma: redireccionamiento y enlaces profundos.

Detección y redireccionamiento de dispositivos

OneLink:

  • Detecta el tipo de dispositivo (iOS y Android, escritorio, etc.) cuando un usuario hace clic.
  • Redirige al usuario al destino correspondiente: Google Play, tienda de aplicaciones de iOS, mercados fuera de la tienda o páginas web.

Para implementar enlaces de atribución multiplataforma y revisar los conceptos básicos de deep linking, consulta la guía de redireccionamiento de OneLink.

Enlaces profundos

Usa enlaces profundos para dirigir a los usuarios existentes a actividades específicas y contenido personalizado. 

El propietario y desarrollador de una aplicación deben trabajar juntos para configurar enlaces profundos con OneLink:

  • El propietario de la aplicación debe acceder al panel de control de AppsFlyer.
  • El desarrollador debe acceder a la aplicación.

Consulta nuestra guía sobre configuración de enlaces profundos con OneLink.

Enlaces profundos diferidos

Los enlaces profundos diferidos te permiten establecer enlaces profundos con usuarios nuevos y ofrecerles actividades específicas y contenido personalizado después del primer inicio de una instalación de la aplicación. 

Los enlaces profundos estándar también dirigen a los usuarios a actividades específicas y contenido personalizado, pero una aplicación ya debe estar instalada en el dispositivo del usuario.

Para configurar los enlaces profundos diferidos con OneLink:

  • El desarrollador debe acceder a la plataforma de AppsFlyer.
  • La configuración de la plataforma de AppsFlyer para enlaces profundos diferidos y estándar es la misma.
  • Se necesita implementar una lógica adicional en la aplicación a fin de establecer enlaces profundos con los usuarios y ofrecerles contenido personalizado después de que instalen e inicien la aplicación.

Consulta enlaces profundos diferidos para obtener más información.

Obtener datos de enlaces profundos

El plugin proporciona los datos de conversión o engagement después de cada evento de enlaces profundos o instalación. Puedes usar estos datos para personalizar el contenido o el comportamiento de la aplicación de manera programática.

Para recibir datos de enlaces profundos:

  • Implementa el callback onAppOpenAttribution (que aparece en la claseIAppsFlyerConversionData), solicitado por el plugin de AppsFlyer.
  • Los parámetros en el enlace de atribución/Onelink devueltos activan la apertura de la aplicación.
  • Analiza los valores y aplica la lógica para abrir la página de la aplicación pertinente.
public void onAppOpenAttribution(string attributionData)
{
AppsFlyer.AFLog("onAppOpenAttribution", attributionData);
Dictionary<string, object> attributionDataDictionary = AppsFlyer.CallbackStringToDictionary(attributionData);
// add direct deeplink logic here
}

Consulta datos de enlaces profundos para obtener más información.

Obtener datos de conversión

Para cada instalación se dispone de acceso a datos de atribución de usuarios en tiempo real. Úsalos para mejorar el engagement con el usuario proporcionando:

  • Contenido personalizado.
  • Enviar usuarios a actividades específicas dentro de una aplicación. Consulta Deferred Deep Linking en este artículo.

Obtener datos de conversión de AppsFlyer

Para obtener datos de conversión de AppsFlyer:

  1. Implementa IAppsFlyerConversionDatabase.
  2. Llama al método initSDK con esto como el último parámetro.
  3. Usa el método onConversionDataSuccess para redirigir al usuario. 

Consulta la referencia de API para onConversionDataSuccess.

using AppsFlyerSDK;

public class AppsFlyerObjectScript : MonoBehaviour , IAppsFlyerConversionData
{
    void Start()
    {
        /* AppsFlyer.setDebugLog(true); */
        AppsFlyer.initSDK("devkey", "appID", this);
        AppsFlyer.startSDK();
    }

    public void onConversionDataSuccess(string conversionData)
    {
        AppsFlyer.AFLog("onConversionDataSuccess", conversionData);
        Dictionary<string, object> conversionDataDictionary = AppsFlyer.CallbackStringToDictionary(conversionData);
        // add deferred deeplink logic here
    }

    public void onConversionDataFail(string error)
    {
        AppsFlyer.AFLog("onConversionDataFail", error);
    }

    public void onAppOpenAttribution(string attributionData)
    {
        AppsFlyer.AFLog("onAppOpenAttribution", attributionData);
        Dictionary<string, object> attributionDataDictionary = AppsFlyer.CallbackStringToDictionary(attributionData);
        // add direct deeplink logic here
    }

    public void onAppOpenAttributionFailure(string error)
    {
        AppsFlyer.AFLog("onAppOpenAttributionFailure", error);
    }
}

Probar las instalaciones

Agregar a la lista de permitidos el dispositivo de prueba

Agrega a la lista de permitidos el dispositivo de prueba.

Simular instalaciones

Simula instalaciones orgánicas y no orgánicas.

Simular una instalación orgánica

Las instalaciones orgánicas son instalaciones sin atribuir que, por lo general, son instalaciones que se hacen directamente desde las tiendas de aplicaciones. Para simular una instalación orgánica, sigue estas instrucciones.

Simular una instalación no orgánica

Las instalaciones no orgánicas son instalaciones atribuidas que, por lo general, son el resultado del engagement de un anuncio. Para simular una instalación no orgánica, sigue estas instrucciones

¿Fue útil este artículo?