如何测试android推荐跟踪?

Posted

技术标签:

【中文标题】如何测试android推荐跟踪?【英文标题】:How to test android referral tracking? 【发布时间】:2011-08-18 22:54:29 【问题描述】:

我正在实现一些代码来对 android 市场的下载进行我自己的推荐跟踪。

请参阅Android referral tracking does not work,了解我的应用在做什么。

在向公众部署之前,如何测试此代码是否有效?

【问题讨论】:

developers.google.com/analytics/solutions/… 【参考方案1】:

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

对于谷歌分析 v2:

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

对于谷歌分析 v3:

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

对于谷歌分析 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

【讨论】:

如果您使用静态内部类作为 BroadCastReceiver,您必须转义美元符号。在我的情况下,我不得不在通往 BroadCastReceiver 的路径之前省略点。 “我广播 -a com.android.vending.INSTALL_REFERRER -n app.test/app.util.AndroidUtil\$TestBroadCastReceiver” 经过大量试验和错误后,我发现如果您的 Receiver 在库中,则需要省略 .在 / 之后——所以示例如下所示: adb shell am broadcast -a com.android.vending.INSTALL_REFERRER -n / --es "referrer" "utm_source=test_source&utm_medium=test_medium&utm_term=test_term&utm_content=test_content&utm_campaign=test_name" +1 表示adb shell &lt;enter&gt; am broadcast..。我错误地输入了adb shell am broadcast...,它没有输出任何东西。 一个重要的注意事项是,引用字符串中的所有 & 符号都应该以退格 () 为前缀,否则字符串将在第一个&符号处终止,并且不会到达广播接收器。 (导致在这种情况下只获得第一对“utm_source=utm_test”) “但是您的 BroadcastReceiver 可能需要成为 AnalyticsReceiver”您的意思是什么?如果我想拥有自己的自定义接收器怎么办【参考方案2】:

不!你有几种方法可以测试它 以这种形式手动发送广播

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

【讨论】:

这是我的应用程序并且是开源的,所以它不像我想卖它github.com/giago/referraltester 所以把它免费放到Play商店:-) 您可以下载代码并将其部署在您的手机上...如果您很懒,请付费,我认为足够公平 给了你一个 +1。太懒了,不想再建立另一个项目,但仍然给你一个 +1 来解决这个问题。 :-) 我发现省略包说明符更容易。您的应用仍会收到它。其他应用也可以。【参考方案3】:

以上命令都不适合我。在尝试了很多命令组合之后,这对我有用:

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

注意:referrer 应该是 url 编码的。

【讨论】:

我在分析仪表板中将“未设置”为中等活动价值。仅显示源名称。您能找出可能是什么问题吗?【参考方案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

【讨论】:

清除并保存我的一天【参考方案5】:

找到了一个不错的开源工具,可让您扫描您生成的推荐二维码 here,并发送包含所有正确信息的广播意图。

https://github.com/giago/referraltester

【讨论】:

【参考方案6】:

https://github.com/rogerbinns/referraltester 这里是启动“com.android.vending.INSTALL_REFERRER”广播的好应用。也可以输入参数。

【讨论】:

【参考方案7】:

对我来说,仅在使用“-e”而不是“--es”添加时才添加到意图中。可能是我的广告版本问题。所以我的命令是 ./adb shell am broadcast -a com.android.vending.INSTALL_REFERRER -n &lt;your package&gt;/&lt;your package&gt;.&lt;your BroadcastReceiver&gt; -e "referrer" "utm_medium%3Dpartner%26utm_campaign%3Dpartner_name"

【讨论】:

【参考方案8】:

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

【讨论】:

以上是关于如何测试android推荐跟踪?的主要内容,如果未能解决你的问题,请参考以下文章

如何在android上跟踪推荐链接

Android 推荐跟踪不起作用

Android 应用 A 想要跟踪 Android 应用 B 安装的 Google Play 推荐数据

如何检查android中有多少内存跟踪代码

安装引荐来源网址未在 android 网络市场上跟踪

android eclipse如何查看耗时