update notificacion web

This commit is contained in:
lizandrogd
2023-06-19 01:24:14 -05:00
parent 4c9770247d
commit 05fa9438a1
5 changed files with 99 additions and 23 deletions
+7 -4
View File
@@ -26,7 +26,9 @@ import 'firebase_options.dart';
void main() async { void main() async {
WidgetsFlutterBinding.ensureInitialized(); WidgetsFlutterBinding.ensureInitialized();
await Firebase.initializeApp(
options: DefaultFirebaseOptions.currentPlatform,
).then((value) => Get.put(AuthenticationRepository()));
await initNotifications(); await initNotifications();
await initializeDateFormatting('es_MX', null); await initializeDateFormatting('es_MX', null);
@@ -35,12 +37,13 @@ void main() async {
DeviceOrientation.portraitUp, DeviceOrientation.portraitUp,
DeviceOrientation.portraitDown, DeviceOrientation.portraitDown,
]); ]);
await Firebase.initializeApp(
options: DefaultFirebaseOptions.currentPlatform,
).then((value) => Get.put(AuthenticationRepository()));
runApp(const MyApp()); runApp(const MyApp());
} }
class MyApp extends StatelessWidget { class MyApp extends StatelessWidget {
const MyApp({super.key}); const MyApp({super.key});
+41
View File
@@ -0,0 +1,41 @@
import 'package:firebase_messaging/firebase_messaging.dart';
class FirebaseMessagingService {
FirebaseMessaging _firebaseMessaging = FirebaseMessaging.instance;
Future<void> initializeFirebaseMessaging() async {
// Solicitar permisos de notificación si es necesario (opcional)
NotificationSettings settings = await _firebaseMessaging.requestPermission(
alert: true,
badge: true,
sound: true,
);
// Verificar si los permisos de notificación están habilitados
if (settings.authorizationStatus == AuthorizationStatus.authorized ||
settings.authorizationStatus == AuthorizationStatus.provisional) {
// Obtener el token de registro para la instancia de la aplicación
String? token = await _firebaseMessaging.getToken();
print('Token FCM: $token');
// Escuchar los mensajes entrantes en la aplicación
FirebaseMessaging.onMessage.listen((RemoteMessage message) {
print('Mensaje FCM recibido: ${message.notification?.title} - ${message.notification?.body}');
// Aquí puedes mostrar la notificación o procesar los datos recibidos según tus necesidades
});
// Manejar la notificación cuando se toca y la aplicación está en primer plano (opcional)
FirebaseMessaging.onMessageOpenedApp.listen((RemoteMessage message) {
print('Mensaje FCM abierto desde la aplicación en primer plano: ${message.notification?.title} - ${message.notification?.body}');
// Aquí puedes redirigir al usuario a una pantalla específica o realizar acciones según los datos recibidos
});
// Manejar la notificación cuando se toca y la aplicación está cerrada (opcional)
RemoteMessage? initialMessage = await FirebaseMessaging.instance.getInitialMessage();
if (initialMessage != null) {
print('Mensaje FCM abierto desde la aplicación cerrada: ${initialMessage.notification?.title} - ${initialMessage.notification?.body}');
// Aquí puedes redirigir al usuario a una pantalla específica o realizar acciones según los datos recibidos
}
}
}
}
+11 -5
View File
@@ -1,26 +1,32 @@
import 'package:flutter_local_notifications/flutter_local_notifications.dart'; import 'package:flutter_local_notifications/flutter_local_notifications.dart';
import 'package:prosappco/src/services/firebase_messaging.dart';
final FlutterLocalNotificationsPlugin flutterLocalNotificationsPlugin = final FlutterLocalNotificationsPlugin flutterLocalNotificationsPlugin =
FlutterLocalNotificationsPlugin(); FlutterLocalNotificationsPlugin();
Future<void> initNotifications() async { Future<void> initNotifications() async {
const AndroidInitializationSettings initializationSettingsAndroid = const AndroidInitializationSettings initializationSettingsAndroid =
AndroidInitializationSettings('@mipmap/ic_launcher'); AndroidInitializationSettings('@mipmap/ic_launcher');
const InitializationSettings initializationSettings = InitializationSettings( const InitializationSettings initializationSettings = InitializationSettings(
android: initializationSettingsAndroid, android: initializationSettingsAndroid,
); );
await flutterLocalNotificationsPlugin.initialize(initializationSettings); await flutterLocalNotificationsPlugin.initialize(initializationSettings);
// Inicializar Firebase Messaging
FirebaseMessagingService firebaseMessagingService = FirebaseMessagingService();
await firebaseMessagingService.initializeFirebaseMessaging();
} }
Future<void> showNotification(String title, String body) async { Future<void> showNotification(String title, String body) async {
const AndroidNotificationDetails androidNotificationDetails = const AndroidNotificationDetails androidNotificationDetails =
AndroidNotificationDetails('your channel id', 'your channel name', AndroidNotificationDetails('solicitud_servicio', 'Solicitud de Servicio',
importance: Importance.max, priority: Priority.high); importance: Importance.max, priority: Priority.high);
const NotificationDetails notificationDetails = const NotificationDetails notificationDetails =
NotificationDetails(android: androidNotificationDetails); NotificationDetails(android: androidNotificationDetails);
await flutterLocalNotificationsPlugin.show( await flutterLocalNotificationsPlugin.show(
1, title, body, notificationDetails); 1, title, body, notificationDetails);
+19
View File
@@ -0,0 +1,19 @@
importScripts("https://www.gstatic.com/firebasejs/8.10.0/firebase-app.js");
importScripts("https://www.gstatic.com/firebasejs/8.10.0/firebase-messaging.js");
firebase.initializeApp({
apiKey: "AIzaSyCNpUV_4cMEL9QZx7NESXK7QAlRjRGwx_Y",
authDomain: "prosapp-5747a.firebaseapp.com",
databaseURL: "https://prosapp-5747a-default-rtdb.firebaseio.com",
projectId: "prosapp-5747a",
storageBucket: "prosapp-5747a.appspot.com",
messagingSenderId: "245204384533",
appId: "1:245204384533:web:1b8f0b4c1d9ae21d9f871c",
});
const messaging = firebase.messaging();
// Optional:
messaging.onBackgroundMessage((message) => {
console.log("onBackgroundMessage", message);
});
+21 -14
View File
@@ -40,20 +40,27 @@
<script src="flutter.js" defer></script> <script src="flutter.js" defer></script>
</head> </head>
<body> <body>
<script> <script>
window.addEventListener('load', function(ev) { window.addEventListener('load', function(ev) {
// Download main.dart.js // Download main.dart.js
_flutter.loader.loadEntrypoint({ _flutter.loader.loadEntrypoint({
serviceWorker: { serviceWorker: {
serviceWorkerVersion: serviceWorkerVersion, serviceWorkerVersion: serviceWorkerVersion,
}, },
onEntrypointLoaded: function(engineInitializer) { onEntrypointLoaded: function(engineInitializer) {
engineInitializer.initializeEngine().then(function(appRunner) { engineInitializer.initializeEngine().then(function(appRunner) {
appRunner.runApp(); appRunner.runApp();
}); });
} }
});
}); });
</script>
if ('serviceWorker' in navigator) {
// Service workers are supported. Use them.
navigator.serviceWorker.register('/firebase-messaging-sw.js');
}
});
</script>
</body> </body>
</html> </html>