Integración de SDK de AppsFlyer - Android

  • Los anunciantes
  • Desarrolladores

Android.pngVersión del SDK: 4.10.0 (Notas de la versión)

1. Resumen

El SDK de AppsFlyer proporciona la instalación de aplicaciones y la funcionalidad de registro de eventos. Hemos desarrollado un SDK que es altamente robusto (más de 7,000 millones de instalaciones SDK hasta la fecha), seguro, liviano y muy fácil de integrar.

Puedes registrar instalaciones, actualizaciones y sesiones, y también registrar eventos in-app adicionales más allá de las instalaciones de la aplicación (como compras in-app, niveles de juegos, etc.) para evaluar el ROI y los niveles de captación (engagement) de usuarios.

 ¡Importante!

El SDK de AppsFlyer para Android es compatible con las versiones de SO Android 2.3 en adelante.

El SDK también es compatible con plataformas Android no móviles como televisores inteligentes, incluido Fire TV de Amazon.

Para aplicaciones desarrolladas para Fire TV de Amazon, usa la solución de atribución fuera de la tienda de AppsFlyer.

Si estás migrando desde la versión V.3.3.x del SDK de AppsFlyer para Android Haz clic aquí.

 Consejo

2. Inicio rápido

2.1 Descarga de SDK

Para descargar el archivo jar más reciente del SDK de AppsFlyer para Android, haz clicaquí.

Para verificar la integridad de la descarga del SDK, haz clic aquí.

Para obtener más información sobre la aplicación de muestra de AppsFlyer, haz clic aquí.

2.2 Incorporar el SDK en la aplicación

Puedes integrar el SDK de AppsFlyer automáticamente usando Dependency Management de Gradle o manualmente como SDK.jar.

2.3 Agregar el SDK a tu proyecto

La forma más sencilla de integrar el SDK en tu proyecto es mediante el uso de Dependency Management de Gradle. La información de la versión la puedes encontrar aquí.

Si no estás utilizando Gradle, descárgalo y agrega AF-Android-SDK.jar a la ruta de clase del proyecto.

Agregando la Dependencia del SDK de AppsFlyer para Android:

  1.  Abre tu proyecto (o crea un nuevo proyecto), y luego abre your_app | build.gradle
  2.  Agrega esto al nivel del Módulo /app/build.gradle antes de las dependencias:
repositorios { 
  mavenCentral()
}
  1. Agregue la dependencia de implementación con la última versión del SDK de AppsFlyer.
  2. Hágalo a nivel de módulo /app/build.gradle después del repositorio:
dependencias

 ¡Importante!

  • La dependencia 'com.android.installreferrer:installreferrer:1.0' es necesaria para darle soporte a la API de referencia de Instalación de Google Play.  El uso de esta API mejora la precisión de atribución, protege contra las instalaciones fraudulentas y más.
  • La API es compatible con el SDK de AppsFlyer para Android versión 4.8.6 en adelante. Si estás actualizando con una versión anterior del SDK completa la integración de esta nueva dependencia actualizando el método de inicio del SDK.
  • Los desarrolladores que utilizan ProGuard y desean usar la nueva API de referencia de Google deben establecer la siguiente regla de ProGuard: -dontwarn com.android.installreferrer.
  • Los desarrolladores que no están utilizando gradle build ni aar y desean usar la nueva API de referencia de Google deben agregar manualmente el jar com.android.installreferrer como archivo y asegurarse de que se agregue el siguiente permiso: com.google.android.finsky.permission.BIND_GET_INSTALL_REFERRER_SERVICE

2.4 Configuración de los permisos requeridos

El AndroidManifest.xml debería incluir los siguientes permisos:

<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" />
<!-- Optional : -->
<uses-permission android:name="android.permission.READ_PHONE_STATE" />

2.5 Configuración de BroadcastReceiver en AndroidManifest.xml

Las siguientes dos opciones están disponibles para implementar el receptor de transmisión de referencia de instalación:

