如何测试android引用跟踪?


Answers:


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"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的路径之前留点。“上午广播-com.android.vending.INSTALL_REFERRER -n app.test / app.util.AndroidUtil \ $ TestBroadCastReceiver”
Geert Weening

5
经过大量的试验和错误后,我发现如果Receiver位于库中,则需要省略。在-之后,因此示例如下所示:adb shell广播-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 2013年

2
为+1 adb shell <enter> am broadcast..。我adb shell am broadcast...输错了,它什么也没输出。
anticafe 2014年

1
重要说明是,引荐来源网址字符串中的所有&符号都应以Backspace()作为前缀,否则该字符串将在第一个&符号处终止,并且不会到达广播接收器。(在这种情况下,只能得到第一对“ utm_source = utm_test”)
Nati Dykstein 2016年

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 2013年

1
它是我的应用程序,并且是开源的,所以它不像我要出售的样子github.com/giago/referraltester
Luigi Agosti

2
因此,免费将其放在Play商店中:-)
JRun

14
您可以下载代码并将其部署到手机上...如果您懒惰,您需要付款,我认为这很公平
Luigi Agosti

2
给您+1。懒得建立另一个项目,但仍然给您+1来解决它。:-)
JRun 2013年

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

在AndroidManifest.xml中的包名称与build.gradle中的applicationId匹配的情况下,pjv的答案有效。如果不匹配,请执行以下操作:
给定:
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

对我来说,仅当使用“ -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
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.