Intereting Posts
Родной сбой в /system/lib/libart.so на lollipop android 5.0.1 samsung Как установить несколько родительских действий для использования кнопки андроида Могу ли я иметь один ключ API Карт Google для всех моих приложений, не регистрируя их имена пакетов? Обработка ошибок при синхронном вызове с помощью «Дооснащения» StartActivity () из BroadcastReceiver Как сделать тамильский unicode в Android OnActivityResult () не вызывается в новом вложенном фрагменте API Lambda вызывает исключение компилятора в модуле библиотеки Android Проблема упорядочивания стека событий при запуске приложения из установщика приложений Android и с главного экрана Не удалось найти Facebook SDK.apk Android WebView – настройка фокуса фокуса HTML с использованием Javascript Как центрировать двухстрочный текст в TextView на Android? Изменение содержимого рамки с нажатием кнопки Увеличьте уровень API Android во время обновления приложения. Android OpenGL .OBJ загрузчик файлов

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

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

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

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

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

Solutions Collecting From Web of "Получить тег реферера Google Analytics Android"

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

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

Ответ @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<String, String> 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<String, String> getHashMapFromQuery(String query) throws UnsupportedEncodingException { Map<String, String> query_pairs = new LinkedHashMap<String, String>(); 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; } } 

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

  <service android:name="com.google.android.gms.analytics.CampaignTrackingService" /> <receiver android:name="com.google.android.gms.analytics.CampaignTrackingReceiver" /> <!-- Make sure this points to the location of Referrer Receiver in your package --> <receiver android:name=".ReferrerReceiver" android:exported="true"> <intent-filter> <action android:name="com.android.vending.INSTALL_REFERRER" /> </intent-filter> </receiver> 

Проверьте на:

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

Для решений.

Тобия