Uso de un Solo Receptor de Transmisión Uso de un Receptor de Transmisión Múltiple

Si no tienes un receptor escuchando en el INSTALL_REFERRER, en el AndroidManifest.xml, agrega el siguiente receptor dentro de la etiqueta de la aplicación:

<application>
...
...

	<receiver android:name="com.appsflyer.SingleInstallBroadcastReceiver" android:exported="true">
		<intent-filter>
			 <action android:name="com.android.vending.INSTALL_REFERRER" />
		 </intent-filter>
	</receiver>

...
...
</application>

 Consejo

Si recibe el error "Unresolved class SingleInstallBroadcastReceiver" después de agregar el receptor a AndroidManifest.xml, asegúrese de crear primero la aplicación.

3. Inicialización del SDK

La inicialización del SDK se completa en dos etapas. En la primera etapa, se suministra el DevKey junto con un conversionDataListener opcional. En la segunda etapa, la llamada a startTracking indica que se completaron todos los preparativos necesarios (p.ej. llamada a setCustomerUserId) y el SDK puede comenzar a registrar todos los eventos.

Para inicializar el SDK, agrega el siguiente código en tu función ApplicationonCreate() :

import com.appsflyer.AppsFlyerLib;
import com.appsflyer.AppsFlyerConversionListener;

public class AFApplication extends Application {
  private static final String AF_DEV_KEY = "";
  @Override
  public void onCreate() {
    super.onCreate();
    AppsFlyerConversionListener conversionDataListener = 
    new AppsFlyerConversionListener() {
      ...
    };
    AppsFlyerLib.getInstance().init(AF_DEV_KEY, conversionDataListener, getApplicationContext());
    AppsFlyerLib.getInstance().startTracking(this);  }
}

 Nota

Como alternativa, puedes retrasar la llamada a startTracking y colocarla dentro de cualquier función relevante de Activity OnCreate ().

 Consejo

La dependencia implementation 'com.android.installreferrer:installreferrer:1.0' y el getApplicationContext() que se pasan en el método AppsFlyerLib.getInstance().init(AF_DEV_KEY, getConversionListener(), getApplicationContext()); son requisitos esenciales para reportar la nueva API de referencia de Google a AppsFlyer.

Puedes acceder a tu clave de desarrollo desde el Panel de control de AppsFlyer en la sección de Configuración dentro de Configuración de la aplicación:

Esta API permite que AppsFlyer detecte instalaciones, sesiones y actualizaciones.

4. Registrar eventos in-app

Los eventos in-app brindan conocimientos sobre lo que está sucediendo en tu aplicación. Se recomienda tomarse el tiempo y definir los eventos que deseas medir para que puedas medir el ROI (Retorno de la Inversión) y el LTV (Valor del Tiempo de Vida).

El registro de eventos in-app se realiza invocando a trackEvent con el nombre del evento y los parámetros de valor. Consulta la documentación sobre eventos in-app para conocer más detalles.

 Nota

El nombre para el evento In-App no debe tener más de 45 caracteres. Los nombres de eventos con más de 45 caracteres no aparecerán en el panel de control, sino solo en las API de pull y push y de raw data.

//context - use getApplicationContext()
//eventName es cualquier cadena de texto para definir el nombre del evento.
//eventValues es un mapa de los parámetros del evento que componen un evento enriquecido.
public static void trackEvent(Context context, String eventName, Map eventValues);

Ejemplo:Evento in-app de nivel alcanzado

Map<String, Object> eventValue = new HashMap<String, Object>();
eventValue.put(AFInAppEventParameterName.LEVEL,9);
eventValue.put(AFInAppEventParameterName.SCORE,100);
AppsFlyerLib.getInstance().trackEvent(context,AFInAppEventType.LEVEL_ACHIEVED,eventValue);

