2010-11-04 324 views
64

我想注册一个广播接收器,该应用程序从市场安装应用程序后捕获Android发起的“com.android.vending.INSTALL_REFERRER”意图。从Android Market安装应用程序后获取引荐者

我在这里以下细节:http://code.google.com/mobile/analytics/docs/android/#referrals

但是,我不能使用谷歌Analytics(分析),所以我创造了自己的解决方案。我已经添加了以下到我的清单文件:

<receiver android:name="com.test.Receiver" android:exported="true"> 
<intent-filter> 
    <action android:name="com.android.vending.INSTALL_REFERRER" /> 
</intent-filter> 
</receiver> 

,并创建了一个基本的BroadcastReceiver类:

public class Receiver extends BroadcastReceiver { 

    @Override 
    public void onReceive(Context context, Intent intent) { 

     Bundle extras = intent.getExtras(); 
     String referrerString = extras.getString("referrer"); 

     Log.w("TEST", "Referrer is: " + referrerString); 
    } 
} 

然而,当应用程序被安装在接收器似乎没有赶上意向(如果该意图甚至广播?),我没有得到记录输出。

我在某个地方出问题了,或者市场在应用程序安装后不再启动这些意向了吗?

+1

我在这里回答了同样的问题http://stackoverflow.com/questions/3817030/get-android-google-analytics-referrer-tag/3945100#3945100 – DougW 2011-09-26 20:52:19

+1

值得注意的是,由于最新版本中的错误的Android电子市场应用程序,引用者字符串目前不工作。您可以在此处列出错误以帮助吸引Google注意:http://code.google.com/p/android/issues/detail?id = 19247 – plowman 2011-10-03 18:28:57

+0

有谁知道在其他情况下是否有办法接收此广播我的旁边的应用正在安装? – 2014-07-03 14:23:53

回答

5

好吧,我找到了Intent没有启动的原因。显然,你必须使用相同的参数名称所列出的位置:http://code.google.com/mobile/analytics/docs/android/#referrals

你不能使用自己的参数名称为我所做的一切:S

+0

可以帮我解决我的问题http:// stackoverflow。com/questions/10431018/how-to-get-referrer-using-google-track-in-android – Khan 2012-05-03 13:16:02

+0

更新后的链接https://developers.google.com/analytics/devguides/collection/android/devguide#google-play-跟踪 – eveliotc 2012-11-01 22:30:01

+0

@Jake \t 你能告诉我哪些参数?其实我有像你一样的问题 – 2015-04-15 13:40:37

45

我会尽量帮谁像我一样,没有作出INSTALL_REFERRER工作谁没有找到任何关于这些功能的有用信息。

注:

  1. 意图com.android.vending.INSTALL_REFERRER会在安装过程中被抓到 ,而不是应用程序启动时的 第一次。
  2. 引荐... extras.getString("referrer") ..是固定的,但内容可以是尊重HTTP GET语法的字符串值... referrer=thatsthevalue&thisisnot=xxx

上面的代码是好的,只是一些说明来完成信息:

  1. Android Manifest。 <receiver>标签必须位于 <application>标签内。
  2. 正确的URL市场联系起来是不是著名的谷歌形式SDK

的结果,但这个

http://market.android.com/details?id=your.application.package.name&referrer=my_referrer_finally_works_fine

显然,你需要按照从移动链接设备和完整测试的唯一方法是在市场上发布测试应用程序。

最后还有个人笔记。

我不明白为什么这些信息完全被省略,我希望谷歌将详细说明它。

+2

要测试,请参阅此答案:http://stackoverflow.com/questions/5890914/how-to-test-android-referral-tracking/6966718#6966718 – emmby 2011-10-26 14:59:46

+1

INSTALL_REFERRER作为记录和工作由“着名的Google表单”生成的网址没有任何问题,因为它们的设计被GA SDK收到。只有您计划手动发布到Google Analytics或与其他分析平台集成时,您的代码才有效。如果您想查看推荐人并仍然使用GA SDK,请参阅上面的链接。 – 2011-12-09 08:45:21

