Я выпустил приложение для поиска битых пикселей, чтобы поиграть с намерением.По какой-то причине, когда я зарегистрировал два разных приемника вещания (т.е. com.google.android.apps.analytics.AnalyticsReceiver и мой собственный), я никогда не получал его самостоятельно.
Поэтому вместо этого я зарегистрировал только мой собственный получатель, обработайте информацию и передайте ее в Google Analytics.Не знаю, насколько это кошерно, но это работает.Код следует.
public class ZSGoogleInterceptor extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Bundle extras = intent.getExtras();
String referrerString = extras.getString("referrer");
// Next line uses my helper function to parse a query (eg "a=b&c=d") into key-value pairs
HashMap<String, String> getParams = Utility.getHashMapFromQuery(referrerString);
String source = getParams.get("utm_campaign");
if (source != null) {
SharedPreferences preferences = context.getSharedPreferences("my_prefs", Context.MODE_PRIVATE);
Editor preferencesEditor = preferences.edit();
preferencesEditor.putString("ga_campaign", source);
preferencesEditor.commit();
}
// Pass along to google
AnalyticsReceiver receiver = new AnalyticsReceiver();
receiver.onReceive(context, intent);
}
}
Затем, когда ваше приложение действительно запускается, вы можете извлечь значение из общих настроек и передать его вместе с регистрацией пользователя или чем-то еще.Я использовал тег кампании для своих целей, но вы можете извлечь любые параметры из строки реферера, созданной с помощью этого инструмента .