Подтвердить что ты не робот

Отключить GoogleAnalytics из приложения Android при тестировании или разработке

Я использую EasyTracker в своем приложении для Android, и мне нужно отключить отслеживание Google Analytics, когда приложение находится в режиме "разработки" или "тестирования" (у меня есть флаг в файле констант, чтобы различать).

Какой лучший способ сделать это?

Спасибо!

4b9b3361

Ответ 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. Вы также можете добавить новое представление для отображения данных отладки.