Отключить GoogleAnalytics из приложения Android при тестировании или разработке
Я использую EasyTracker в своем приложении для Android, и мне нужно отключить отслеживание Google Analytics, когда приложение находится в режиме "разработки" или "тестирования" (у меня есть флаг в файле констант, чтобы различать).
Какой лучший способ сделать это?
Спасибо!
Ответы
Ответ 1
Вы можете использовать класс со статическим логическим значением, например DEBUG:
public final class BuildMode {
public final static boolean DEBUG = true;
}
В коде просто используйте:
if (BuildMode.DEBUG) ...
Это решение, работающее на всех версиях Android SDK!
Ответ 2
Я верю, что правильный способ сделать это с помощью версии 4 Analytics - с помощью метода Opt Out
GoogleAnalytics.getInstance(this).setAppOptOut(true);
Вы можете установить этот метод для установки в режиме отладки. то есть.
GoogleAnalytics.getInstance(this).setAppOptOut(BuildConfig.DEBUG);
Я использую нечто похожее, чтобы пользователи могли отказаться от аналитики.
Я нашел эту информацию по следующей ссылке: https://developers.google.com/analytics/devguides/collection/android/v4/advanced
Изменить: просто увидел дату исходного вопроса, но думал, что я все равно добавлю этот ответ, поскольку это то, что я искал.
Ответ 3
UPDATE: с выпуском Google Analytics v3 для Android,
SDK предоставляет флаг dryRun, который при установке запрещает любые данные из отправляется в Google Analytics. Флаг dryRun следует устанавливать каждый раз вы тестируете или отлаживаете реализацию и не хотите тестировать данных, которые будут отображаться в отчетах Google Analytics.
Чтобы установить флаг сухого хода:
//Когда установлен сухой режим, удары не будут отправлены, но все равно будут как будто они были отправлены.
GoogeAnalytics.getInstance(это).setDryRun(истина);
+++ Мой старый ответ +++
Просто прокомментируйте следующую строку в вашем файле analytics.xml
, пока вы находитесь в режиме разработки.
<string name="ga_trackingId">UA-****</string>
Google Analytics не сможет найти идентификатор отслеживания, поэтому EasyTracker не сможет выполнять свою работу.
Когда вы создаете приложение для выпуска, раскомментируйте строку, и вы хорошо пойдете.
Ответ 4
Если вы создаете автономное приложение (а не библиотеку), это будет самый простой способ сделать это, дайте системе сборки понять, является ли это отладочной сборкой или нет.
if(BuildConfig.DEBUG){
GoogleAnalytics.getInstance(this).setDryRun(true);
}
Я вижу в Интернете, что этот метод не очень хорошо работает для проектов библиотек, поскольку в средствах сборки есть ошибка, которая не корректно устанавливает флаг BuildConfig.DEBUG
для библиотек. Не уверен, исправлена ли эта проблема.
Ответ 5
Что я делаю, это отключить периодическую диспетчеризацию, установив отрицательный период в analytics.xml:
<integer name="ga_dispatchPeriod">-60</integer>
или вы можете сделать это программно, используя свой флаг:
if (testingMode) {
GAServiceManager.getInstance().setDispatchPeriod(-1);
} else {
GAServiceManager.getInstance().setDispatchPeriod(60);
}
Таким образом, хиты не отправляются, если вы не сделаете это вручную.
Это должно работать, если вы используете только периодическую диспетчеризацию (никогда не вызывая .dispatch()
вручную). Я думаю, что хиты, которые не отправлены до того, как 4 часа следующего дня каким-то образом отброшены, поскольку они не появляются в отчетах.
См. руководство разработчика Google Analytics:
Примечание. Данные должны быть отправлены и получены с помощью 4 утра следующего дня, в локальном часовом поясе каждого профиля. Любые данные, полученные позже чем это не будет отображаться в отчетах.
Дополнительная информация: https://developers.google.com/analytics/devguides/collection/android/v2/dispatch
Ответ 6
Моя техника заключается в изменении android:versionName
в Android Manifest до момента выпуска.
Например, 1.0.0.ALPHA
до времени создания APK выпуска, после чего вы можете перейти на 1.0.0
. Таким образом, вы все равно можете увидеть все свои отчеты о сбоях позже, но они будут группироваться в аналитике.
Этот билет SO говорит об использовании флага BuildConfig.DEBUG
для условной настройки аналитики и Atul Goyal's
отвечает за ответ на флаг dryRun
в v3
. Эти две вещи могут быть приятной настройкой, если вы не хотите видеть отчеты о сбоях во время отладки в будущем и считаете, что флаг BuildConfig.DEBUG
работает правильно.
Ответ 7
У меня другой подход к этой проблеме. Иногда вы все же хотите проверить правильность работы аналитики, но хотите просто отфильтровать тестовые данные в производственных отчетах. Моим решением является создание настраиваемого измерения области сеанса (например, AppBuild) в GA для свойства, которое отслеживает, если вы используете отладочную или производственную сборку приложения. В коде после создания Tracker поставьте:
// replace 1 with the correct dimension number if you have other dimensions defined
tracker.set("&cd1", BuildConfig.DEBUG ? "debug" : "production");
Затем создайте или измените представление GA, чтобы добавить фильтр в AppBuild, исключая debug. Это должно отфильтровывать все отладочные данные из вашего представления GA. Вы также можете добавить новое представление для отображения данных отладки.