วิธีทดสอบการติดตามการอ้างอิงของ 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"

แต่ของคุณ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

ดังที่ Luigi กล่าวไว้คุณสามารถละทิ้ง"-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 shell am broadcast -a com.android.vending.INSTALL_REFERRER -n <your.package> / <full.path.in.library.up.until.your.BroadcastReceiver> --es "ผู้อ้างอิง" "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

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
Luigi Agosti

2
ดังนั้นวางไว้ที่ play store ฟรี :-)
JRun

14
คุณสามารถดาวน์โหลดรหัสและปรับใช้บนโทรศัพท์ของคุณ ... ถ้าคุณขี้เกียจจ่ายฉันคิดว่ามันยุติธรรมพอ
Luigi Agosti

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


ฉันได้รับ "not set" เป็นสื่อมูลค่าแคมเปญในแดชบอร์ดการวิเคราะห์จะแสดงเฉพาะชื่อแหล่งที่มาคุณคิดออกไหมว่าอะไรอาจเป็นปัญหา
KP_


4

คำตอบของ pjv ใช้ได้ในกรณีที่ชื่อแพ็กเกจใน AndroidManifest.xml ตรงกับ applicationId ใน build.gradle หากไม่ตรงกันให้ดำเนินการดังนี้:
ให้:
applicationId is com.my.app.debug
package is com.package.app
receiver จะ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
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.