Я хочу отключить ведение журнала Firebase Analytics в проекте Flutter, когда приложение запускается в Firebase Test Lab. Согласно документации Firebase, TestLab может быть обнаружен путем добавления следующего в MainActivity.java

String testLabSetting = Settings.System.getString(getContentResolver(), "firebase.test.lab");
if ("true".equals(testLabSetting)) {
    // Do something when running in Test Lab
    // ...
}

Как я могу получить доступ к результату этого теста на стороне дротика в main.dart, где я хочу отключить ведение журнала (поскольку есть некоторые другие причины, по которым ведение журнала отключено уже в коде dart).

Благодарность!

4
Daz 21 Дек 2019 в 04:06
Вы можете использовать MethodChannel для отправки данных (boolean здесь) в ваш код Dart.
 – 
CopsOnRoad
21 Дек 2019 в 09:23
 – 
pskink
21 Дек 2019 в 09:25
Не работает
 – 
Ricardo Romero Benítez
2 Фев 2021 в 12:54
Я пытался создать MethodChannel и проверял "firebase.test.lab", но все же боты создают учетные записи
 – 
Ricardo Romero Benítez
2 Фев 2021 в 13:01

1 ответ

Я только что нашел это. Но я еще не пробовал:

https://pub.dev/packages/flutter_runtime_env

Этот проект позволяет вам проверить, работаете ли вы в тестовых лабораториях Firebase.

Вы можете использовать это как их пример:

import 'dart:async';
import 'package:flutter/material.dart';

import 'package:flutter_runtime_env/flutter_runtime_env.dart';

void main() => runApp(MyApp());

class MyApp extends StatefulWidget {
  @override
  _MyAppState createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  bool _shouldBeEnabled = false;

  @override
  void initState() {
    super.initState();
    initPlatformState();
  }

  // Platform messages are asynchronous, so we initialize in an async method.
  Future<void> initPlatformState() async {
    var result = await shouldEnableAnalytics();
    setState(() {
      _shouldBeEnabled = result;
    });
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text('Should Enable Analytics'),
        ),
        body: Center(
          child: Text('Should Analytics be Enabled: $_shouldBeEnabled\n'),
        ),
      ),
    );
  }
}

РЕДАКТИРОВАТЬ:

Думаю, я нашел лучшее решение.

https://pub.dev/packages/flutter_sentry

Он имеет следующий метод

/// Return `true` if running under Firebase Test Lab (includes pre-launch
/// report environment) on Android, `false` otherwise.
static Future<bool> isFirebaseTestLab() async

Это пока что кажется лучшим решением ...

РЕДАКТИРОВАТЬ 2:

К черту! Я только что создал небольшой плагин.

https://pub.dev/packages/is_firebase_test_lab_activated

2
Ricardo Romero Benítez 26 Янв 2021 в 00:47
2
Ссылка на решение приветствуется, но убедитесь, что ваш ответ полезен и без нее: добавьте контекст вокруг ссылки, чтобы другие пользователи иметь некоторое представление о том, что это такое и почему он существует, а затем процитировать наиболее релевантную часть страницы, на которую вы ссылаетесь, в случае, если целевая страница недоступна. Ответы, которые представляют собой не более чем ссылку, могут быть удалены.
 – 
Shree
25 Янв 2021 в 18:23