Android 추천 추적을 테스트하는 방법은 무엇입니까?


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"

그러나 귀하 BroadcastReceiverAnalyticsReceiver, 즉

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

Luigi가 말했듯이 "-n"componentname 부분을 생략 할 수도 있지만 기기의 모든 앱이 추천을받습니다. 이것은 당신 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로가는 경로 앞에 점을 생략해야했습니다. "am broadcast -a com.android.vending.INSTALL_REFERRER -n app.test / app.util.AndroidUtil \ $ TestBroadCastReceiver"
Geert Weening

5
많은 시행 착오 끝에 수신기가 라이브러리에 있으면. /-이후 예제는 다음과 같습니다. 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 adb shell <enter> am broadcast... adb shell am broadcast...실수로 입력 했는데 아무 것도 출력되지 않습니다.
anticafe 2014-08-27

1
중요한 참고 사항은 리퍼러 문자열 내의 모든 앰퍼샌드 (&) 앞에 백 스페이스 ()를 붙여야합니다. 그렇지 않으면 문자열이 첫 번째 앰퍼샌드에서 종료되고 브로드 캐스트 수신기에 도달하지 않습니다. (이 경우 "utm_source = utm_test"에서 첫 번째 쌍만 가져옴)
Nati Dykstein

2
"하지만 귀하의 BroadcastReceiver는 AnalyticsReceiver 여야 할 수도 있습니다."그게 무슨 뜻입니까? 내가 내 자신의 사용자 정의 리시버가 wantto 경우
Utsav 굽타

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을주었습니다. :-)
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

pjv의 대답은 AndroidManifest.xml의 패키지 이름이 build.gradle의 applicationId와 일치하는 경우 작동합니다. 일치하지 않으면 다음을 수행하십시오.
주어진 :
applicationId는 com.my.app.debug
패키지가 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

나를 위해 "--es"대신 "-e"로 추가 할 때만 인 텐트에 추가 항목이 추가되었습니다. 내 광고 버전 문제 일 수 있습니다. 그래서 내 명령은 ./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
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.