diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml
index eaa9867b..2aae49b8 100644
--- a/android/app/src/main/AndroidManifest.xml
+++ b/android/app/src/main/AndroidManifest.xml
@@ -47,8 +47,12 @@
android:name="io.flutter.embedding.android.SplashScreenDrawable"
android:resource="@drawable/launch_background"
/>
-
-
+
+
+
+
+
+
@@ -94,4 +98,10 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/lib/main.dart b/lib/main.dart
index eb886a2a..5ce3975f 100644
--- a/lib/main.dart
+++ b/lib/main.dart
@@ -3,17 +3,21 @@ import 'dart:developer';
import 'package:app_tracking_transparency/app_tracking_transparency.dart';
import 'package:firebase_core/firebase_core.dart';
import 'package:firebase_crashlytics/firebase_crashlytics.dart';
+import 'package:firebase_messaging/firebase_messaging.dart';
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_localizations/flutter_localizations.dart';
import 'package:flutter_web_plugins/url_strategy.dart';
+import 'package:hub/backend/api_requests/api_calls.dart';
+import 'package:hub/backend/api_requests/api_manager.dart';
import 'package:hub/backend/notifications/firebase_messaging_service.dart';
import 'package:hub/backend/notifications/notification_service.dart';
import 'package:hub/flutter_flow/flutter_flow_theme.dart';
import 'package:hub/flutter_flow/flutter_flow_util.dart';
import 'package:hub/flutter_flow/internationalization.dart';
import 'package:hub/flutter_flow/nav/nav.dart';
+import 'package:hub/shared/utils/log_util.dart';
import 'package:provider/provider.dart';
import 'package:responsive_framework/responsive_framework.dart';
@@ -28,8 +32,7 @@ Future initializeApp() async {
await appState.initializePersistedState();
await Firebase.initializeApp();
- await FirebaseMessagingService().initNotifications();
- await NotificationService.initialize();
+ // await NotificationService.initialize();
setUrlStrategy(const PathUrlStrategy());
SystemChrome.setPreferredOrientations([DeviceOrientation.portraitUp]);
@@ -48,6 +51,18 @@ Future initializeApp() async {
usePathUrlStrategy();
}
+Future handleMessage(RemoteMessage message) async {
+ NotificationService.show(
+ title: message.notification!.title!,
+ body: message.notification!.body!,
+ payload: Map.from(message.data));
+}
+
+Future _firebaseMessagingBackgroundHandler(RemoteMessage message) async {
+ await Firebase.initializeApp();
+ log('Background message: ${message.toMap()}');
+}
+
void main() async {
await initializeApp();
runApp(const App());
@@ -67,6 +82,32 @@ class _AppState extends State {
late AppStateNotifier _appStateNotifier;
late GoRouter _router;
bool displaySplashImage = true;
+ final FirebaseMessaging _firebaseMessaging = FirebaseMessaging.instance;
+
+ Future updateDeviceToken() async {
+ try {
+ final String? deviceToken = await _firebaseMessaging.getToken();
+
+ if (deviceToken != null) {
+ AppState().token = deviceToken;
+
+ final ApiCallResponse? response = await PhpGroup.updToken.call(
+ token: AppState().token,
+ devid: AppState().devUUID,
+ useruuid: AppState().userUUID);
+
+ if (PhpGroup.updToken.error((response?.jsonBody ?? '')) == false) {
+ log('Token Atualizado com Sucesso!');
+ } else {
+ log('Falha ao Atualizar Token: ${response?.jsonBody}');
+ }
+ } else {
+ log('Falha ao Pegar Token do Firebase');
+ }
+ } catch (e, s) {
+ LogUtil.requestAPIFailed("updToken.php", "", "Atualizar Token", e, s);
+ }
+ }
@override
void initState() {
@@ -79,7 +120,33 @@ class _AppState extends State {
_router = createRouter(_appStateNotifier);
Future.delayed(const Duration(milliseconds: 1000),
() => setState(() => _appStateNotifier.stopShowingSplashImage()));
+
+ _firebaseMessaging.requestPermission();
+ // _firebaseMessaging.pluginConstants;
+
+ FirebaseMessaging.onMessage.listen((RemoteMessage message) {
+ log('Received message: ${message.toMap()}');
+ });
+ FirebaseMessaging.onMessageOpenedApp.listen((RemoteMessage message) {
+ log('Message opened: ${message.notification?.body}');
+ });
+ FirebaseMessaging.onBackgroundMessage(_firebaseMessagingBackgroundHandler);
+ FirebaseMessaging.instance.getInitialMessage().then((message) {
+ if (message != null) {
+ log('Initial message: ${message.notification?.body}');
+ }
+ });
+
+ _firebaseMessaging.onTokenRefresh.listen((token) => updateDeviceToken);
+
+ getToken();
}
+
+ Future getToken() async {
+ String? token = await _firebaseMessaging.getToken();
+ log('Token: $token');
+ }
+
//
// Future showCustomTrackingDialog(BuildContext context) async {
// await showDialog(
diff --git a/lib/pages/home_page/home_page_widget.dart b/lib/pages/home_page/home_page_widget.dart
index f9ec154b..92e29166 100644
--- a/lib/pages/home_page/home_page_widget.dart
+++ b/lib/pages/home_page/home_page_widget.dart
@@ -1,10 +1,13 @@
import 'dart:async';
+import 'dart:developer';
+import 'package:firebase_messaging/firebase_messaging.dart';
import 'package:flutter/gestures.dart';
import 'package:flutter/material.dart';
import 'package:google_fonts/google_fonts.dart';
import 'package:hub/backend/api_requests/api_calls.dart';
import 'package:hub/backend/notifications/firebase_messaging_service.dart';
+import 'package:hub/backend/notifications/notification_service.dart';
import 'package:hub/backend/schema/enums/enums.dart';
import 'package:hub/components/organism_components/bottom_arrow_linked_locals_component/bottom_arrow_linked_locals_component_widget.dart';
import 'package:hub/components/organism_components/local_profile_component/local_profile_component_widget.dart';
@@ -14,6 +17,7 @@ import 'package:hub/flutter_flow/flutter_flow_theme.dart';
import 'package:hub/flutter_flow/flutter_flow_util.dart';
import 'package:hub/pages/home_page/home_page_model.dart';
import 'package:hub/shared/utils/dialog_util.dart';
+import 'package:hub/shared/utils/log_util.dart';
import 'package:hub/shared/widgets/drawer_widget/drawer_widget.dart';
class HomePageWidget extends StatefulWidget {
@@ -118,8 +122,6 @@ class _HomePageWidgetState extends State {
_model.updateOnChange = true;
() async {
- await FirebaseMessagingService().updateDeviceToken();
-
if (AppState().cliUUID.isEmpty) {
await processLocals();
}