从Android电子市场安装应用后获取推荐人

Jak*_*ake 68 android install referrer google-play google-play-services

我正在尝试注册一个广播接收器,它捕获Android从市场安装应用程序后启动的"com.android.vending.INSTALL_REFERRER"意图.

我在此处详细了解:http://code.google.com/mobile/analytics/docs/android/#referrals

但是,我无法使用Google Analytics,因此我创建了自己的解决方案.我在清单文件中添加了以下内容:

<receiver android:name="com.test.Receiver" android:exported="true">
<intent-filter>
    <action android:name="com.android.vending.INSTALL_REFERRER" />
</intent-filter>
</receiver>
Run Code Online (Sandbox Code Playgroud)

并创建了一个基本的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);
    }
}
Run Code Online (Sandbox Code Playgroud)

然而,当安装应用程序时,接收器似乎没有捕获Intent(如果Intent甚至广播?)并且我没有记录输出.

我在某个地方出错了还是市场在安装应用程序时不再启动这些Intent?

小智 53

我会尝试帮助像我这样的人无法使install_referrer工作,以及谁找不到有关这些功能的任何有用信息.

笔记:

  1. 意图com.android.vending.INSTALL_REFERRER将在安装过程中捕获,而不是在应用程序第一次启动时捕获.
  2. 引用者...... extras.getString("referrer")是固定的,但内容可以是任何尊重http get语法的字符串值...referrer=thatsthevalue&thisisnot=xxx

上面的代码没问题,只是完成信息的一些解释:

  1. Android Manifest.该<receiver>标签必须是内 <application>标签.
  2. 链接市场的正确网址不是sdk中着名的谷歌表格的结果

但这一个

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

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

最后和个人说明.

我不明白为什么这些信息被完全省略,我希望谷歌会采取行动来详细说明.

  • 要测试,请参阅以下答案:http://stackoverflow.com/questions/5890914/how-to-test-android-referral-tracking/6966718#6966718 (2认同)

Mac*_*ibe 19

这可能有点晚了,但您可以在不使用Google Play的情况下测试安装引荐来源,只需使用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"
Run Code Online (Sandbox Code Playgroud)

如果您在BroadcastReceiver中有日志记录设置,您将在LogCat中看到它弹出.

希望这可以帮助!

  • 在OS X上,-e选项的键值对不需要用双重代码括起来.所以上面的命令将是:`adb shell am broadcast -a com.android.vending.INSTALL_REFERRER -n your.package/path.to.your.BroadcastReceiver --es referrer test_referrer = test` (6认同)

Tom*_*Tom 6

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

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


Jak*_*ake 5

好的,所以我找到了Intent没有启动的原因.显然你必须使用与此处概述的相同的参数名称:http://code.google.com/mobile/analytics/docs/android/#referrals

你不能像我一样使用你自己的参数名:S