Получить реферер после установки приложения из 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: И есть только один способ его протестировать - разверните приложение на рынок и затем установите его на телефон.