Esto genera un evento de tipo af_level_achieved con los siguientes valores de evento:{af_level: 9, af_score: 100}

 Nota

  • AppsFlyer admite caracteres no ingleses con eventos in-app o con cualquier otra API de SDK a partir de la versión 4.8.1 del SDK de Android.
  • No agregues símbolos de divisas ni comas a las cifras, ya que estos no se podrán reconocer.

 Ejemplo de Uso

Map<String,Object> eventValues = new HashMap<>();
eventValues.put(AFInAppEventParameterName.REVENUE, 1200);
eventValues.put(AFInAppEventParameterName.CURRENCY, "JPY");
AppsFlyerLib.getInstance().trackEvent(this, AFInAppEventType.PURCHASE, eventValues);

record_in_app_event_android_studio.png

5. Establecimiento de enlaces profundos

 Consejo

Te recomendamos encarecidamente integrar las Conexiones Profundas en tu aplicación. Las Conexiones Profundas son una parte crucial de las campañas de retargeting y son altamente recomendables al realizar dichas campañas.

Para cada actividad que se pueda usar para conexiones profundas (incluyendo la actividad principal de ser necesario) agrega la siguiente línea a onCreate():

AppsFlyerLib.getInstance().sendDeepLinkData(this);

Las actividades pensadas para ser abiertas por conexiones profundas deberían tener el siguiente filtro de intención en las definiciones de actividad en el archivo de manifiesto. 

<intent-filter>
  <action android:name="android.intent.action.VIEW" />
  <category android:name="android.intent.category.DEFAULT" />
  <category android:name="android.intent.category.BROWSABLE" />
  <data android:scheme="yourUniquescheme" />
</intent-filter>


El
esquema configurado se correlaciona con el valor de af_dp que incluyes en tu enlace de atribución.

Para recibir tus datos de conexiones profundas, debes implementar el callback onAppOpenAttribution invocado por el SDK de AppsFlyer. Este devuelve los parámetros de Onelink/enlace de atribución usados para activar el inicio de la aplicación. Luego podrás procesar los valores y aplicar la lógica para abrir la página de la aplicación relevante.

void onAppOpenAttribution(Map<String,String> attributionData);

Para más información, haz clic aquí o vuelve a leer la sección de Obtener datos de conversión de este artículo.

6. Registrar los ingresos

Utiliza el parámetro de evento af_revenue (AFInAppEventParameterName.REVENUE) para contar los ingresos como parte de un evento in-app. Puedes llenarlo con cualquier valor numérico, positivo o negativo.

 Nota

af_revenue es el ÚNICO parámetro de evento que se cuenta en AppsFlyer como ingreso real en los datos sin procesar y en el panel de control. Para conocer más detalles, haga clic aquí.

Ejemplo: evento in-app con ingresos

Map<String, Object> eventValue = new HashMap<String, Object>();
eventValue.put(AFInAppEventParameterName.REVENUE,200);
eventValue.put(AFInAppEventParameterName.CONTENT_TYPE,"category_a");
eventValue.put(AFInAppEventParameterName.CONTENT_ID,"1234567");
eventValue.put(AFInAppEventParameterName.CURRENCY,"USD");
AppsFlyerLib.getInstance().trackEvent(getApplicationContext() , AFInAppEventType.PURCHASE , eventValue);

Esto genera un evento de tipo af_purchase con los siguientes valores de evento:

{af_content_id: “1234567”, af_content_type: “category_a”, af_revenue: 200, af_currency: “USD”}

El evento de compra anterior contiene un ingreso de $200 que aparece como ingreso en el panel de control.

 Nota

Establecer el código de moneda local del usuario para compras in-app: el código de moneda debe ser un código ISO 4217 de 3 caracteres (por defecto es USD). 

Puedes establecer el código de moneda para todos los eventos llamando al siguiente método: AppsFlyer.setCurrencyCode("GBP");

 ¡Importante!

No altere el valor de los ingresos bajo ningún concepto. No debe contener comas separadoras, signos de divisas o texto. Un evento de ingresos podría ser, por ejemplo, 1234.56.

