Jak przetestować śledzenie odesłań na Androida?

Odpowiedzi:

258

Najłatwiej jest użyć adb. Nie musisz pisać żadnego kodu.

Po prostu uruchom w terminalu :

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"

Oto moja dokładna linia:

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"

Ale BroadcastReceivermoże być konieczne, aby był to AnalyticsReceiver, tj

W przypadku Google Analytics v2:

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

W przypadku Google Analytics v3:

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

W przypadku Google Analytics v4:

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

Jak powiedział Luigi, możesz również pominąć "-n"część nazwy komponentu, ale wtedy każda aplikacja na twoim urządzeniu otrzyma skierowanie. Może to być dobry dodatkowy test, aby sprawdzić, czy BroadcastReceivermożna prawidłowo znaleźć.

Wynik, który widzę (szczególnie ostatnia linia jest ważna):

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
pjv
źródło
1
Jeśli używasz statycznej klasy wewnętrznej jako BroadCastReceiver, musisz uciec przed znakiem dolara. W moim przypadku musiałem pominąć kropkę przed ścieżką do BroadCastReceiver. „am broadcast -a com.android.vending.INSTALL_REFERRER -n app.test / app.util.AndroidUtil \ $ TestBroadCastReceiver”
Geert Weening
5
Po wielu próbach i błędach stwierdziłem, że jeśli twój odbiornik jest w bibliotece, musisz pominąć. po / - więc przykład wyglądałby tak: 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 dla adb shell <enter> am broadcast... Piszę adb shell am broadcast...przez pomyłkę i nic nie wyświetla.
anticafe
1
Ważną uwagą jest to, że wszystkie ampersandy (&) wewnątrz ciągu odsyłającego powinny być poprzedzone znakiem backspace (), w przeciwnym razie ciąg zostanie zakończony pierwszym ampersandem i nie dotrze do odbiornika transmisji. (co skutkuje uzyskaniem tylko pierwszej pary w tym przypadku „utm_source = utm_test”)
Nati Dykstein
2
„Ale Twój BroadcastReceiver może potrzebować być AnalyticsReceiver”, co masz na myśli? Co jeśli chcę mieć własny niestandardowy odbiornik
Utsav Gupta
18

Nie! masz kilka sposobów, aby to przetestować Wyślij transmisję ręcznie z myślą o tym formularzu

    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);
Luigi Agosti
źródło
Czy to Twoja własna aplikacja?
JRun
1
to moja aplikacja i jest open source, więc to nie tak, że próbuję ją sprzedać github.com/giago/referraltester
Luigi Agosti
2
Więc umieść to w Play Store za darmo :-)
JRun
14
możesz pobrać kod i wdrożyć go na swoim telefonie ... jeśli jesteś leniwy, płacisz, myślę, że jest to w porządku
Luigi Agosti
2
Dałem ci + 1, zbyt leniwy, żeby zbudować kolejny projekt, ale i tak dał ci +1 za rozgryzienie go. :-)
JRun
10

Żadne z powyższych poleceń nie działa dla mnie. Po wypróbowaniu wielu kombinacji poleceń, oto ta, która działa dla mnie:

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

Uwaga: strona odsyłająca powinna być zakodowana w postaci adresu URL.

Pablo
źródło
Otrzymuję „nie ustawiono” jako medium, wartość kampanii w panelu analitycznym. Wyświetlana jest tylko nazwa źródła. Czy możesz dowiedzieć się, na czym polega problem?
KP_
4

Znalazłem fajne narzędzie typu open source, które pozwala skanować kod qrcode z poleceniem, który tutaj generujesz , i wysyła zamiar transmisji ze wszystkimi poprawnymi informacjami.

https://github.com/giago/referraltester

Gyuri
źródło
4

Odpowiedź pjv działa w przypadku, gdy nazwa pakietu w AndroidManifest.xml jest zgodna z applicationId w build.gradle. Jeśli nie pasują, wykonaj następujące czynności:
Podane: identyfikator
aplikacji jest com.my.app.debug
pakietem jest com.package.app
odbiornikiem jest path.to.MyReceiver
następnie przesyłany do com.my.app.debug/com.package.app.path.to.MyReceiver
szczegółów tutaj: https://groups.google.com/forum/#!topic/adt-dev/PjTHX79Iomw

AtomicBoolean
źródło
0

Dla mnie dodatki dodawane do intencji tylko przy dodawaniu za pomocą "-e" zamiast "--es". Może to być problem z wersją mojej reklamy. Więc moje polecenie brzmi ./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"

Sojan PR
źródło
0

Goople Play otrzymuje link do aplikacji i prosi użytkownika o kliknięcie w celu pobrania, a Google Play wysyła transmisję po zakończeniu pobierania. Łącze APP zwykle przyjmuje pewne parametry (takie jak poniższy przykład), aby poinformować Google Play i APP, skąd pochodzi źródło.

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

Możemy więc użyć adb do symulacji transmisji z 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
WeiYuan
źródło