Получить реферер после установки приложения из Android Маркета

Я пытаюсь зарегистрировать широковещательный приемник, который ловит намерения "com.android.vending.INSTALL_REFERRER", запущенные Android после того, как приложение установлено с рынка.

Я читаю подробности здесь: 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>

и создал базовый класс 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);
    }
}

Однако, когда приложение установлено, приемник, похоже, не улавливает намерение (если Intent даже транслируется?), и я не получаю вывод журнала.

Как я ошибаюсь где-то или рынок больше не запускает эти намерения, когда приложение установлено?

Ответ 1

Я попытался бы помочь тем, кто, как и я, не смог сделать работу install_referrer и кто не нашел ЛЮБОЙ полезной информации об этих функциях.

Примечания:

  • Умышленное намерение com.android.vending.INSTALL_REFERRER во время процесса установки, а не при запуске приложения для первый раз.
  • Реферрер... extras.getString("referrer").. исправлен, но содержимое может быть любым строковым значением, которое соответствует синтаксису http get... referrer=thatsthevalue&thisisnot=xxx

Вышеприведенный код в порядке, просто некоторые пояснения для заполнения информации:

  • Android Manifest. Теги <receiver> должны находиться внутри <application>.
  • Правильный URL-адрес для ссылки на рынок - это не результаты известных форм google в sdk

но этот

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

Очевидно, вам нужно следовать ссылке с мобильного устройства, и единственный способ для полного теста - опубликовать тестовое приложение на рынке.

И последнее и личное примечание.

Я не понимаю, почему эта информация полностью опущена, и я надеюсь, что Google будет действовать для ее детализации.

Ответ 2

Это может быть немного поздно, но вы можете протестировать ссылку на установку без использования 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"

Если у вас есть настройка ведения журнала в вашем BroadcastReceiver, вы увидите ее всплывающее окно в LogCat.

Надеюсь, это поможет!

Ответ 3

Хорошо, поэтому я нашел причину, по которой намерение не запускалось. Очевидно, вы ДОЛЖНЫ использовать те же имена параметров, что и здесь: http://code.google.com/mobile/analytics/docs/android/#referrals

Вы не можете использовать свои собственные имена параметров, как я делал: S

Ответ 4

Я думаю, что эти ответы должны были быть написаны до Android 3.1 - потому что все изменилось одним способом импорта.

Система теперь отмечает, что приложение неактивно, когда они установлены - они не будут получать INSTALL_REFERRER или любую другую трансляцию, пока пользователь явно не активирует приложение, запустив его (или разместив виджет).

Ответ 5

Я согласен с тем, что документация Google не самая лучшая. Тем не менее, я только смог получить намерение запустить, загрузив приложение на Market Place, а затем загрузив/установив его. Цель запускается сразу после загрузки/установки - пользователю не нужно запускать приложение. Я использую это, чтобы запустить фоновый сервис.

Ответ 6

Обратите внимание, что это не первое намерение начать, а только намерение рынка, связанное с Android, которое отправляет мой Android-портал google. Если вы устанавливаете приложение через другой ресурс, чем на рынок Android, он не срабатывает.

Используйте ссылку, которую вы можете там построить: http://code.google.com/mobile/analytics/docs/android/#android-market-tracking получить реферер от намерения и разделить его, чтобы получить разные параметры

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

P.S. Вам не нужно читать, чтобы читать deviceid/IMEI, чтобы сделать это, как это делают некоторые приложения. Вы не должны отслеживать своих пользователей.

Ответ 7

На самом деле могут быть любые ссылки, такие как market://... или http://market.... Также не имеет значения, какие параметры будут в поле referrer. Он отлично работает с любым текстом там.

Основная проблема, связанная с тем, что этот тип события "com.android.vending.INSTALL_REFERRER" не отправляется по широковещательной передаче. Это событие выходит ТОЛЬКО в только что установленное приложение.

UPD: И есть только один способ его протестировать - разверните приложение на рынок и затем установите его на телефон.