update sound when receive from FCM in foreground, background and terminate

This commit is contained in:
anhtunz
2025-03-07 16:44:55 +07:00
parent 314e32eaa9
commit a6fa3b1572
12 changed files with 185 additions and 67 deletions

View File

@@ -1,6 +1,10 @@
import 'dart:developer';
import 'package:firebase_core/firebase_core.dart';
import 'package:firebase_messaging/firebase_messaging.dart';
import 'package:flutter/material.dart';
import 'package:flutter_gen/gen_l10n/app_localizations.dart';
import 'product/services/notification_services.dart';
import 'product/services/theme_services.dart';
import 'product/services/language_services.dart';
import 'bloc/main_bloc.dart';
@@ -10,6 +14,10 @@ import 'product/constant/navigation/navigation_router.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
await Firebase.initializeApp();
FirebaseMessaging
.onBackgroundMessage(_firebaseMessagingBackgroundHandler);
NotificationServices().setupInteractMessage();
runApp(
BlocProvider(
child: const MyApp(),
@@ -17,6 +25,16 @@ void main() async {
),
);
}
@pragma('vm:entry-point')
Future<void> _firebaseMessagingBackgroundHandler(RemoteMessage message) async {
log("Full background message payload: ${message.toMap()}");
await Firebase.initializeApp();
final notificationServices = NotificationServices();
await notificationServices.initLocalNotifications();
await notificationServices.showNotification(message);
log("Background message handled: ${message.data['title']}");
}
class MyApp extends StatefulWidget {
const MyApp({super.key});
@@ -39,6 +57,7 @@ class _MyAppState extends State<MyApp> {
late MainBloc mainBloc;
LanguageServices languageServices = LanguageServices();
ThemeServices themeServices = ThemeServices();
final NotificationServices notificationServices = NotificationServices();
setLocale(Locale locale) {
_locale = locale;
@@ -49,11 +68,16 @@ class _MyAppState extends State<MyApp> {
_themeData = theme;
mainBloc.sinkTheme.add(_themeData);
}
@override
void initState() {
super.initState();
mainBloc = BlocProvider.of(context);
notificationServices.initLocalNotifications();
notificationServices.firebaseInit(context);
// notificationServices.setupInteractMessage();
notificationServices.getDeviceToken().then((token){
print("Firebase Token: $token");
});
}
@override