Каждый раз при загрузке нового выпуска в магазин Google Play я получаю около 8 новых пользователей, которые вошли в мою аналитическую консоль Firebase в течение примерно 10 минут. Я еще не выпустил свое приложение публично, оно находится на закрытом тестовом треке, в котором никто не участвовал. Единственная возможная причина - внутреннее тестирование Google, такое как отчеты о предварительном запуске. Эти числа действительно испортят мои данные аналитики, поэтому я хотел бы исключить этот тестовый трафик из аналитики Firebase.
После выполнения предложений в этих предыдущих вопросах, к сожалению, ни одно из упомянутых решений не исключает действия по тестированию.
- Как предотвратить влияние тестирования Play Store на Firebase Analytics а>
- Отключить Google Analytics из отчетов о предварительном запуске Android
- Исключить тестовое устройство из ведения журнала Firebase Analytics
В моем AndroidManifest.xml после первой строки в теге приложения у меня есть:
<meta-data android:name="firebase_analytics_collection_enabled" android:value="false" />
В начале onCreate () в моей MainActicity у меня есть:
if(!isTestDevice(this))
{
FirebaseAnalytics.getInstance(this).setAnalyticsCollectionEnabled(true);
}
И у меня есть такая функция:
public static boolean isTestDevice(Context context) {
String testLabSetting = Settings.System.getString(context.getContentResolver(), "firebase.test.lab");
return "true".equals(testLabSetting);
}
Сначала я подумал, что функция isTestDevice может работать некорректно, поэтому я добавил следующий код отладки на свой домашний экран:
if(isTestDevice(linearLayout.getContext())) {
TextView testText = new TextView(linearLayout.getContext());
testText.setText("TEST DEVICE");
testText.setId(linearLayout.generateViewId());
linearLayout.addView(testText, 0, params);
TextView disabledText = new TextView(linearLayout.getContext());
disabledText.setText("Analytics disabled");
disabledText.setId(linearLayout.generateViewId());
linearLayout.addView(disabledText, 0, params);
}
А на скриншотах предпусковых отчетов я вижу, что функция isTestDevice работает:
Кроме того, если я закомментирую строку setAnalyticsCollectionEnabled(true);
, то никакая активность не будет регистрироваться в консоли аналитики Firebase, что показывает, что строка в AndroidManifest.xml правильно отключает аналитику до тех пор, пока не будет запущена строка setAnalyticsCollectionEnabled(true);
.
Кроме того, даже если я отключу предварительные отчеты, такая же активность будет регистрироваться примерно у 8 пользователей в течение нескольких минут после загрузки релиза.
Похоже, что регистрируемая активность исходит из какого-то источника, отличного от отчетов о предварительном запуске, поскольку я могу видеть из снимков экрана перед запуском, что устройства предварительного запуска правильно определяются как тестовые устройства, и, кроме того, активность все еще регистрируется, даже если я отключу предварительные отчеты. Но даже при этом активность регистрируется в течение 10 минут после загрузки релиза.
Как я могу предотвратить регистрацию этого действия по тестированию в аналитике firebase? Похоже, что решения в связанных сообщениях больше не работают.
РЕДАКТИРОВАТЬ: Основная особенность моего приложения - это игра. На данный момент мне удалось по существу обойти проблему, включив аналитику только в том случае, если пользователь набирает в игре более одного очка. Это эффективно удаляет весь трафик, регистрируемый ботами, поскольку они просто бесцельно щелкают что-либо и не имеют никакого интеллекта, необходимого для того, чтобы набрать более одного балла. Но это действительно плохой хак, который я бы хотел удалить.