Получить тег реферера Google Analytics Android

Мы планируем использовать Google Analytics для отслеживания кликов по кликам через Android Market в нашем приложении.

Согласно документации Google тег referrer проходит через намерение и автоматически записывается в библиотеку Google Analytics.

Это здорово, но нам нужно извлечь этот тег реферала для нашей собственной внутренней аналитики. Документация стесняется подробностей о том, как извлечь ее из первоначального намерения запуска, а также инструкции о том, как имитировать это, прежде чем идти вживую.

У кого-нибудь есть опыт?

Я пошел вперед и опубликовал приложение для поиска мертвого пикселя, чтобы играть с отслеживанием намерений. По какой-то причине, когда я зарегистрировал два разных приемника вещания (например, 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 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); } } 

Затем, когда ваше приложение действительно запущено, вы можете вывести значение из общих настроек и передать его вместе с регистрацией пользователя или любым другим. Я использовал тег кампании для своих целей, но вы можете захватить любые параметры, которые вы хотите, из строки реферера, созданной с помощью этого инструмента .

Ответ @DougW обновлен для Google Analytics SDK 4

https://developers.google.com/analytics/devguides/collection/android/v4/campaigns

 import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; import android.os.Bundle; import android.util.Log; import com.google.android.gms.analytics.CampaignTrackingReceiver; import java.io.UnsupportedEncodingException; import java.net.URLDecoder; import java.util.LinkedHashMap; import java.util.Map; /** * Created by dave on 15-05-05. */ public class ReferrerReceiver extends BroadcastReceiver { public static final String REFERRER = "REF"; public static final String UTM_CAMPAIGN = "utm_campaign"; public static final String UTM_SOURCE = "utm_source"; public static final String UTM_MEDIUM = "utm_medium"; public static final String UTM_TERM = "utm_term"; public static final String UTM_CONTENT = "utm_content"; private final String[] sources = { UTM_CAMPAIGN, UTM_SOURCE, UTM_MEDIUM, UTM_TERM, UTM_CONTENT }; @Override public void onReceive(Context context, Intent intent) { Bundle extras = intent.getExtras(); String referrerString = extras.getString("referrer"); try { Map getParams = getHashMapFromQuery(referrerString); SharedPreferences preferences = context .getSharedPreferences(REFERRER, Context.MODE_PRIVATE); SharedPreferences.Editor preferencesEditor = preferences.edit(); for (String sourceType : sources) { String source = getParams.get(sourceType); if (source != null) { preferencesEditor.putString(sourceType, source); } } preferencesEditor.commit(); } catch (UnsupportedEncodingException e) { Log.e("Referrer Error", e.getMessage()); } finally { // Pass along to google CampaignTrackingReceiver receiver = new CampaignTrackingReceiver(); receiver.onReceive(context, intent); } } public static Map getHashMapFromQuery(String query) throws UnsupportedEncodingException { Map query_pairs = new LinkedHashMap(); String[] pairs = query.split("&"); for (String pair : pairs) { int idx = pair.indexOf("="); query_pairs.put(URLDecoder.decode(pair.substring(0, idx), "UTF-8"), URLDecoder.decode(pair.substring(idx + 1), "UTF-8")); } return query_pairs; } } 

В файле манифеста:

          

Проверьте:

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

для решений.

Тобия

  • Получение данных из Android Play Store
  • versionCode vs versionName в Android Manifest
  • Что означает публикация сообщения об ошибке Google Play APK?
  • Почему в магазине Google Play говорится, что мое приложение для Android несовместимо с моим собственным устройством?
  • Как установить приложение Android Market на эмулятор?
  • Форматирование описания приложения Google Play
  • API для автоматической загрузки apk в Google Play?
  • Как открыть Google Play Store прямо из приложения для Android?
  • Как узнать, что мое приложение удалено с устройства ...?
  • Проектирование приложения для Android-планшета
  • Как ограничить приложение Android конкретным устройством?
  • Давайте будем гением компьютера.