Як перевірити андроїд відстеження рефералів?


100

Я реалізую код, щоб зробити власне відстеження рефералів щодо завантажень із ринку Android.

Дивіться, що відстеження рефералів на Android не допомагає уявляти, що робить моя програма.

Як я можу перевірити, чи працює цей код перед розгортанням для загального користування?


Відповіді:


258

Найпростіший спосіб - це використання adb. Вам не потрібно писати жодного коду.

Просто запустіть у терміналі :

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"

Ось мій точний рядок:

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"

Але вам BroadcastReceiverможе знадобитися бути тим AnalyticsReceiver, тобто

Для Google Analytics v2:

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

Для Google Analytics v3:

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

Для Google Analytics v4:

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

Як сказав Луїджі, ви також можете залишити "-n"частину імені компонента, але тоді кожна програма на вашому пристрої отримає реферал. Це може бути хорошим додатковим тестом, щоб дізнатись, чи BroadcastReceiverможна правильно їх знайти.

Результат, який я бачу (особливо важливий останній рядок):

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
Якщо ви використовуєте статичний внутрішній клас як BroadCastReceiver, вам доведеться уникати знаку долара. У моєму випадку мені довелося залишити крапку перед шляху до BroadCastReceiver. "Я транслюю -a com.android.vending.INSTALL_REFERRER -n app.test / app.util.AndroidUtil \ $ TestBroadCastReceiver"
Geert Weening

5
Після безлічі спроб та помилок я виявив, що якщо ваш Одержувач знаходиться в бібліотеці, потрібно пропустити його. після / - тому приклад виглядатиме так: оболонка adb транслюється -a com.android.vending.INSTALL_REFERRER -n <your.package> / <full.path.in.library.up.until.your.BroadcastReceiver> --es "referencerer" "utm_source = test_source & utm_medium = test_medium & utm_term = test_term & utm_content = test_content & utm_campaign = test_name"
bkurzius

2
+1 для adb shell <enter> am broadcast... Я друкую adb shell am broadcast...помилково, і це нічого не видає.
антикафе

1
Важливе зауваження полягає в тому, що всі амперсанди (&) всередині рядка реферала мають бути встановлені з backspace (), інакше рядок буде припинено на першій амперсанді і не потрапить до приймача широкомовної передачі. (в результаті чого в цій справі виходить лише перша пара "utm_source = utm_test")
Nati Dykstein

2
"Але ваш BroadcastReceiver, можливо, повинен бути AnalyticsReceiver", що ви розумієте під цим? Що робити, якщо я хочу отримати власний власний приймач
Utsav Gupta

18

Немає! у вас є кілька способів перевірити це. Надішліть трансляцію вручну з наміром цієї форми

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

Це ваша власна програма?
JRun

1
це моя програма і є відкритим кодом, тому це не так, як я намагаюся продати це github.com/giago/referraltester
Луїджі Агості

2
Тож покладіть його в ігровий магазин безкоштовно :-)
JRun

14
ви можете завантажити код і розгорнути його на своєму телефоні ... якщо вам лінь платити, я думаю, що це досить справедливо
Луїджі Агості

2
Дав вам +1 1.Та ледачий, щоб створити ще один проект, але все-таки дав вам +1, щоб розібратися в ньому. :-)
JRun

10

Жодна з перерахованих вище команд не працює для мене. Спробувавши багато комбінацій команд, тут працює та, яка працює для мене:

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

Примітка: референс повинен бути закодований URL.


Я отримую "не встановлено" як середнє значення кампанії на інформаційній панелі аналітики. Відображається лише назва джерела. Чи можете ви зрозуміти, у чому може бути проблема?
KP_

4

Знайдено чудовий інструмент з відкритим кодом, який дозволяє сканувати реферальний qrcode, який ви генеруєте тут , і він надсилає намір широкомовної інформації з усією правильною інформацією.

https://github.com/giago/referraltester


4

Відповідь pjv працює в тому випадку, коли ім'я пакету в AndroidManifest.xml відповідає програмі applicationId в build.gradle. Якщо вони не відповідають, зробіть наступне:
Дано:
applicationId is com.my.app.debug
package - це com.package.app
приймач, path.to.MyReceiver
а потім транслюється в com.my.app.debug/com.package.app.path.to.MyReceiver
подробиці тут: https://groups.google.com/forum/#!topic/adt-dev/PjTHX79Iomw



0

Для мене додатки додаються до наміру лише при додаванні з "-e" замість "--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 отримує посилання APP і просить користувача натиснути, щоб завантажити, а Google Play надсилає трансляцію після завершення завантаження. Посилання APP зазвичай приймає деякі параметри (наприклад, наступний приклад), щоб Google Play і APP знали, звідки береться джерело.

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

Тож ми можемо використовувати adb для імітації трансляції з 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
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.