Referencia de instalación de Meta

En este documento, se muestra cómo usar la referencia de instalación de Meta en tu app para Android a fin de obtener metadatos para las campañas publicitarias de Facebook, Instagram y Audience Network que tienen por objetivo que se instale la app. Mientras que la referencia de instalación de Google Play (GPIR) solo proporciona información sobre las instalaciones mediante clic en una misma sesión, la referencia de instalación de Meta incluye datos sobre lo siguiente:

  • instalaciones mediante visualización (VT)
  • instalaciones mediante clic (CT)
  • instalaciones mediante clic en sesiones múltiples

Hay dos opciones para configurar la referencia de instalación de Meta para tus campañas de apps de Android: integración directa o integración asistida a través de tu socios de medición de dispositivos móviles (MMP).

Opción 1: Integración directa

Antes de empezar

Para empezar, necesitarás lo siguiente:

Paso 1: Agregar las apps de Meta

Agrega los elementos queries de las apps de Facebook, Instagram y Facebook Lite en tu archivo AndroidManifest.xml para permitir que tu app obtenga datos de atribución de referencia de estas apps de Meta.

<queries>
  <package android:name="com.facebook.katana" />
</queries>

<queries>
  <package android:name="com.instagram.android" />
</queries>

<queries>
  <package android:name="com.facebook.lite" />
</queries>

Paso 2: Implementar la API de ContentProvider

Agrega el código de ContentProvider para obtener datos de atribución de referencia de las apps de Facebook e Instagram. Te conviene obtener estos datos la primera vez que inicies la app.

Cursor c = null;
try {
    String [] projection = { "install_referrer", "is_ct", "actual_timestamp", };
    Uri providerUri = null;
    
    // This IF statement queries the facebook app first.
    // To query from the instagram app first, change the sequence of the IF statement

    if (context.getPackageManager().resolveContentProvider(
           "com.facebook.katana.provider.InstallReferrerProvider", 0) != null) {
       providerUri = Uri.parse(
           "content://com.facebook.katana.provider.InstallReferrerProvider/" + FB_APP_ID);
    } else if (context.getPackageManager().resolveContentProvider(
           "com.instagram.contentprovider.InstallReferrerProvider", 0) != null) {
       providerUri = Uri.parse(
           "content://com.instagram.contentprovider.InstallReferrerProvider/" + FB_APP_ID);
    } else if (context.getPackageManager().resolveContentProvider(
           "com.facebook.lite.provider.InstallReferrerProvider", 0) != null) {
       providerUri = Uri.parse("content://com.facebook.lite.provider.InstallReferrerProvider/" + FB_APP_ID);
    } else {
       return null;
    }

    c = context.getContentResolver().query(providerUri, projection, null, null, null);
    if (c == null || !c.moveToFirst()) {
       return null;
    }

    int installReferrerIndex = c.getColumnIndex("install_referrer");
    int timestampIndex = c.getColumnIndex("actual_timestamp");
    int isCTIndex = c.getColumnIndex("is_ct");
    String installReferrer = c.getString(installReferrerIndex); // serialized and encrypted attribution details

    // TODO: 
    // 1. deserialize installReferrer (convert String to JSON)
    // 2. decrypt attribution details in install_referrer.utm_content.source.data using 
    // key: GPIR decryption key 
    // nonce: retrieve from installReferrer.utm_content.source.nonce
    // data: retrieve from installReferrer.utm_content.source.data
    // decrypt data 

    long actualTimestamp = c.getLong(timestampIndex); // timestamp in seconds for click/impression
     int isCT = c.getInt(isCTIndex); // VT or CT, 0 = VT, 1 = CT
           
} catch (Exception e) {
    return null;
} finally {
    if (c != null) {
        c.close();
    }
}

Los pasos para deserializar y descifrar los datos son similares a los que se encuentran en la guía de la referencia de instalación.

La estructura de datos recibida como respuesta de la install_referrer tras la deserialización de cada app de Meta incluirá lo siguiente:

  • actual_timestamp: el valor es la marca de tiempo en segundos cuando se produjo el clic o la impresión.
  • is_ct: los valores pueden ser 1, que representa un clic, o 0, que representa una impresión.
  • install_referrer: el valor representa los datos de atribución cifrados de la GPIR.

Ejemplo de respuesta JSON

{
  is_ct=1,
  actual_timestamp=123,
  install_referrer={
    utm_campaign = fb4a,
    utm_content: {
      source: {
        data: “7fb9bd76…”, // encrypted attribution information
        nonce: “1234” // nonce from encryption
      },
      a: <app_id>,
      t: <timestamp>
    }
    utm_source : “apps.facebook.com” //OR “apps.instagram.com”
  }
}

Datos de ejemplo después de descifrar install_referrer.utm_content.source

