¿Cómo probar el seguimiento de referencias de Android?


100

Estoy implementando un código para hacer mi propio seguimiento de referencias en descargas del mercado de Android.

Consulte El seguimiento de referencias de Android no funciona para tener una idea de lo que está haciendo mi aplicación.

¿Cómo puedo probar si este código funciona antes de implementarlo para el público?


Respuestas:


258

La forma más sencilla es utilizar adb. No tienes que escribir ningún código.

Simplemente ejecute en una terminal :

adb shell 
am broadcast -a com.android.vending.INSTALL_REFERRER -n <your.package>/.<path.up.until.your.BroadcastReceiver> --es "referrer" "utm_source=test_source\&utm_medium=test_medium\&utm_term=test_term\&utm_content=test_content\&utm_campaign=test_name"

Aquí está mi línea exacta:

am broadcast -a com.android.vending.INSTALL_REFERRER -n net.lp.collectionista/.util.broadcast_receivers.FacadeBroadcastReceiver --es "referrer" "utm_source=test_source\&utm_medium=test_medium\&utm_term=test_term\&utm_content=test_content\&utm_campaign=test_name"

Pero es BroadcastReceiverposible que deba ser el AnalyticsReceiver, es decir

Para Google Analytics v2:

com.your.package / com.google.analytics.tracking.android.CampaignTrackingReceiver

Para Google Analytics v3:

com.your.package / com.google.android.apps.analytics.AnalyticsReceiver

Para Google Analytics v4:

com.your.package / com.google.android.gms.analytics.CampaignTrackingReceiver

Como dijo Luigi, también puede omitir la "-n"parte del nombre del componente, pero luego todas las aplicaciones de su dispositivo recibirán la referencia. Esta puede ser una buena prueba adicional para ver si BroadcastReceiverse puede encontrar correctamente.

La salida que veo (especialmente la última línea es importante):

05-13 17:28:08.335: D/Collectionista FacadeBroadcastReceiver(8525): Receiver called
05-13 17:28:08.335: V/Collectionista FacadeBroadcastReceiver(8525): Receiver called with action: com.android.vending.INSTALL_REFERRER
05-13 17:28:08.365: D/GoogleAnalyticsTracker(8525): Stored referrer:utmcsr=test_source|utmccn=test_name|utmcmd=test_medium|utmctr=test_term|utmcct=test_content

1
Si usa una clase interna estática como BroadCastReceiver, debe escapar del signo de dólar. En mi caso, tuve que omitir el punto antes de la ruta hasta BroadCastReceiver. "Estoy transmitiendo -a com.android.vending.INSTALL_REFERRER -n app.test / app.util.AndroidUtil \ $ TestBroadCastReceiver"
Geert Weening

5
Después de muchas pruebas y errores, descubrí que si su receptor está en una biblioteca, debe omitir el. after / - por lo que el ejemplo se vería así: adb shell am broadcast -a com.android.vending.INSTALL_REFERRER -n <your.package> / <full.path.in.library.up.until.your.BroadcastReceiver> --es "referrer" "utm_source = test_source & utm_medium = test_medium & utm_term = test_term & utm_content = test_content & utm_campaign = test_name"
bkurzius

2
+1 para adb shell <enter> am broadcast... Escribo adb shell am broadcast...por error y no muestra nada.
Anticafe

1
Una nota importante es que todos los signos y símbolos (&) dentro de la cadena de referencia deben tener el prefijo retroceso () o, de lo contrario, la cadena terminará en el primer signo y no llegará al receptor de transmisión. (lo que da como resultado solo el primer par en este caso "utm_source = utm_test")
Nati Dykstein

2
"Pero es posible que su BroadcastReceiver deba ser AnalyticsReceiver", ¿qué quiere decir con eso? ¿Qué pasa si quiero tener mi propio receptor personalizado?
Utsav Gupta

18

¡No! tienes algunas formas de probarlo Envía una transmisión manualmente con la intención de este formulario

    Intent i = new Intent("com.android.vending.INSTALL_REFERRER");
    //Set Package name
    i.setPackage("com.package.yourapp");
    //referrer is a composition of the parameter of the campaing
    i.putExtra("referrer", referrer);
    sendBroadcast(i);

¿Es esta tu propia aplicación?
JRun

1
es mi aplicación y es de código abierto, por lo que no es como si estuviera tratando de venderla github.com/giago/referraltester
Luigi Agosti

2
Ponlo en la tienda de juegos gratis :-)
JRun

14
puede descargar el código e implementarlo en su teléfono ... si es perezoso, paga, creo que es lo suficientemente justo
Luigi Agosti

2
Te di un +1. Demasiado perezoso para construir otro proyecto, pero aún así te di un +1 por resolverlo. :-)
JRun

10

Ninguno de los comandos anteriores me funciona. Después de probar muchas combinaciones de comandos, aquí está la que me funciona:

./adb shell am broadcast -a com.android.vending.INSTALL_REFERRER -n <your package>/<your package>.<your BroadcastReceiver> --es "referrer" "utm_medium%3Dpartner%26utm_campaign%3Dpartner_name"

Nota: la URL de referencia debe estar codificada en URL.


Recibo "no configurado" como valor medio de la campaña en el panel de análisis. Solo se muestra el nombre de la fuente. ¿Puedes averiguar cuál puede ser el problema?
KP_


4

La respuesta de pjv funciona en el caso de que el nombre del paquete en AndroidManifest.xml coincida con el applicationId en build.gradle. Si no coinciden, haga lo siguiente:
Dado:
applicationId es el com.my.app.debug
paquete y el com.package.app
receptor se path.to.MyReceiver
transmite a com.my.app.debug/com.package.app.path.to.MyReceiver
Detalles aquí: https://groups.google.com/forum/#!topic/adt-dev/PjTHX79Iomw



0

Para mí, los extras se agregan a la intención solo cuando se agregan con "-e" en lugar de "--es". Podría ser mi problema con la versión del anuncio. Entonces mi comando es ./adb shell am broadcast -a com.android.vending.INSTALL_REFERRER -n <your package>/<your package>.<your BroadcastReceiver> -e "referrer" "utm_medium%3Dpartner%26utm_campaign%3Dpartner_name"


0

Goople Play recibe un enlace de la APLICACIÓN y le pide al usuario que haga clic para descargar, y Google Play envía una transmisión cuando se completa la descarga. El enlace de la aplicación generalmente tomará algunos parámetros (como el siguiente ejemplo) para que Google Play y la aplicación sepan de dónde proviene la fuente.

Https://play.google.com/store/apps/details?id=com.example.application
& Referrer = utm_source% 3Dgoogle
% 26utm_medium% 3Dcpc
% 26utm_term% 3Drunning% 252Bshoes
% 26utm_content% 3Dlogolink
% 26utm_campaign% 3Dspring_sale

Entonces podemos usar adb para simular la transmisión desde Google Play.

echo 'am broadcast \
    -a com.android.vending.INSTALL_REFERRER \
    -n "com.google.samples.quickstart.analytics/com.google.android.gms.analytics.CampaignTrackingReceiver" \
    --es "referrer" \
      "utm_source=test_sourceCampaignTrackingReceiver&utm_medium=referral&utm_term=test_term&utm_content=test_content&utm_campaign=test_name"; \
    exit' | adb shell
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.