Registro de ingresos negativos

Si necesitas registrar ingresos negativos, por ejemplo cuando un usuario cancela una compra o recibe un reembolso, puedes enviar ingresos negativos.

Map<String, Object> eventValue = new HashMap<String, Object>();
eventValue.put(AFInAppEventParameterName.REVENUE,-200);
eventValue.put(AFInAppEventParameterName.CONTENT_TYPE,"category_a");
eventValue.put(AFInAppEventParameterName.CONTENT_ID,"1234567");
eventValue.put(AFInAppEventParameterName.CURRENCY,"USD");
AppsFlyerLib.getInstance().trackEvent(getApplicationContext() , "cancel_purchase" , eventValue);

 Nota

Observe lo siguiente en el código anterior:

  1. El valor de ingresos está precedido por un signo de menos
  2. El nombre del evento tiene un valor único de "cancel_purchase" para permitirle identificar los eventos con ingresos negativos en el panel de control y en los informes de datos sin procesar.

7. Obtener datos de conversión

AppsFlyer te permite acceder a los datos de atribución del usuario en tiempo actual por cada nueva instalación, directamente desde el nivel del SDK. Al hacer esto, puedes ofrecer a los usuarios contenido personalizado o enviarlos a actividades específicas dentro de la aplicación, lo que puede mejorar enormemente su engagement con tu aplicación.

Para acceder a los datos de conversión de AppsFlyer desde el SDK de Android, implementa el ConversionDataListener:

public interface AppsFlyerConversionListener {
    void onInstallConversionDataLoaded(Map<String,String> conversionData);
    void onInstallConversionFailure(String errorMessage);
}

Ejemplo:

AppsFlyerLib.getInstance().registerConversionListener(this, new AppsFlyerConversionListener() {
 @Override
 public void onInstallConversionDataLoaded(Map<String, String> conversionData) {
   for (String attrName : conversionData.keySet()) {
     Log.d("LOG_TAG", "attribute: " + attrName + " = " + conversionData.get(attrName));
   }
 }
 @Override
 public void onInstallConversionFailure(String errorMessage) {
   Log.d("LOG_TAG", "error getting conversion data: " + errorMessage);
 }
 @Override
 public void onAppOpenAttribution(Map<String, String> conversionData) {
 }
 @Override
 public void onAttributionFailure(String errorMessage) {
   Log.d("LOG_TAG", "error onAttributionFailure : " + errorMessage);
 }
});

8. Identificadores de Usuario

Obtén el ID del dispositivo de AppsFlyer

El ID de dispositivo único de AppsFlyer se crea por cada nueva instalación de una aplicación. Usa la siguiente API para obtener el ID único de AppsFlyer:

public String getAppsFlyerUID(Context context);

Ejemplo de Uso:

String appsFlyerId = AppsFlyerLib.getInstance().getAppsFlyerUID(this);

Establece un ID de usuario de cliente

Establecer tu propio ID de cliente te permite hacer una referencia cruzada de tu propio ID único con el ID único de AppsFlyer y los ID de los otros dispositivos. Este ID está disponible en los reportes de CSV de AppsFlyer junto con las API de Postback para referencias cruzadas con tus ID internos.

Para configurar tu ID de usuario de cliente:

public void setCustomerUserId(String id);

 

Ejemplo de Uso:

AppsFlyerLib.getInstance().setCustomerUserId("myId");

 Nota

Se recomienda establecer tu ID de Usuario de Cliente lo antes posible, ya que solo está asociado con los eventos reportados después de su configuración. Si llamas a setCustomerUserId antes de llamar a startTracking, tendrás el ID de Usuario de Cliente en la exportación de raw data (datos sin procesar) para instalaciones y para eventos. Si se establece después, verás el valor solo para los eventos rastreados después de llamar a este método.