{ 
  "ad_id":"6110809314024", 
  "adgroup_id":"6110808725024", 
  "adgroup_name":"RTG_Storie_", 
  "campaign_id":"6110808710224", 
  "campaign_name":"Mobex_Conversiones_Storie_Android_21 a 31 de Diciembre_OP39895",
  "campaign_group_id":"6110808710624", 
  "campaign_group_name":"Mobex_Instagram Storie_ Conversiones_ Diciembre OP 43918",
  "account_id":"485495091598353",
  "ad_objective_name":"CONVERSIONS", 
  // data included for Instagram ads
  "is_instagram":true,
  "publisher_platform":"instagram",                
  "platform_position":"instagram_stories"          
}

Paso 3: Deduplicar datos

Si los metadatos de la campaña publicitaria de la GPIR están disponibles, deberías seguir el proceso de deduplicación de GPIR actual.

Deduplicar usando la referencia de instalación

Puedes eliminar los datos deduplicados usando los datos que se devuelven en install_referrer, ya que los valores son los mismos en instalaciones o campañas de clic en la referencia de instalación de Meta y GPIR.

En relación con las VT y CT en diferentes secciones, usa los datos de la referencia de instalación de Meta, ya que GPIR no los admite.

Si no hay metadatos de campañas publicitarias de GPIR, debes deduplicar los datos en función de si trabajas con un socio de medición de dispositivos móviles (MMP) o no.

Deduplicación con MMP

El socio de medición de dispositivos móviles (MMP) tiene acceso a datos de atribución en el nivel de la fila en las instalaciones que no tienen una red publicitaria ganadora, ya sea debido a que Meta realizó la atribución o a que las instalaciones son orgánicas. Puedes comprobar si se proporcionó una referencia de instalación a través de la referencia de instalación de Meta. En caso afirmativo, puedes considerar que la instalación está impulsada por Meta, y que los datos proporcionados de la referencia de instalación son los metadatos de la campaña publicitaria de la instalación.

Deduplicación sin MMP

La referencia de instalación de Meta proporciona información sobre la última interacción de la instalación, incluidos los metadatos de la campaña publicitaria, la marca de tiempo real de la última interacción y el tipo de acción de esta (impresión o clic). Puedes comparar el tipo de acción y la marca de tiempo de la última interacción con los datos de atribución que obtienes de las otras redes publicitarias, y decidir cuál es la red publicitaria ganadora.

Verificar la configuración

En primer lugar, asegúrate de usar una versión de la app que sea compatible con esta solución. Las versiones mínimas son las siguientes:

  • Facebook: v428
  • Instagram: v296
  • Facebook Lite: v411

Sigue estos pasos para verificar la configuración:

  1. Inserta la campaña de prueba usando la vista previa en el administrador de anuncios.
  2. Busca el anuncio en Facebook o Instagram y haz clic en él.
  3. Agrega pausas o registros en tu código del paso 2.

Tu app debería recibir una respuesta y descifrarla para ver los datos de la campaña.

Opción 2: Integración asistida a través de tu MMP

Paso 1: Actualiza el SDK de tu socio de medición de dispositivos móviles (MMP)

Actualiza el SDK de tu MMP a una versión que haya integrado la referencia de instalación de Meta:

  • SDK de AppsFlyer: SDK de AppsFlyer v6.14.2 y posteriores
  • SDK de Adjust: SDK de Adjust v4.36.0 y posteriores (Flutter 4.36.0 y posteriores, Unity 4.37.0 y posteriores)
  • API de SDK o S2S de Singular: SDK de Singular v12.3.0 y posteriores (Unity 4.2.0 y posteriores, React Native 3.3.0 y posteriores, Unreal 2.2.0 y posteriores)
  • SDK de Kochava: SDK de Kochava para Android v5.1.0 y posteriores
  • SDK de Airbridge: SDK de Airbridge para Android v2.22.3 y posteriores
  • SDK de Branch: SDK de Branch v5.10.1 y posteriores

Paso 2: Asegúrate de que el identificador de tu app de Facebook esté asociado con el SDK de tu MMP

Consulta las instrucciones a través de los enlaces disponibles a continuación.

Paso 3: Según el MMP, es posible que debas actualizar el archivo "manifest" de Android de tu app

Consulta las instrucciones a través de los enlaces disponibles a continuación.

  • Instrucciones para Kochava (ve a la sección Meta/Facebook)
  • AppsFlyer, Adjust, Singular y Airbridge realizan este paso de forma automática mediante su SDK
  • Consulta con tu MMP si usas SDK de Flutter o React en lugar de sus SDK de Android

Paso 4: Comparte tu clave de descifrado de referencia de instalación para permitir que tu MMP descifre los metadatos de referencia

Nota: Si ya hiciste esto para la referencia de instalación de Google Play Store, este paso no es necesario.