从Android电子市场安装应用后获取引荐来源
我正在尝试注册一个广播接收器,捕获Android应用程序从市场上安装应用程序后发起的“com.android.vending.INSTALL_REFERRER”intents。
我正在关注这里的详细信息: http : //code.google.com/mobile/analytics/docs/android/#referrals
不过,我无法使用Google Analytics(分析),因此我创build了自己的解决scheme。 我已经将以下内容添加到我的清单文件中:
<receiver android:name="com.test.Receiver" android:exported="true"> <intent-filter> <action android:name="com.android.vending.INSTALL_REFERRER" /> </intent-filter> </receiver>
并创build了一个基本的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); } }
但是,安装应用程序时,接收器似乎没有捕获意图(如果意图甚至广播吗?),我得不到logging输出。
我在某个地方出了问题,或者市场在安装应用程序时不再启动这些内容?
我会尽力帮助像我这样的人,使install_referrer无法工作,以及谁不能find有关这些function的有用信息。
笔记:
- 意图
com.android.vending.INSTALL_REFERRER
将在安装过程中捕获,而不是在应用程序第一次启动时捕获。 - 引用者…
extras.getString("referrer")
..是固定的,但内容可以是任何string值,尊重HTTP获取语法…referrer=thatsthevalue&thisisnot=xxx
上面的代码是可以的,只需要一些解释来完成信息:
- Android清单。
<receiver>
标签必须位于<application>
标签内。 - 链接市场的正确url不是sdk中着名的google表单的结果
但这一个
显然,您需要遵循移动设备的链接,完成testing的唯一方法是在市场上发布testing应用程序。
最后还有个人笔记。
我不明白为什么这些信息被完全省略,我希望谷歌将详细说明。
这可能有点晚,但是您可以在不使用Google Play的情况下testing安装推荐链接,只需使用ADB 🙂
从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中设置了日志logging,则会在LogCat中看到它。
希望这可以帮助!
好,所以我find了Intent没有启动的原因。 显然,您必须使用与此处列出的相同的参数名称: http : //code.google.com/mobile/analytics/docs/android/#referrals
你不能像我一样使用你自己的参数名称:S
我认为这些答案一定是在Android 3.1之前编写的 – 因为事情已经改变了一种导入方式。
系统现在将应用程序标记为处于hibernate状态 – 它们将不会收到INSTALL_REFERRER或任何其他广播,直到用户通过运行(或放置小部件)显式激活应用程序。
我同意Google的文档不是最好的。 不过,我只能通过实际上传应用程序到市场,然后下载/安装它来获得意图。 意图在下载/安装后立即启动 – 用户不必启动应用程序。 我正在使用它来启动后台服务。
请注意,这不是第一个启动意图,但只有一个Android市场相关的意图,这是发送我的谷歌Android市场。 如果你通过不同于android市场的资源来安装应用程序,它不会触发。
使用你可以在那里build立的链接: http : //code.google.com/mobile/analytics/docs/android/#android-market-tracking从意图获取引用,并拿开它来获得不同的参数
referrer = intent.getStringExtra("referrer"); Map<String, String> params = Toolbox.getQueryMap(referrer);
PS你不需要阅读阅读deviceid / IMEI来做到这一点,因为有些应用程序。 你不应该想要窥探你的用户。
其实可以有任何链接像市场:// …或者http:// market …或者工作正常。 另外,在引荐者字段中,什么样的参数是无关紧要的。 它可以在那里的任何文本正常工作。
此事件types“com.android.vending.INSTALL_REFERRER”不通过广播发送的主要问题。 这个事件只进入刚安装的应用程序。
UPD:只有一种方法来testing它 – 将您的应用程序部署到市场,然后将其安装在手机上。