如何测试Android推荐跟踪?

emm*_*mby 99 android google-analytics referrer google-play

我正在实施一些代码来对Android市场的下载进行自己的推荐跟踪.

请参阅Android推介跟踪无法了解我的应用正在做什么.

如何在部署到公众之前测试此代码是否正常工作?

pjv*_*pjv 254

最简单的方法是使用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"
Run Code Online (Sandbox Code Playgroud)

这是我的确切行:

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"
Run Code Online (Sandbox Code Playgroud)

但你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
Run Code Online (Sandbox Code Playgroud)

  • 经过大量的反复试验后,我发现如果您的Receiver在库中,则需要省略.之后/ - 所以示例看起来像这样: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" (4认同)
  • 如果您使用静态内部类作为 BroadCastReceiver,则必须转义美元符号。就我而言,我必须省略到达 BroadCastReceiver 的路径之前的点。“广播 -a com.android.vending.INSTALL_REFERRER -n app.test/app.util.AndroidUtil\$TestBroadCastReceiver” (2认同)
  • 'adb shell <enter> am broadcast..`的+1.我错误地键入`adb shell am broadcast ...`并且它不输出任何内容. (2认同)
  • “但是您的BroadcastReceiver可能需要成为AnalyticsReceiver”,这是什么意思?如果我想拥有自己的自定义收件人怎么办 (2认同)

Lui*_*sti 17

没有!你有几种方法来测试它

  1. 使用应用:https://market.android.com/details?id = com.giago.referraltester&feature = search_result
  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);
    
    Run Code Online (Sandbox Code Playgroud)

  • 你可以下载代码并将其部署在你的手机上...如果你懒得付钱,我认为是公平的 (14认同)
  • 所以把它放在游戏商店免费:-) (2认同)
  • 给你一个+ 1.Too懒惰建立另一个项目,但仍然给你一个+1来搞清楚.:-) (2认同)

Pab*_*blo 9

以上命令都不适合我.在尝试了很多命令之后,这里有一个对我有用的命令:

./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"
Run Code Online (Sandbox Code Playgroud)

注意:引荐来源应该是url编码的.


Ato*_*ean 5

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