+0

_''标签必须位于''标签内。 这不在分析SDK开发指南中解释,否则编译失败。所以,谢谢你,托比亚! – 2012-06-27 13:44:34

2

我同意Google的文档不是最好的。不过,我只能通过将应用程序上传到Market Place然后下载/安装它来获取意图。意图在下载/安装后立即启动 - 用户不必启动应用程序。我也使用它来启动后台服务。

+0

可以指出的Android版本,能够实现这一目标吗?这种行为是否仍然适用于2.3.3和ICS(4.0)? – rycfung 2012-11-15 06:04:45

1

其实有可能是像市场的任何链接:// ...的http:// ...市场无论做工精细。 另外,引用者字段中的参数类型无关紧要。它适用于那里的任何文本。

此事件类型“com.android.vending.INSTALL_REFERRER”未通过广播发送的主要问题。此事件仅适用于刚刚安装的应用程序。

UPD:只有一种方法可以测试它 - 将您的应用程序部署到市场中,然后将其安装到手机上。

+0

我相信INSTALL_REFERRER不适用于http协议。至少,如果它以前没有了。请参阅本文件,并注意点#2下的已知问题: https://developers.google.com/analytics/devguides/collection/android/v2/campaigns#known-issues – rycfung 2012-11-15 06:01:57

+0

@rycfung我认为,只有意味着它在您点击网络上的“安装”时不起作用,如果您通过网页链接打开Play商店应用程序 – 2015-02-20 09:24:04

2

请注意,这不是第一个启动意图,但只是一个Android市场相关的意图,这是发送我的谷歌Android市场。 如果您通过与android市场不同的资源安装应用程序,它不会触发。

使用它可以建立有链接:http://code.google.com/mobile/analytics/docs/android/#android-market-tracking 得到的意图指引者,并把它拆开来获得不同的参数

referrer = intent.getStringExtra("referrer"); 
Map<String, String> params = Toolbox.getQueryMap(referrer); 

附:您不需要阅读阅读deviceid/IMEI来执行此操作,就像某些应用程序一样。你不应该想要窥探你的用户。

5

我认为这些答案必须是在Android 3.1之前编写的 - 因为事情已经改变了一种导入方式。

系统现在将应用程序标记为休眠状态 - 它们将不会收到INSTALL_REFERRER或任何其他广播,直到用户通过运行应用程序(或放置小部件)显式激活应用程序为止。

+0

支持此操作的任何文档?我仍然没有看到任何广播尽管被引荐PARAM – rycfung 2012-11-15 06:00:25

+0

汤姆打开Play商店后,我启动我安装的应用程序之前,发送/,我觉得它的工作原理和4.x版已经测试由于引入了停止应用程序的Android 3.1启动控件。 [http://developer.android.com/about/versions/android-3.1.html](http://developer.android.com/about/versions/android-3.1.html)请注意,该系统增加了FLAG_EXCLUDE_STOPPED_PACKAGES所有广播intents.However后台服务或应用程序可以通过添加FLAG_INCLUDE_STOPPED_PACKAGES标志,广播应该允许激活停止应用意图覆盖此行为。希望这可能会有所帮助。在OS X键值对-e选项上的 – androidyue 2013-12-17 10:00:10

16

这可能是晚了一点,但你可以测试安装参照不使用谷歌播放,只需要使用亚行:)从adb.exe

adb shell 

am broadcast -a com.android.vending.INSTALL_REFERRER -n your.package/path.to.your.BroadcastReceiver --es "referrer" "test_referrer=test" 

运行此如果你已经登录设置在您的BroadcastReceiver中,您会看到它在LogCat中弹出。

希望这会有所帮助!

+5

不需要用双重代码括起来。所以上面的命令将是: 'ADB壳AM广播-a com.android.vending.INSTALL_REFERRER -n your.package/path.to.your.BroadcastReceiver --es引荐test_referrer = test' – 2016-06-20 13:41:10

相关问题