如何测试Android推荐追踪?

103

我正在实现一些代码来跟踪 Android 市场上的下载并进行推荐。

参考 Android 推荐跟踪不起作用 来了解我的应用程序正在做什么。

在部署到公共环境之前,我该如何测试这个代码是否有效?


https://developers.google.com/analytics/solutions/testing-play-campaigns - k4dima
8个回答

267

最简单的方法是使用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

2
如果您将静态内部类用作BroadCastReceiver,则必须转义美元符号。在我的情况下,我必须省略路径中BroadCastReceiver之前的点。 "am broadcast -a com.android.vending.INSTALL_REFERRER -n app.test/app.util.AndroidUtil$TestBroadCastReceiver" - Geert Weening
6
经过多次尝试,我发现如果您的接收器位于库中,则需要在斜杠之后省略“。”-- 因此,示例看起来应该是这样的: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
4
+1 表示 "赞同",adb shell <enter> am broadcast.. 是正确的命令。我不小心输入了 adb shell am broadcast...,但没有任何输出。 Translated: +1 means "agree". adb shell <enter> am broadcast.. is the correct command. I mistakenly typed adb shell am broadcast..., but there was no output. - anticafe
1
一个重要的注意事项是,referrer字符串中的所有&符号都应该以反斜杠()为前缀,否则字符串将在第一个&符号处终止,并且不会到达广播接收器。(在这种情况下只得到第一对"utm_source=utm_test") - Nati Dykstein
2
但是你的BroadcastReceiver可能需要成为AnalyticsReceiver,这是什么意思?如果我想要自己的自定义接收器呢? - Utsav Gupta
显示剩余10条评论

19

不!你有几种方法可以测试它。 使用形式为此的意图手动发送广播。

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

1
这是我的应用程序,它是开源的,所以我并不像试图出售它一样。https://github.com/giago/referraltester - Luigi Agosti
2
那就免费放到应用商店吧 :-) - JRun
15
您可以下载代码并在您的手机上部署它...如果您懒得这么做,您可以付费,我认为这是相当公平的。 - Luigi Agosti
2
给你点个赞。我太懒了,不想再构建另一个项目,但还是给你点个赞,因为你解决了问题。 :-) - JRun
我发现不加包说明符更容易。你的应用程序仍然会收到它。只是其他应用程序也可能会收到。 - CorayThan

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_

6

pjv的回答适用于AndroidManifest.xml中的包名与build.gradle中的applicationId相匹配的情况。如果它们不匹配,请按以下方式操作:
给定:
applicationId为com.my.app.debug
package为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


清除并保存我的一天 - Jacky Chong

4

“article how to use it”的链接显示中文色情内容。 - vlastachu

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

0

Google 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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接