El ID de Usuario de Cliente también puede usarse para completar integraciones con plataformas de Analíticas como Mixpanel y Swrve.

 

Cómo obtener un ID de usuario de cliente:

Para no tener que volver a establecer el valor de ID de usuario de cliente después del primer ejecución, puedes verificar si su valor está vacío o no empleando lo siguiente

AppsFlyerProperties.getInstance().getString(AppsFlyerProperties.APP_USER_ID)

Para obtener más información sobre el ID de usuario de cliente, haz clic aquí.

ID de publicidad de Google

Desde la versión 4.8.0 del SDK, AppsFlyer recopila automáticamente el google_advertising_id. El requisito para recopilar el ID de Publicidad de Google solo es relevante para versiones 4.7.X e inferiores del SDK.

IMEI y ID de Android

De manera predeterminada, el SDK no recopila el IMEI ni el ID de Android si la versión del sistema operativo es superior a KitKat (4.4) y el dispositivo contiene Google Play Services (en versiones del SDK 4.8.8 o anteriores, la aplicación específica requería GPS). 

Para enviar explícitamente estos ID a AppsFlyer, los desarrolladores pueden usar las siguientes API y colocarlos antes del código startTracking:

AppsFlyerLib.getInstance().setImeiData("IMEI_DATA_HERE");
AppsFlyerLib.getInstance().setAndroidIdData("ANDROID_ID_DATA_HERE");

Si la aplicación NO contiene Google Play Services, el SDK recopila el IMEI y el ID de Android. Sin embargo, las aplicaciones con Google Play Services deberían evitar la recopilación del IMEI, ya que esto viola la política de Google Play.

Los desarrolladores pueden optar por no recopilar el IMEI y el ID de Android mediante el uso de estas API:

AppsFlyerLib.getInstance().setCollectIMEI(false);
AppsFlyerLib.getInstance().setCollectAndroidID(false);

 Advertencia

Al menos un identificador de dispositivo, GAID, ID de Android o IMEI, DEBE recopilarse para permitir la atribución adecuada.

9. Funciones opcionales

Medición de desinstalaciones

AppsFlyer le permite medir la tasa de desinstalaciones de usuarios provenientes de distintas fuentes.

Para completar este proceso de forma total y correcta, lea aquí.

Registro de notificaciones Push

AppsFlyer te permite medir notificaciones push como parte de una campaña de retargeting.

Para activar esta función, llama al siguiente método dentro del método onCreate de cada actividad que se lanzará tras hacer clic en la notificación:

AppsFlyerLib.getInstance().sendPushNotificationData(this);

La carga de datos debe incluir un objeto: af con la cadena clave-valor relevante:

Ejemplo:

