From 272f50ed61319f7651602badee6a73f824d8f130 Mon Sep 17 00:00:00 2001 From: jantunesmessias Date: Wed, 19 Feb 2025 08:28:07 -0300 Subject: [PATCH 01/16] WIP --- lib/initialization.dart | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lib/initialization.dart b/lib/initialization.dart index eb72a67e..a81b7c10 100644 --- a/lib/initialization.dart +++ b/lib/initialization.dart @@ -26,7 +26,9 @@ Future initializeApp() async { Future _initializeTracking() async { print('Requesting tracking authorization...'); - await AppTrackingTransparency.requestTrackingAuthorization(); + WidgetsFlutterBinding.ensureInitialized().addPostFrameCallback((_) async { + await AppTrackingTransparency.requestTrackingAuthorization(); + }); print('Tracking authorization requested'); } From 5ffd4427d39bd1922773d624f793cca5d991adee Mon Sep 17 00:00:00 2001 From: jantunesmessias Date: Wed, 19 Feb 2025 08:39:20 -0300 Subject: [PATCH 02/16] WIP --- lib/initialization.dart | 18 +++++++++--------- lib/main.dart | 4 ++++ 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/lib/initialization.dart b/lib/initialization.dart index a81b7c10..33d9139e 100644 --- a/lib/initialization.dart +++ b/lib/initialization.dart @@ -12,8 +12,11 @@ import 'package:hub/flutter_flow/flutter_flow_util.dart'; import 'package:hub/flutter_flow/nav/nav.dart'; Future initializeApp() async { - WidgetsFlutterBinding.ensureInitialized(); - await _initializeTracking(); + // WidgetsFlutterBinding.ensureInitialized(); + // await _initializeTracking(); + WidgetsFlutterBinding.ensureInitialized().addPostFrameCallback((_) async => + await AppTrackingTransparency.requestTrackingAuthorization()); + await StorageHelper().init(); await _initializeFirebase(); @@ -24,14 +27,11 @@ Future initializeApp() async { await _initializeNav(); } -Future _initializeTracking() async { - print('Requesting tracking authorization...'); - WidgetsFlutterBinding.ensureInitialized().addPostFrameCallback((_) async { - await AppTrackingTransparency.requestTrackingAuthorization(); - }); +// Future _initializeTracking() async { +// print('Requesting tracking authorization...'); - print('Tracking authorization requested'); -} +// print('Tracking authorization requested'); +// } Future _initializeFirebase() async { print('Initializing Firebase...'); diff --git a/lib/main.dart b/lib/main.dart index d02e48c7..85680237 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -4,6 +4,7 @@ import 'dart:async'; import 'dart:developer'; import 'dart:io'; +import 'package:app_tracking_transparency/app_tracking_transparency.dart'; import 'package:firebase_crashlytics/firebase_crashlytics.dart'; import 'package:firebase_messaging/firebase_messaging.dart'; import 'package:flutter/material.dart'; @@ -182,6 +183,9 @@ class _AppState extends State { _setupFirebaseMessaging(); // if (TestUtil.isInTest) // DeepLinkService().ensureInitialization(); + // WidgetsFlutterBinding.ensureInitialized().addPostFrameCallback((_) async { + // await AppTrackingTransparency.requestTrackingAuthorization(); + // }); } @override From afe8d0d509339d95cb203c85ffe542deb48c9548 Mon Sep 17 00:00:00 2001 From: jantunesmessias Date: Wed, 19 Feb 2025 08:40:13 -0300 Subject: [PATCH 03/16] WIP --- lib/initialization.dart | 6 +++--- lib/main.dart | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/lib/initialization.dart b/lib/initialization.dart index 33d9139e..dd12633f 100644 --- a/lib/initialization.dart +++ b/lib/initialization.dart @@ -12,10 +12,10 @@ import 'package:hub/flutter_flow/flutter_flow_util.dart'; import 'package:hub/flutter_flow/nav/nav.dart'; Future initializeApp() async { - // WidgetsFlutterBinding.ensureInitialized(); + WidgetsFlutterBinding.ensureInitialized(); // await _initializeTracking(); - WidgetsFlutterBinding.ensureInitialized().addPostFrameCallback((_) async => - await AppTrackingTransparency.requestTrackingAuthorization()); + // WidgetsFlutterBinding.ensureInitialized().addPostFrameCallback((_) async => + // await AppTrackingTransparency.requestTrackingAuthorization()); await StorageHelper().init(); diff --git a/lib/main.dart b/lib/main.dart index 85680237..5b22460c 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -183,9 +183,9 @@ class _AppState extends State { _setupFirebaseMessaging(); // if (TestUtil.isInTest) // DeepLinkService().ensureInitialization(); - // WidgetsFlutterBinding.ensureInitialized().addPostFrameCallback((_) async { - // await AppTrackingTransparency.requestTrackingAuthorization(); - // }); + WidgetsFlutterBinding.ensureInitialized().addPostFrameCallback((_) async { + await AppTrackingTransparency.requestTrackingAuthorization(); + }); } @override From 6f12eaa8ea7e12542a30c30f12a264b5bf0f9330 Mon Sep 17 00:00:00 2001 From: jantunesmessias Date: Wed, 19 Feb 2025 08:54:48 -0300 Subject: [PATCH 04/16] WIP --- lib/main.dart | 50 +++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 47 insertions(+), 3 deletions(-) diff --git a/lib/main.dart b/lib/main.dart index 5b22460c..93b04752 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -183,11 +183,55 @@ class _AppState extends State { _setupFirebaseMessaging(); // if (TestUtil.isInTest) // DeepLinkService().ensureInitialization(); - WidgetsFlutterBinding.ensureInitialized().addPostFrameCallback((_) async { - await AppTrackingTransparency.requestTrackingAuthorization(); - }); + WidgetsFlutterBinding.ensureInitialized() + .addPostFrameCallback((_) => _initializeAppTrackingTransparency()); } + void _initializeAppTrackingTransparency() async { + if (Platform.isIOS) { + final status = await AppTrackingTransparency.trackingAuthorizationStatus; + if (status == TrackingStatus.notDetermined) { + 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 keep this app free by showing ads. ' + 'Can we continue to use your data to tailor ads for you?\n\nYou can change your choice anytime in the app settings. ' + 'Our partners will collect data and use a unique identifier on your device to show you ads.', + ptText: 'Prezamos pela sua privacidade e segurança dos seus dados. Mantemos este aplicativo gratuito exibindo anúncios.' + 'Podemos continuar a usar seus dados para personalizar anúncios para você?\n\nVocê pode alterar sua escolha a qualquer momento nas configurações do aplicativo.' + 'Nossos parceiros coletarão dados e usarão um identificador exclusivo em seu dispositivo para mostrar anúncios.', + ) + await showCustomTrackingDialog(context, title, content); + + final request = + await AppTrackingTransparency.requestTrackingAuthorization(); + if (request == TrackingStatus.authorized) { + log('Tracking authorized'); + } else { + log('Tracking not authorized'); + } + } + } + } + + Future showCustomTrackingDialog( + BuildContext context, String title, String content) async => + await showDialog( + context: context, + builder: (context) => AlertDialog( + title: Text(title), + content: Text(content), + actions: [ + TextButton( + onPressed: () => Navigator.pop(context), + child: const Text('Continue'), + ), + ], + ), + ); + @override void dispose() { super.dispose(); From ce6426ee9cebe1d4dfe703b2c37a89bc8e55f24b Mon Sep 17 00:00:00 2001 From: jantunesmessias Date: Wed, 19 Feb 2025 08:55:19 -0300 Subject: [PATCH 05/16] WIP --- lib/main.dart | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/lib/main.dart b/lib/main.dart index 93b04752..8ae62812 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -196,13 +196,15 @@ class _AppState extends State { ptText: 'Privacidade', ); final String content = FFLocalizations.of(context).getVariableText( - enText: 'We care about your privacy and data security. We keep this app free by showing ads. ' - 'Can we continue to use your data to tailor ads for you?\n\nYou can change your choice anytime in the app settings. ' - 'Our partners will collect data and use a unique identifier on your device to show you ads.', - ptText: 'Prezamos pela sua privacidade e segurança dos seus dados. Mantemos este aplicativo gratuito exibindo anúncios.' - 'Podemos continuar a usar seus dados para personalizar anúncios para você?\n\nVocê pode alterar sua escolha a qualquer momento nas configurações do aplicativo.' - 'Nossos parceiros coletarão dados e usarão um identificador exclusivo em seu dispositivo para mostrar anúncios.', - ) + enText: + 'We care about your privacy and data security. We keep this app free by showing ads. ' + 'Can we continue to use your data to tailor ads for you?\n\nYou can change your choice anytime in the app settings. ' + 'Our partners will collect data and use a unique identifier on your device to show you ads.', + ptText: + 'Prezamos pela sua privacidade e segurança dos seus dados. Mantemos este aplicativo gratuito exibindo anúncios.' + 'Podemos continuar a usar seus dados para personalizar anúncios para você?\n\nVocê pode alterar sua escolha a qualquer momento nas configurações do aplicativo.' + 'Nossos parceiros coletarão dados e usarão um identificador exclusivo em seu dispositivo para mostrar anúncios.', + ); await showCustomTrackingDialog(context, title, content); final request = From f570d9db2303d2573113c12afae1640b28677c15 Mon Sep 17 00:00:00 2001 From: jantunesmessias Date: Wed, 19 Feb 2025 08:58:04 -0300 Subject: [PATCH 06/16] WIP --- lib/main.dart | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/lib/main.dart b/lib/main.dart index 8ae62812..2e052330 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -197,13 +197,11 @@ class _AppState extends State { ); final String content = FFLocalizations.of(context).getVariableText( enText: - 'We care about your privacy and data security. We keep this app free by showing ads. ' - 'Can we continue to use your data to tailor ads for you?\n\nYou can change your choice anytime in the app settings. ' - 'Our partners will collect data and use a unique identifier on your device to show you ads.', + '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. Mantemos este aplicativo gratuito exibindo anúncios.' - 'Podemos continuar a usar seus dados para personalizar anúncios para você?\n\nVocê pode alterar sua escolha a qualquer momento nas configurações do aplicativo.' - 'Nossos parceiros coletarão dados e usarão um identificador exclusivo em seu dispositivo para mostrar anúncios.', + '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.', ); await showCustomTrackingDialog(context, title, content); From d465869bc9ea9d32626491910064fe981af26526 Mon Sep 17 00:00:00 2001 From: jantunesmessias Date: Wed, 19 Feb 2025 09:00:04 -0300 Subject: [PATCH 07/16] WIP --- lib/main.dart | 57 ++++++++++++++++++++++++++------------------------- 1 file changed, 29 insertions(+), 28 deletions(-) diff --git a/lib/main.dart b/lib/main.dart index 2e052330..6758c00f 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -191,19 +191,7 @@ class _AppState extends State { if (Platform.isIOS) { final status = await AppTrackingTransparency.trackingAuthorizationStatus; if (status == TrackingStatus.notDetermined) { - 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.', - ); - await showCustomTrackingDialog(context, title, content); + await showCustomTrackingDialog(context); final request = await AppTrackingTransparency.requestTrackingAuthorization(); @@ -216,21 +204,34 @@ class _AppState extends State { } } - Future showCustomTrackingDialog( - BuildContext context, String title, String content) async => - await showDialog( - context: context, - builder: (context) => AlertDialog( - title: Text(title), - content: Text(content), - actions: [ - TextButton( - onPressed: () => Navigator.pop(context), - child: const Text('Continue'), - ), - ], - ), - ); + Future 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.', + ); + + return await showDialog( + context: context, + builder: (context) => AlertDialog( + title: Text(title), + content: Text(content), + actions: [ + TextButton( + onPressed: () => Navigator.pop(context), + child: const Text('Continue'), + ), + ], + ), + ); + } @override void dispose() { From 9df0a15374db84093c4f3904bc1b5b8be7e5a71f Mon Sep 17 00:00:00 2001 From: jantunesmessias Date: Wed, 19 Feb 2025 09:08:45 -0300 Subject: [PATCH 08/16] WIP --- lib/main.dart | 1 - 1 file changed, 1 deletion(-) diff --git a/lib/main.dart b/lib/main.dart index 6758c00f..187a160b 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -192,7 +192,6 @@ class _AppState extends State { final status = await AppTrackingTransparency.trackingAuthorizationStatus; if (status == TrackingStatus.notDetermined) { await showCustomTrackingDialog(context); - final request = await AppTrackingTransparency.requestTrackingAuthorization(); if (request == TrackingStatus.authorized) { From 3bbe005e80aa3df2edd56aa9a1514c9f885797e0 Mon Sep 17 00:00:00 2001 From: jantunesmessias Date: Wed, 19 Feb 2025 09:55:48 -0300 Subject: [PATCH 09/16] WIP --- lib/main.dart | 34 +++++++++++++++++++--------------- 1 file changed, 19 insertions(+), 15 deletions(-) diff --git a/lib/main.dart b/lib/main.dart index 187a160b..88d1607b 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -183,11 +183,11 @@ class _AppState extends State { _setupFirebaseMessaging(); // if (TestUtil.isInTest) // DeepLinkService().ensureInitialization(); - WidgetsFlutterBinding.ensureInitialized() - .addPostFrameCallback((_) => _initializeAppTrackingTransparency()); + WidgetsFlutterBinding.ensureInitialized().addPostFrameCallback( + (_) => _initializeAppTrackingTransparency(context)); } - void _initializeAppTrackingTransparency() async { + void _initializeAppTrackingTransparency(BuildContext context) async { if (Platform.isIOS) { final status = await AppTrackingTransparency.trackingAuthorizationStatus; if (status == TrackingStatus.notDetermined) { @@ -204,18 +204,22 @@ class _AppState extends State { } Future 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.', - ); + // 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( context: context, From b89b4b8a2ce39491c5f6528ee827943a4276ec4a Mon Sep 17 00:00:00 2001 From: jantunesmessias Date: Wed, 19 Feb 2025 10:58:27 -0300 Subject: [PATCH 10/16] WIP --- lib/initialization.dart | 65 ++++++++++++++++++++++++++++++++++------- lib/main.dart | 10 ++++--- 2 files changed, 61 insertions(+), 14 deletions(-) diff --git a/lib/initialization.dart b/lib/initialization.dart index dd12633f..679e5518 100644 --- a/lib/initialization.dart +++ b/lib/initialization.dart @@ -1,3 +1,6 @@ +import 'dart:developer'; +import 'dart:io'; + import 'package:app_tracking_transparency/app_tracking_transparency.dart'; import 'package:firebase_core/firebase_core.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'; Future initializeApp() async { - WidgetsFlutterBinding.ensureInitialized(); // await _initializeTracking(); - // WidgetsFlutterBinding.ensureInitialized().addPostFrameCallback((_) async => - // await AppTrackingTransparency.requestTrackingAuthorization()); + // WidgetsFlutterBinding.ensureInitialized() + // .addPostFrameCallback((_) => _initializeAppTrackingTransparency()); await StorageHelper().init(); await _initializeFirebase(); await _initializeNotificationService(); - _initializeUrlStrategy(); - _initializeSystemSettings(); + await _initializeUrlStrategy(); + await _initializeSystemSettings(); await _initializeFlutterFlow(); await _initializeNav(); } -// Future _initializeTracking() async { -// print('Requesting tracking authorization...'); +void _initializeAppTrackingTransparency() async { + 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 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( + context: context, + builder: (context) => AlertDialog( + title: Text(title), + content: Text(content), + actions: [ + TextButton( + onPressed: () => Navigator.pop(context), + child: const Text('Continue'), + ), + ], + ), + ); +} Future _initializeFirebase() async { print('Initializing Firebase...'); @@ -45,7 +90,7 @@ Future _initializeNotificationService() async { print('Notification Service initialized'); } -void _initializeUrlStrategy() { +Future _initializeUrlStrategy() async { print('Initializing URL Strategy...'); setUrlStrategy(PathUrlStrategy()); print('URL Strategy initialized'); diff --git a/lib/main.dart b/lib/main.dart index 88d1607b..ff31ee6e 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -22,6 +22,7 @@ import 'initialization.dart'; final GlobalKey navigatorKey = GlobalKey(); void main() async { + WidgetsFlutterBinding.ensureInitialized(); await initializeApp(); runApp(const ProviderScope(child: App())); FirebaseMessaging.onBackgroundMessage(_backgroundHandlerMessage); @@ -169,8 +170,9 @@ class _AppState extends State { @override void initState() { super.initState(); - - FirebaseCrashlytics.instance.setCrashlyticsCollectionEnabled(true); + WidgetsBinding.instance.addPostFrameCallback( + (_) => _initializeAppTrackingTransparency(context)); + // FirebaseCrashlytics.instance.setCrashlyticsCollectionEnabled(true); _appStateNotifier = AppStateNotifier.instance; _router = createRouter(_appStateNotifier); Future.delayed( @@ -183,15 +185,15 @@ class _AppState extends State { _setupFirebaseMessaging(); // if (TestUtil.isInTest) // DeepLinkService().ensureInitialization(); - WidgetsFlutterBinding.ensureInitialized().addPostFrameCallback( - (_) => _initializeAppTrackingTransparency(context)); } void _initializeAppTrackingTransparency(BuildContext context) async { if (Platform.isIOS) { final status = await AppTrackingTransparency.trackingAuthorizationStatus; if (status == TrackingStatus.notDetermined) { + await Future.delayed(const Duration(seconds: 1)); await showCustomTrackingDialog(context); + await Future.delayed(const Duration(seconds: 1)); final request = await AppTrackingTransparency.requestTrackingAuthorization(); if (request == TrackingStatus.authorized) { From d585eaace54bbae5d33f9a9d37c9d61e0056f8c6 Mon Sep 17 00:00:00 2001 From: jantunesmessias Date: Wed, 19 Feb 2025 11:00:26 -0300 Subject: [PATCH 11/16] WIP --- lib/main.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/main.dart b/lib/main.dart index ff31ee6e..22d7df11 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -193,7 +193,7 @@ class _AppState extends State { if (status == TrackingStatus.notDetermined) { await Future.delayed(const Duration(seconds: 1)); await showCustomTrackingDialog(context); - await Future.delayed(const Duration(seconds: 1)); + await Future.delayed(const Duration(seconds: 2)); final request = await AppTrackingTransparency.requestTrackingAuthorization(); if (request == TrackingStatus.authorized) { From a9a62a4f9e3aa6bffb80680fffb5f90c630f53ea Mon Sep 17 00:00:00 2001 From: jantunesmessias Date: Wed, 19 Feb 2025 11:08:25 -0300 Subject: [PATCH 12/16] WIP --- lib/main.dart | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/lib/main.dart b/lib/main.dart index 22d7df11..5560a0df 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -191,8 +191,7 @@ class _AppState extends State { if (Platform.isIOS) { final status = await AppTrackingTransparency.trackingAuthorizationStatus; if (status == TrackingStatus.notDetermined) { - await Future.delayed(const Duration(seconds: 1)); - await showCustomTrackingDialog(context); + // await showCustomTrackingDialog(context); await Future.delayed(const Duration(seconds: 2)); final request = await AppTrackingTransparency.requestTrackingAuthorization(); From a94f0dd97771c44ac681142439320d1a25547c14 Mon Sep 17 00:00:00 2001 From: jantunesmessias Date: Wed, 19 Feb 2025 11:17:40 -0300 Subject: [PATCH 13/16] appTracking in init --- lib/initialization.dart | 37 ++-------------------------- lib/main.dart | 54 +---------------------------------------- 2 files changed, 3 insertions(+), 88 deletions(-) diff --git a/lib/initialization.dart b/lib/initialization.dart index 679e5518..3c683232 100644 --- a/lib/initialization.dart +++ b/lib/initialization.dart @@ -16,8 +16,8 @@ import 'package:hub/flutter_flow/nav/nav.dart'; Future initializeApp() async { // await _initializeTracking(); - // WidgetsFlutterBinding.ensureInitialized() - // .addPostFrameCallback((_) => _initializeAppTrackingTransparency()); + WidgetsFlutterBinding.ensureInitialized() + .addPostFrameCallback((_) => _initializeAppTrackingTransparency()); await StorageHelper().init(); @@ -45,39 +45,6 @@ void _initializeAppTrackingTransparency() async { } } -Future 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( - context: context, - builder: (context) => AlertDialog( - title: Text(title), - content: Text(content), - actions: [ - TextButton( - onPressed: () => Navigator.pop(context), - child: const Text('Continue'), - ), - ], - ), - ); -} - Future _initializeFirebase() async { print('Initializing Firebase...'); await Firebase.initializeApp(); diff --git a/lib/main.dart b/lib/main.dart index 5560a0df..0446355a 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -22,7 +22,6 @@ import 'initialization.dart'; final GlobalKey navigatorKey = GlobalKey(); void main() async { - WidgetsFlutterBinding.ensureInitialized(); await initializeApp(); runApp(const ProviderScope(child: App())); FirebaseMessaging.onBackgroundMessage(_backgroundHandlerMessage); @@ -170,8 +169,7 @@ class _AppState extends State { @override void initState() { super.initState(); - WidgetsBinding.instance.addPostFrameCallback( - (_) => _initializeAppTrackingTransparency(context)); + // FirebaseCrashlytics.instance.setCrashlyticsCollectionEnabled(true); _appStateNotifier = AppStateNotifier.instance; _router = createRouter(_appStateNotifier); @@ -187,56 +185,6 @@ class _AppState extends State { DeepLinkService().ensureInitialization(); } - void _initializeAppTrackingTransparency(BuildContext context) async { - if (Platform.isIOS) { - final status = await AppTrackingTransparency.trackingAuthorizationStatus; - if (status == TrackingStatus.notDetermined) { - // await showCustomTrackingDialog(context); - await Future.delayed(const Duration(seconds: 2)); - final request = - await AppTrackingTransparency.requestTrackingAuthorization(); - if (request == TrackingStatus.authorized) { - log('Tracking authorized'); - } else { - log('Tracking not authorized'); - } - } - } - } - - Future 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( - context: context, - builder: (context) => AlertDialog( - title: Text(title), - content: Text(content), - actions: [ - TextButton( - onPressed: () => Navigator.pop(context), - child: const Text('Continue'), - ), - ], - ), - ); - } - @override void dispose() { super.dispose(); From 6b437e70e607e84561f08b347afa71f773bc681a Mon Sep 17 00:00:00 2001 From: jantunesmessias Date: Wed, 19 Feb 2025 11:18:20 -0300 Subject: [PATCH 14/16] WIP --- lib/initialization.dart | 2 +- lib/main.dart | 2 +- test/features/module/module_test.dart | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/initialization.dart b/lib/initialization.dart index 3c683232..1d2e5c20 100644 --- a/lib/initialization.dart +++ b/lib/initialization.dart @@ -14,7 +14,7 @@ import 'package:hub/flutter_flow/flutter_flow_theme.dart'; import 'package:hub/flutter_flow/flutter_flow_util.dart'; import 'package:hub/flutter_flow/nav/nav.dart'; -Future initializeApp() async { +Future initializeBindings() async { // await _initializeTracking(); WidgetsFlutterBinding.ensureInitialized() .addPostFrameCallback((_) => _initializeAppTrackingTransparency()); diff --git a/lib/main.dart b/lib/main.dart index 0446355a..6a34430c 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -22,7 +22,7 @@ import 'initialization.dart'; final GlobalKey navigatorKey = GlobalKey(); void main() async { - await initializeApp(); + await initializeBindings(); runApp(const ProviderScope(child: App())); FirebaseMessaging.onBackgroundMessage(_backgroundHandlerMessage); } diff --git a/test/features/module/module_test.dart b/test/features/module/module_test.dart index 430d9e9f..6047230c 100644 --- a/test/features/module/module_test.dart +++ b/test/features/module/module_test.dart @@ -29,7 +29,7 @@ void main() { IntegrationTestWidgetsFlutterBinding.ensureInitialized(); setUpAll(() async { - await initializeApp(); + await initializeBindings(); }); group('Test', () { From 8c91335ba19691c7d602690c06cc61abc332cb16 Mon Sep 17 00:00:00 2001 From: jantunesmessias Date: Wed, 19 Feb 2025 11:23:59 -0300 Subject: [PATCH 15/16] WIP --- lib/initialization.dart | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/lib/initialization.dart b/lib/initialization.dart index 1d2e5c20..e420c331 100644 --- a/lib/initialization.dart +++ b/lib/initialization.dart @@ -16,11 +16,9 @@ import 'package:hub/flutter_flow/nav/nav.dart'; Future initializeBindings() async { // await _initializeTracking(); - WidgetsFlutterBinding.ensureInitialized() - .addPostFrameCallback((_) => _initializeAppTrackingTransparency()); - + WidgetsFlutterBinding.ensureInitialized(); + await _initializeAppTrackingTransparency(); await StorageHelper().init(); - await _initializeFirebase(); await _initializeNotificationService(); await _initializeUrlStrategy(); @@ -29,7 +27,7 @@ Future initializeBindings() async { await _initializeNav(); } -void _initializeAppTrackingTransparency() async { +Future _initializeAppTrackingTransparency() async { if (Platform.isIOS) { final status = await AppTrackingTransparency.trackingAuthorizationStatus; if (status == TrackingStatus.notDetermined) { From 7d63d91ffdabb37820f783d27bfc96ffed2a409e Mon Sep 17 00:00:00 2001 From: Ivan Antunes Date: Wed, 19 Feb 2025 11:32:27 -0300 Subject: [PATCH 16/16] build 28 --- pubspec.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pubspec.yaml b/pubspec.yaml index f2c4bc5a..d2873adf 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -3,7 +3,7 @@ description: A new Flutter project. publish_to: "none" -version: 1.4.0+27 +version: 1.4.0+28 environment: sdk: ">=3.0.0 <4.0.0"