Como testar o rastreamento de referência do Android?


100

Estou implementando um código para fazer meu próprio rastreamento de referência em downloads do Android Market.

Consulte o rastreamento de referência do Android não funciona para ter uma ideia do que meu aplicativo está fazendo.

Como posso testar se este código está funcionando antes de implantar para o público?


Respostas:


258

A maneira mais fácil é usando adb. Você não precisa escrever nenhum código.

Basta executar em um 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"

Aqui está minha linha exata:

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"

Mas você BroadcastReceiverpode precisar ser o AnalyticsReceiver, ou seja,

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 Luigi disse, você também pode omitir a "-n"parte do nome do componente, mas todos os aplicativos do seu dispositivo receberão a referência. Este pode ser um bom teste extra para ver se o seu BroadcastReceiverpode ser encontrado corretamente.

A saída que vejo (especialmente a última linha é 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
Se você usar uma classe interna estática como BroadCastReceiver, será necessário escapar do cifrão. No meu caso, tive que deixar de fora o ponto antes do caminho até o BroadCastReceiver. "am broadcast -a com.android.vending.INSTALL_REFERRER -n app.test / app.util.AndroidUtil \ $ TestBroadCastReceiver"
Geert Weening

5
Depois de muitas tentativas e erros, descobri que se o seu receptor estiver em uma biblioteca, você precisará omitir o. depois de / - então o exemplo ficaria assim: 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... Eu digito adb shell am broadcast...por engano e não há saída.
anticafe

1
Uma nota importante é que todos os e comercial (&) dentro da string de referência devem ser prefixados com backspace () ou então a string será encerrada no primeiro e comercial e não alcançará o receptor de transmissão. (resultando em obter apenas o primeiro par neste caso "utm_source = utm_test")
Nati Dykstein

2
"Mas seu BroadcastReceiver pode precisar ser o AnalyticsReceiver", o que você quer dizer com isso? E se eu quiser ter meu próprio receptor personalizado
Utsav Gupta

18

Não! você tem algumas maneiras de testá-lo. Envie uma transmissão manualmente com a intenção deste formulário

    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);

Este é seu próprio aplicativo?
JRun

1
é meu aplicativo e é de código aberto, então não é como se eu estivesse tentando vendê-lo github.com/giago/referraltester
Luigi Agosti

2
Então coloque-o na Play Store de graça :-)
JRun

14
você pode baixar o código e implantá-lo em seu telefone ... se você é preguiçoso, você paga, acho que é justo
Luigi Agosti

2
Deu a você um +1. Preguiçoso demais para construir outro projeto, mas ainda assim dei um +1 para descobri-lo. :-)
JRun

10

Nenhum dos comandos acima funciona para mim. Depois de tentar várias combinações de comandos, aqui está o que funciona para mim:

./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"

Observação: o referenciador deve ser codificado por url.


Estou recebendo "não definido" como valor médio da campanha no painel de análise. Apenas o nome da fonte é exibido. Você consegue descobrir qual pode ser o problema?
KP_


4

A resposta de pjv funciona no caso em que o nome do pacote em AndroidManifest.xml corresponde ao applicationId em build.gradle. Se eles não corresponderem, faça o seguinte:
Dado:
applicationId is com.my.app.debug
package is com.package.app
receiver é path.to.MyReceiver
então transmitido para com.my.app.debug/com.package.app.path.to.MyReceiver
Details aqui: https://groups.google.com/forum/#!topic/adt-dev/PjTHX79Iomw



0

Para mim, extras adicionados à intenção apenas ao adicionar com "-e" em vez de "--es". Pode ser meu problema de versão do anúncio. Então meu comando é ./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

O Goople Play recebe um link do APP e pede ao usuário para clicar para fazer o download, e o Google Play envia uma transmissão quando o download é concluído. O link do APP normalmente usa alguns parâmetros (como o exemplo a seguir) para permitir que o Google Play e o APP saibam de onde vem a fonte.

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

Portanto, podemos usar o adb para simular a transmissão do 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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.