{ 
  "data":{ 
   "score":"5x1",
   "time":"15:10",
   "af":{ 
     "c":"test_campaign",
     "is_retargeting":"true",
     "pid":"push_provider_int"
   }
  }
}
{

{ 
  "data":{ 
   "score":"5x1",
   "time":"15:10",
   "click_action":"com.example.someAction",
   "af":{ 
     "c":"test_campaign",
     "is_retargeting":"true",
     "pid":"push_provider_int"
   }
  }
}

 Nota

Para obtener más información sobre la medición de notificaciones push, lee aquí.

Atribución de la promoción cruzada

AppsFlyer te permite registrar y atribuir las instalaciones que se originan a partir de una promoción cruzada de una de tus aplicaciones desde dentro de la aplicación actual que tiene el usuario. La promoción cruzada de aplicaciones puede ser un factor de crecimiento muy importante para impulsar instalaciones de tus aplicaciones.Para conocer más detalles, lee el artículo sobre atribución de promociones cruzadas aquí.

Atribución de invitaciones de usuarios

AppsFlyer te permite registrar y atribuir instalaciones que se originan a partir de invitaciones de usuarios dentro de tu aplicación. Permitir que tus usuarios existentes inviten a sus amigos y contactos a ser usuarios nuevos de tu aplicación puede ser un factor clave para el crecimiento de tu aplicación.

Para conocer más detalles, lee el artículo sobre atribución de invitaciones de usuarios aquí.

Definición de código de moneda

Puedes usar la siguiente API para establecer un código de moneda global, además de códigos de moneda específicos que se pueden usar como parte de cada evento in-app enviado a AppsFlyer. El código de moneda global se usa cuando af_currency

AFInAppEventParameterName.CURRENCY

no es enviado como parte de un evento in-app.

USD es el valor predeterminado. Puedes encontrar códigos de moneda ISO aceptables aquí .

Usa la siguiente API para configurar el código de moneda:

public void setCurrencyCode(String currencyCode);

Ejemplo de Uso:

AppsFlyerLib.getInstance().setCurrencyCode("GBP");

Validación de compras in-app

El SDK de AppsFlyer proporciona verificación de servidor para las compras in-app. Para activar la validación de compras, llama al método validateAndTrackInAppPurchase dentro de la función onActivityResult.

Esta llamada genera automáticamente un evento in-app de tipo af_purchase.

public static void validateAndTrackInAppPurchase(Context context, 
String publicKey, String signature, String purchaseData, 
String price, String currency, HashMap<String, String> additionalParameters);

Esta llamada tiene dos bloques de callback: uno para "Éxito" y otro para "Falla" (por cualquier motivo, incluyendo falla de validación).

AppsFlyerLib.getInstance().registerValidatorListener(this,new
   AppsFlyerInAppPurchaseValidatorListener() {
     public void onValidateInApp() {
       Log.d(TAG, "Purchase validated successfully");
     }
     public void onValidateInAppFailure(String error) {
       Log.d(TAG, "onValidateInAppFailure called: " + error);
     }
});

Ejemplo de Uso:

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
  if (requestCode == 1001) {
    String purchaseData = data.getStringExtra("INAPP_PURCHASE_DATA");
    String dataSignature = data.getStringExtra("INAPP_DATA_SIGNATURE");
    if (resultCode == RESULT_OK) {
      HashMap<String,String> event = new HashMap<>();
      event.put(AFInAppEventParameterName.PRICE,"9");
      AppsFlyerLib.getInstance().validateAndTrackInAppPurchase(getApplicationContext(),publicKey, dataSignature, purchaseData, "3.00", "ILS", event);
    }
  }
} 

 Nota

Una llamada a validateAndTrackInAppPurchase automáticamente genera un evento in-app af_purchase. No es necesario enviarse el evento a sí mismo.

Anonimizar Datos de Usuarios

AppsFlyer te ofrece un método para anonimizar identificadores de usuarios específicos en las analíticas de AppsFlyer. Este método cumple con los últimos requisitos de privacidad y con las políticas de datos y privacidad de Facebook. El valor predeterminado es NO, lo que significa que no se efectuará la anonimización de forma predeterminada.

Usa esta API durante la Inicialización del SDK para anonimizar explícitamente las instalaciones, los eventos y las sesiones de un usuario:

public void setDeviceTrackingDisabled(boolean isDisabled);

Ejemplo de Uso:

AppsFlyerLib.getInstance().setDeviceTrackingDisabled(true);

Puedes cancelar la anonimización  llamando a deviceTrackingDisabled de nuevo, configurado como falso.

 Advertencia

Anonimizar a los usuarios afecta SEVERAMENTE tu información de atribución.
Usa esta opción SOLO para regiones donde la ley te impida recopilar información de tus usuarios.

Tiempo Personalizado Entre Sesiones

De manera predeterminada, deben pasar por lo menos 5 segundos entre 2 inicios de aplicaciones para que cuenten como 2 sesiones separadas (más información acerca del recuento de sesiones).
Sin embargo, puedes usar la siguiente API para establecer tu valor personalizado para el tiempo mínimo requerido entre sesiones:
AppsFlyerLib.setMinTimeBetweenSessions(int seconds);

