Obtenga referencia después de instalar la aplicación desde Android Market

Intento registrar un Broadcast Receiver que capte las intenciones de “com.android.vending.INSTALL_REFERRER” lanzadas por Android después de que se haya instalado una aplicación en Market.

Estoy siguiendo los detalles aquí: http://code.google.com/mobile/analytics/docs/android/#referrals

Sin embargo, no puedo usar Google Analytics, así que he creado mi propia solución. He agregado lo siguiente a mi archivo de manifiesto:

     

y creó una clase básica de BroadcastReceiver:

 public class Receiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { Bundle extras = intent.getExtras(); String referrerString = extras.getString("referrer"); Log.w("TEST", "Referrer is: " + referrerString); } } 

Sin embargo, cuando la aplicación está instalada, el receptor no parece captar el Intento (si el Intento se transmite incluso?) Y no obtengo ningún resultado de registro.

¿Me estoy equivocando en algún lugar o el Market ya no está lanzando estos Intents cuando se instala una aplicación?

Intentaría ayudar a alguien que, como yo, no puede hacer que install_referrer funcione y que no encuentre CUALQUIER información útil sobre estas funciones.

Notas:

  1. El bash com.android.vending.INSTALL_REFERRER se detectará durante el proceso de instalación, no cuando la aplicación se inicie por primera vez.
  2. El referente … extras.getString("referrer") … está fijo, pero los contenidos pueden ser cualquier valor de cadena que respete la syntax http get … referrer=thatsthevalue&thisisnot=xxx

El código anterior está bien, solo algunas explicaciones para completar la información:

  1. Manifiesto de Android. Las tags deben estar dentro de las tags .
  2. La URL correcta para vincular el mercado no es el resultado de las famosas formas de google en sdk

pero este

http://market.android.com/details?id=your.application.package.name&referrer=my_referrer_finally_works_fine

Obviamente, debe seguir el enlace desde el dispositivo móvil y la única forma de realizar una prueba completa es publicar una aplicación de prueba en el mercado.

Y una nota final y personal.

No entiendo por qué esa información se omite por completo y espero que Google actúe para detallarla.

Esto puede ser un poco tarde, pero PUEDE probar la referencia de instalación sin usar Google Play, solo use ADB 🙂

Ejecuta esto desde adb.exe

 adb shell am broadcast -a com.android.vending.INSTALL_REFERRER -n your.package/path.to.your.BroadcastReceiver --es "referrer" "test_referrer=test" 

Si tiene la configuración de inicio de sesión en su BroadcastReceiver, lo verá emergente en LogCat.

¡Espero que esto ayude!

Bien, entonces encontré la razón por la cual Intent no se lanzó. Aparentemente DEBE usar los mismos nombres de parámetros que se describen aquí: http://code.google.com/mobile/analytics/docs/android/#referrals

No puede usar sus propios nombres de parámetros como lo estaba haciendo: S

Creo que estas respuestas deben haberse escrito antes de Android 3.1, porque las cosas han cambiado de una manera importante.

El sistema ahora marca la aplicación como inactiva cuando están instaladas: no recibirán INSTALL_REFERRER ni ninguna otra transmisión hasta que el usuario active explícitamente la aplicación ejecutándola (o colocando el widget).

Acepto que la documentación de Google no es la mejor. Sin embargo, solo pude obtener la intención de disparar al cargar la aplicación en Market Place y luego descargarla / instalarla. El bash se inicia inmediatamente después de la descarga / instalación: el usuario no tiene que iniciar la aplicación. Estoy usando esto para comenzar un servicio de fondo también.

Tenga en cuenta que este no es el primer bash de inicio, sino solo un bash relacionado con el mercado de Android que se envía al mercado de Android de Google. Si instala la aplicación a través de un recurso diferente al del mercado Android, no se activará.

Utiliza el enlace que puedes construir allí: http://code.google.com/mobile/analytics/docs/android/#android-market-tracking obtén la referencia de la intención y deshazte de ella para obtener los diferentes parámetros.

 referrer = intent.getStringExtra("referrer"); Map params = Toolbox.getQueryMap(referrer); 

PD: No necesita leer para leer el ID de dispositivo / IMEI para hacer esto, como lo hacen algunas aplicaciones. No deberías querer espiar a tus usuarios.

De hecho, puede haber enlaces como market: // … o http: // market … o funcionan bien. Además, no importa qué tipo de parámetros estarán en el campo de referencia. Funciona bien con cualquier texto allí.

El problema principal que este tipo de evento “com.android.vending.INSTALL_REFERRER” no envía por difusión. Este evento SÓLO va a la aplicación recién instalada.

UPD: Y solo hay una forma de probarlo: despliega tu aplicación en Market y luego instálala en el teléfono.

Utilice la API de referencia de Google Play (desde el 20 de noviembre de 2017) de forma muy fácil y segura, ya que respondí aquí