2011-05-04 97 views

回答

229

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

对于谷歌Analytics(分析)V2 :

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

对于谷歌Analytics(分析)V3:

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

对于谷歌Analytics(分析)V4:

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

正如路易吉说,你也可以离开了"-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 
+0

不错,我不知道你可以做到这一点从adb +1 – 2011-08-06 14:27:41

+0

什么样的输出你可以在这里添加 – Khan 2012-05-04 09:26:32

+0

@pjv我有测试应用程序得到输出,但如果我从播放存储比应用程序donwload应用程序是null可以你exmplain小更多 – Khan 2012-05-04 10:45:19

13

不!你有几个方法来测试它

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

这是您自己的应用程序? – JRun 2013-06-13 08:43:29

+1

这是我的应用程序,是开源的,所以它不像我想卖它https://github.com/giago/referraltester – 2013-06-13 09:03:23

+2

所以把它放在免费的播放商店:-) – JRun 2013-06-17 14:49:03

5

以上命令都不适用于我。在尝试了很多命令组合之后,这里是适用于我的那个:

./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编码。

+0

我在分析仪表板中获得“未设置”作为媒介,活动价值。仅显示源名称。可以弄清楚可能是什么问题? – 2015-10-14 11:39:18

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 
2

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