This commit is contained in:
jantunesmessias 2025-02-19 10:58:27 -03:00
parent 3bbe005e80
commit b89b4b8a2c
2 changed files with 61 additions and 14 deletions

View File

@ -1,3 +1,6 @@
import 'dart:developer';
import 'dart:io';
import 'package:app_tracking_transparency/app_tracking_transparency.dart'; import 'package:app_tracking_transparency/app_tracking_transparency.dart';
import 'package:firebase_core/firebase_core.dart'; import 'package:firebase_core/firebase_core.dart';
import 'package:firebase_crashlytics/firebase_crashlytics.dart'; import 'package:firebase_crashlytics/firebase_crashlytics.dart';
@ -12,26 +15,68 @@ import 'package:hub/flutter_flow/flutter_flow_util.dart';
import 'package:hub/flutter_flow/nav/nav.dart'; import 'package:hub/flutter_flow/nav/nav.dart';
Future<void> initializeApp() async { Future<void> initializeApp() async {
WidgetsFlutterBinding.ensureInitialized();
// await _initializeTracking(); // await _initializeTracking();
// WidgetsFlutterBinding.ensureInitialized().addPostFrameCallback((_) async => // WidgetsFlutterBinding.ensureInitialized()
// await AppTrackingTransparency.requestTrackingAuthorization()); // .addPostFrameCallback((_) => _initializeAppTrackingTransparency());
await StorageHelper().init(); await StorageHelper().init();
await _initializeFirebase(); await _initializeFirebase();
await _initializeNotificationService(); await _initializeNotificationService();
_initializeUrlStrategy(); await _initializeUrlStrategy();
_initializeSystemSettings(); await _initializeSystemSettings();
await _initializeFlutterFlow(); await _initializeFlutterFlow();
await _initializeNav(); await _initializeNav();
} }
// Future<void> _initializeTracking() async { void _initializeAppTrackingTransparency() async {
// print('Requesting tracking authorization...'); if (Platform.isIOS) {
final status = await AppTrackingTransparency.trackingAuthorizationStatus;
if (status == TrackingStatus.notDetermined) {
await Future.delayed(const Duration(seconds: 2));
final request =
await AppTrackingTransparency.requestTrackingAuthorization();
if (request == TrackingStatus.authorized) {
log('Tracking authorized');
} else {
log('Tracking not authorized');
}
}
}
}
// print('Tracking authorization requested'); Future<void> showCustomTrackingDialog(BuildContext context) async {
// } // final String title = FFLocalizations.of(context).getVariableText(
// enText: 'Privacy',
// ptText: 'Privacidade',
// );
// final String content = FFLocalizations.of(context).getVariableText(
// enText:
// 'We care about your privacy and data security. We need your permission to use your data for crash reporting and diagnostics. '
// 'This helps us improve the app and provide a better user experience.\n\nYou can change your choice anytime in the app settings.',
// ptText:
// 'Prezamos pela sua privacidade e segurança dos seus dados. Precisamos da sua permissão para usar seus dados para relatórios de falhas e diagnósticos.'
// 'Isso nos ajuda a melhorar o aplicativo e fornecer uma melhor experiência ao usuário.\n\nVocê pode alterar sua escolha a qualquer momento nas configurações do aplicativo.',
// );
const String title = 'Privacy';
const String content =
'We care about your privacy and data security. We need your permission to use your data for crash reporting and diagnostics. '
'This helps us improve the app and provide a better user experience.\n\nYou can change your choice anytime in the app settings.';
return await showDialog<void>(
context: context,
builder: (context) => AlertDialog(
title: Text(title),
content: Text(content),
actions: [
TextButton(
onPressed: () => Navigator.pop(context),
child: const Text('Continue'),
),
],
),
);
}
Future<void> _initializeFirebase() async { Future<void> _initializeFirebase() async {
print('Initializing Firebase...'); print('Initializing Firebase...');
@ -45,7 +90,7 @@ Future<void> _initializeNotificationService() async {
print('Notification Service initialized'); print('Notification Service initialized');
} }
void _initializeUrlStrategy() { Future<void> _initializeUrlStrategy() async {
print('Initializing URL Strategy...'); print('Initializing URL Strategy...');
setUrlStrategy(PathUrlStrategy()); setUrlStrategy(PathUrlStrategy());
print('URL Strategy initialized'); print('URL Strategy initialized');

View File

@ -22,6 +22,7 @@ import 'initialization.dart';
final GlobalKey<NavigatorState> navigatorKey = GlobalKey<NavigatorState>(); final GlobalKey<NavigatorState> navigatorKey = GlobalKey<NavigatorState>();
void main() async { void main() async {
WidgetsFlutterBinding.ensureInitialized();
await initializeApp(); await initializeApp();
runApp(const ProviderScope(child: App())); runApp(const ProviderScope(child: App()));
FirebaseMessaging.onBackgroundMessage(_backgroundHandlerMessage); FirebaseMessaging.onBackgroundMessage(_backgroundHandlerMessage);
@ -169,8 +170,9 @@ class _AppState extends State<App> {
@override @override
void initState() { void initState() {
super.initState(); super.initState();
WidgetsBinding.instance.addPostFrameCallback(
FirebaseCrashlytics.instance.setCrashlyticsCollectionEnabled(true); (_) => _initializeAppTrackingTransparency(context));
// FirebaseCrashlytics.instance.setCrashlyticsCollectionEnabled(true);
_appStateNotifier = AppStateNotifier.instance; _appStateNotifier = AppStateNotifier.instance;
_router = createRouter(_appStateNotifier); _router = createRouter(_appStateNotifier);
Future.delayed( Future.delayed(
@ -183,15 +185,15 @@ class _AppState extends State<App> {
_setupFirebaseMessaging(); _setupFirebaseMessaging();
// if (TestUtil.isInTest) // // if (TestUtil.isInTest) //
DeepLinkService().ensureInitialization(); DeepLinkService().ensureInitialization();
WidgetsFlutterBinding.ensureInitialized().addPostFrameCallback(
(_) => _initializeAppTrackingTransparency(context));
} }
void _initializeAppTrackingTransparency(BuildContext context) async { void _initializeAppTrackingTransparency(BuildContext context) async {
if (Platform.isIOS) { if (Platform.isIOS) {
final status = await AppTrackingTransparency.trackingAuthorizationStatus; final status = await AppTrackingTransparency.trackingAuthorizationStatus;
if (status == TrackingStatus.notDetermined) { if (status == TrackingStatus.notDetermined) {
await Future.delayed(const Duration(seconds: 1));
await showCustomTrackingDialog(context); await showCustomTrackingDialog(context);
await Future.delayed(const Duration(seconds: 1));
final request = final request =
await AppTrackingTransparency.requestTrackingAuthorization(); await AppTrackingTransparency.requestTrackingAuthorization();
if (request == TrackingStatus.authorized) { if (request == TrackingStatus.authorized) {