Ten en cuenta que establecer un valor alto para el tiempo personalizado entre inicios podría afectar considerablemente a las API que dependen de los datos de sesión, como los enlaces profundos.

Sesiones de segundo plano para aplicaciones de utilidad

Si tu aplicación es una aplicación de utilidad que se ejecuta en segundo plano, puedes usar esta API en el onCreate () de tu actividad -

public void reportTrackSession (Context context);

Ejemplo de Uso:

AppsFlyerLib.getInstance (). ReportTrackSession (context);

Cómo atribuir aplicaciones fuera de las tiendas

 Nota

Google Play es la tienda predeterminada. Si publicas tu aplicación solo en Google Play, omite esta sección.

Para registrar las instalaciones fuera de Google Play, configura el canal/tienda en AndroidManifest.xml de la aplicación con un canal único o cualquier nombre de tienda para cada APK. El valor CANAL distingue entre mayúsculas y minúsculas.

Ejemplos:

<meta-data android:name="CHANNEL" android:value="Amazon" />
<meta-data android:name="CHANNEL" android:value="Standalone"/>
<meta-data android:name="CHANNEL" android:value="Verizon" />

 Nota

Debes configurar el valor CANAL en el panel de control de AppsFlyer al configurar la aplicación.

Coloca la etiqueta de metadatos dentro de la etiqueta <application>.

Para conocer más detalles sobre cómo registrar las instalaciones para aplicaciones fuera de la tienda, lee esto.

Optar por la exclusión

En algunos casos extremos, tal vez quiera desactivar el rastreo del SDK para cumplimiento con disposiciones reglamentarias o asociadas a la privacidad. Puede hacerlo con la API isStopTracking. Una vez invocada esta API, nuestro SDK ya no se comunicará con nuestros servidores y dejará de funcionar.

AppsFlyerLib.getInstance().stopTracking(true, context);

Existen varias situaciones diferentes para que un usuario opte por la exclusión. Es muy recomendable que sigas las instrucciones exactas para la situación correspondiente a tu aplicación.

En cualquier evento, se puede reactivar el SDK llamando a la misma API y pasando un valor falso.

 Importante

No llames a trackAppLaunch si isStopTracking está configurado como verdadero.

Para volver a iniciar las funciones del SDK una vez que stopTracking esté configurado como falso, usa la siguiente API del SDK:

AppsFlyerLib.getInstance().trackAppLaunch(getApplicationContext(), AF_DEV_KEY);

 Advertencia

Utiliza la API stopTracking solo en casos en los que quieras ignorar por completo estas funciones del SDK del usuario. La utilización de esta API afecta GRAVEMENTE tus mecanismos de atribución, recopilación de datos y establecimiento de enlaces profundos.

Retrasar la inicialización del SDK para customerUserID

Es posible retrasar la inicialización del SDK hasta que se configure el customerUserID. Esta función garantiza que el SDK no comience a funcionar hasta que se haya provisto el customerUserID. Si se utiliza esta API, todos los eventos in-app y cualquier otra llamada API del SDK se descartarán hasta que se suministre y se registre el customerUserID.

Para indicar que el SDK debe retrasar la inicialización del ID de usuario de cliente, llama a

AppsFlyerLib.getInstance().waitForCustomerUserId(true);

inmediatamente antes del método init(). El resto de la inicialización del SDK debe mantenerse sin cambios.

Una vez proporcionado el customerUserID, llama a

AppsFlyerLib.getInstance().setCustomerIdAndTrack("customer_id", this);

Para proporcionar al SDK el ID de usuario de cliente correspondiente e iniciar el SDK.

