Я закончил tutorial и способен к debug and send broadcasts manuallyAndroid - Перехватить Google Analytics кампании вопрос
Но я не могу перехватить данные реферер с другим пользовательским приемником. Он просто не запускается при входящем широковещании com.android.vending.INSTALL_REFERRER
.
Если я отправляю широковещательную рассылку /com.google.android.gms.analytics.CampaignTrackingReceiver
пользовательского приемника, не вижу ее. В противном случае отправка точно co.primesignals.android.primesignalsapp.campaign.LaunchReceiver
работает нормально. Но Google отправляет эту трансляцию собственному приемнику ...
Как правильно реализовать пользовательский приемник для перехвата реферера?
Manifest:
...
<uses-permission android:name="android.permission.WAKE_LOCK" />
<receiver android:name="com.google.android.gms.analytics.AnalyticsReceiver"
android:enabled="true"
android:exported="false">
<intent-filter>
<action android:name="com.google.android.gms.analytics.ANALYTICS_DISPATCH" />
</intent-filter>
</receiver>
<service android:name="com.google.android.gms.analytics.AnalyticsService"
android:enabled="true"
android:exported="false"/>
<!--Used for Google Play Store Campaign Measurement-->
<service android:name="com.google.android.gms.analytics.CampaignTrackingService"
android:enabled="true"
android:exported="false"/>
<receiver
android:name="com.google.android.gms.analytics.CampaignTrackingReceiver"
android:exported="true"
android:enabled="true">
<intent-filter>
<action android:name="com.android.vending.INSTALL_REFERRER" />
</intent-filter>
</receiver>
<receiver android:name=".campaign.LaunchReceiver" //custom receiver
android:exported="true"
android:enabled="true">
<intent-filter>
<action android:name="com.android.vending.INSTALL_REFERRER" />
</intent-filter>
</receiver>
LaunchReceiver:
public class LaunchReceiver extends BroadcastReceiver {
public static final String INSTALL_REFERRER_ACTION = "com.android.vending.INSTALL_REFERRER";
public static final String REFERRER = "referrer";
public static final String TAG = "GAv4 app ->";
@Override
public void onReceive(Context context, Intent intent) {
android.util.Log.d(TAG, "LaunchReceiver.onReceive");
final String action = intent.getAction();
if (!TextUtils.isEmpty(action) && INSTALL_REFERRER_ACTION.equals(action)) {
android.util.Log.d(TAG, String.format("LaunchReceiver.onReceive action=%s", action));
String referrer = intent.getStringExtra(REFERRER);
if (!TextUtils.isEmpty(referrer)) {
android.util.Log.d(TAG, String.format("LaunchReceiver.onReceive referrer=%s", referrer));
SPManager.add(context, REFERRER, referrer);
CampaignData.parseAndSaveData(context, referrer);
}
}
new CampaignTrackingReceiver().onReceive(context, intent);
}
}
оболочки ADB команды, которые я использовал для передачи передач:
am broadcast -a com.android.vending.INSTALL_REFERRER -n "[package]/com.google.android.gms.analytics.CampaignTrackingReceiver" --es referrer "[referrer value]" -> this is not handled by custom receiver
am broadcast -a com.android.vending.INSTALL_REFERRER -n "[package]/co.primesignals.android.primesignalsapp.campaign.LaunchReceiver" --es referrer "[referrer value]" -> this works perfect but google wont send this broadcast