如何在 flutter 中禁用整个设备(测试设备 -android 和 iOS)的 firebase 分析?

问题描述 投票:0回答:2

专门针对 flutter 应用程序,

一种方法是获取设备 ID,然后针对每个分析调用检查它是否是测试设备。有没有更好的方法或功能在应用程序级别执行此操作?

如果我的测试设备一直在变化怎么办?

flutter firebase-analytics
2个回答
8
投票

我想我找到了实现这一目标的方法。当然,你必须查询它是哪个设备,这取决于你如何识别测试设备。可能通过像“imei_plugin”这样的包。我们通过应用程序连接到的 APi 来识别这一点。

如果您知道该设备是测试设备,那么您只需执行以下操作:

FirebaseAnalytics.instance.setAnalyticsCollectionEnabled(false);

true
(如果您想启用数据收集)。


0
投票

我在 Flutter 应用程序(iOS 和 Android)中使用 Firebase Analytics。我使用 FirebaseAnalyticsObserver,我想确保它仅在用户同意后发送数据。

app.dart:

import 'dart:io';
import 'package:firebase_analytics/firebase_analytics.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:test/features/_routes/router.dart';

class App extends StatelessWidget {
  /// Firebase Analytics by Google offers an observer that automatically
  /// collects informational data such as page views.
  final FirebaseAnalyticsObserver _observer = FirebaseAnalyticsObserver(
    analytics: FirebaseAnalytics.instance,
  );

  final _appRouter = AppRouter();

  App({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    if (Platform.isIOS) {
      return CupertinoApp.router(
        routerConfig: _appRouter.config(),
        routeInformationParser: _appRouter.defaultRouteParser(),
        routerDelegate: _appRouter.delegate(
          navigatorObservers: () => <NavigatorObserver>[
            _observer,
          ],
        ),
      );
    } else if (Platform.isAndroid) {
      return MaterialApp.router(
        routeInformationParser: _appRouter.defaultRouteParser(),
        routerDelegate: _appRouter.delegate(
          navigatorObservers: () => <NavigatorObserver>[
            _observer,
          ],
        ),
      );
    } else {
      return const MaterialApp(
        home: SafeArea(
          child: Center(
            child: Text("This platform is not supported"),
          ),
        ),
      );
    }
  }
}

路由器.dart:

import 'package:auto_route/auto_route.dart';
import 'package:test/features/_routes/router.gr.dart';

@AutoRouterConfig()
class AppRouter extends $AppRouter {
  @override
  RouteType get defaultRouteType => const RouteType.adaptive();

  @override
  final List<AutoRoute> routes = [
    AutoRoute(page: SplashRoute.page, path: '/'),
    // all the other pages...
  ];
}

到目前为止,我已遵循以下说明:https://firebase.google.com/docs/analytics/configure-data-collection?platform=ios#swift但是,我不确定这是否也可以用于阻止观察家。谁能告诉我如何在未经同意的情况下检查我的应用程序是否正在向 Firebase Analytics 发送数据?

© www.soinside.com 2019 - 2024. All rights reserved.