El código debería verse como se muestra a continuación:
public class AFApplication extends Application {
  private static final String AF_DEV_KEY = ;
  @Override
  public void onCreate() {
    super.onCreate();
    AppsFlyerConversionListener conversionDataListener = 
    new AppsFlyerConversionListener() {
      ...
    };
    AppsFlyerLib.getInstance().waitForCustomerUserId(true); 
    AppsFlyerLib.getInstance().init(AF_DEV_KEY, getConversionListener(), getApplicationContext());
    AppsFlyerLib.getInstance().startTracking(this);
    // Do your magic to get the customerUserID
    // ...
    // any AppsFlyer SDK code invoked here will be discarded
   //Call the following API once the customerUserID is available:
 AppsFlyerLib.getInstance().setCustomerIdAndTrack("customer_id", this);
  }
}

 Advertencia

Utiliza esta API solo cuando sea adecuado para tu lógica de negocios. El uso de esta API aumenta las probabilidades de discrepancias y podría hacer que la aplicación quede más expuesta a fraudes.

Configuración de datos personalizados adicionales

La API setAdditionalData es necesaria para la integración a nivel del SDK con varias plataformas de partners externos, incluidas Segment, Adobe y Urban Airship. Usa esta API solo si el artículo de integración de la plataforma indica específicamente que es necesaria la API setAdditionalData.
A continuación, se muestra un ejemplo de código para implementar setAdditionalData en Android:

HashMap<String,Object> CustomDataMap = new HashMap<>();
CustomDataMap.put("custom_param_1","value_of_param_1");
AppsFlyerLib.getInstance().setAdditionalData(CustomDataMap);

Atribución de Aplicaciones Preinstaladas

Hay varios métodos disponibles para la atribución de aplicaciones preinstaladas en Android.

Para conocer más detalles, haz clic aquí.

Establecer un Agente de escucha de solicitudes de rastreo

Si quieres recibir una confirmación de que los servidores de AppsFlyer recibieron la solicitud de rastreo correctamente, es posible implementar el agente de escucha AppsFlyerTrackingRequestListener.

El método de devolución de llamada onTrackingRequestSuccess() se invoca para cada respuesta 200 a una solicitud de atribución por parte del SDK.

El método de devolución de llamada onTrackingRequestFailure(String error) se invoca para cualquier otra respuesta y devuelve la respuesta como la cadena de error.

Ejemplo de implementación

AppsFlyerLib.getInstance().startTracking(this.getApplication(),"devKey", myListener());
private AppsFlyerTrackingRequestListener myListener() {  
  return new AppsFlyerTrackingRequestListener() { 
    @Override public void onTrackingRequestSuccess() { 
      Log.d("Debug", "Got 200 response from server");  
    }  @Override public void onTrackingRequestFailure(String error) { 
      Log.d("Debug", error); 
      }  
    }; 
  }

Resolución de URL encapsuladas de enlaces profundos

Si usas OneLink que sean compatibles con enlaces de aplicaciones de Android y los encapsulas con un enlace universal de terceros, puedes usar la API setResolveDeepLinkURLs para notificar al SDK de AppsFlyer qué dominios click que invocan la aplicación debe resolver el SDK y obtener el OneLink resultante extraído de ellos. Esto te permitirá mantener las conexiones profundas y la atribución mientras encapsula el OneLink con un enlace universal de terceros. Asegúrate de llamar a esta API antes de la inicialización de SDK.

AppsFlyerLib.getInstance().setResolveDeepLinkURLs("example.com", "click.example.com");

10. Probar la integración de SDK

Para probar la integración del SDK antes y después de enviarlo a la Tienda de Google Play, haz clic aquí.

Ahora puedes comenzar a medir las fuentes de medios con las que trabajas.

11. Problemas Conocidos

Si estás utilizando ProGuard y encuentras  una advertencia sobre nuestra clase AFKeystoreWrapper, agrega el siguiente código a tu archivo de reglas de ProGuard:

-keep class com.appsflyer.** { *; }
¿Fue útil este artículo?
Usuarios a los que les pareció útil: 20 de 25

Comentarios

0 comentarios

Inicie sesión para dejar un comentario.

Contenido de la página: