专门针对 flutter 应用程序,
一种方法是获取设备 ID,然后针对每个分析调用检查它是否是测试设备。有没有更好的方法或功能在应用程序级别执行此操作?
如果我的测试设备一直在变化怎么办?
我想我找到了实现这一目标的方法。当然,你必须查询它是哪个设备,这取决于你如何识别测试设备。可能通过像“imei_plugin”这样的包。我们通过应用程序连接到的 APi 来识别这一点。
如果您知道该设备是测试设备,那么您只需执行以下操作:
FirebaseAnalytics.instance.setAnalyticsCollectionEnabled(false);
或
true
(如果您想启用数据收集)。
我在 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 发送数据?