2

Я хочу поймать намерение INSTALL_REFERRER в моем собственном приемнике. я реализовал приемникINSTALL_REFERRER не получен до запуска приложения

public class InstallReferrerReceiver extends BroadcastReceiver { 

    @Override 
    public void onReceive(Context context, Intent intent) { 
      Log.d("Broadcast", "RECEIVED!"); 
     } 
} 

и добавить в манифесте

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

Когда я хочу проверить приемник, я установить мое приложение (не запускать) и отправить трансляции через ADB

am broadcast -a com.android.vending.INSTALL_REFERRER --es "referrer" "utm_medium=partner&utm_campaign=partner_name" 

Но не видно никаких журналов. После ланча он работает правильно и получает намерения.

От "Тестирование Google Play Измерение кампании"

Чтобы транслировать INSTALL_REFERRER намерение приложения:

  1. Убедитесь, что ваше приложение не запущено.
  2. Откройте терминал и выполните следующую команду: ...

Но мой приемник не получает намерения, прежде чем я запустить приложение в первый раз. Это правильное поведение? Когда я получаю это намерение, если я устанавливаю приложение с рынка с параметрами referrer?

Благодаря

ответ

3

На BroadcastReceiver Андроида 3.1+ приложения (или любой другой компонент) не будет срабатывать до тех пор, пока пользователь не запустил приложение, по крайней мере один раз. До тех пор он находится в «остановленном» состоянии

Это is an intended behaviour и предотвращает некоторые риски для безопасности.

+0

Спасибо, теперь все ясно – Dehimb

+0

Я не могу в это поверить. Разве это не сделает «INSTALL_REFERRER» совершенно бесполезным? Передача всегда запускается при установке перед первым запуском, чтобы ее никогда нельзя было получить ?! – Nils

+0

Что вы подразумеваете под этим? Каково поведение этой трансляции? _факт, который передается в эфир, не связан с тем, что он не принят_. Это может быть липкая трансляция, полученная сразу же после запуска процесса, явно инициированного пользователем – Drew

1

Команда adb не является полной. Попробуйте с этим:

./adb shell am broadcast -a com.android.vending.INSTALL_REFERRER -n <your package>/<your package>.receiver.InstallReferrerReceiver --es "referrer" "utm_medium%3Dpartner%26utm_campaign%3Dpartner_name" 

Примечание: реферер должен быть закодирован в URL.

+0

Правило Adb, оно работает после первого запуска приложения. Ответ на ограничения платформы, на что отвечает Drew - Приложение BroadcastReceiver приложения (или любой другой компонент) не будет запущено, пока пользователь не запустит приложение хотя бы один раз – Dehimb

Смежные вопросы