Untitled
unknown
plain_text
4 days ago
2.8 kB
2
Indexable
import 'package:firebase_messaging/firebase_messaging.dart'; import 'package:zendo/core/backend/local_storage/local_storage.dart'; import 'package:zendo/core/basic_imports/basic_screen_imports.dart'; import 'package:zendo/modules/profile/backend/model/profile_model.dart'; import 'package:flutter_local_notifications/flutter_local_notifications.dart'; class FireBaseApi { final firebaseMessaging = FirebaseMessaging.instance; final FlutterLocalNotificationsPlugin flutterLocalNotificationsPlugin = FlutterLocalNotificationsPlugin(); Future<void> initialize() async { await firebaseMessaging.requestPermission(); final fcmToken = await firebaseMessaging.getToken(); FirebaseMessaging.instance.subscribeToTopic("all_users"); print("tokenfcm $fcmToken"); const AndroidInitializationSettings androidSettings = AndroidInitializationSettings('@mipmap/ic_launcher'); const InitializationSettings initializationSettings = InitializationSettings(android: androidSettings); await flutterLocalNotificationsPlugin.initialize(initializationSettings, onDidReceiveNotificationResponse: (NotificationResponse response) { _handleMessage(_lastRemoteMessage!); }); FirebaseMessaging.onMessage.listen((RemoteMessage message) { _showLocalNotification(message); }); FirebaseMessaging.onMessageOpenedApp.listen((RemoteMessage message) { _handleMessage(message); }); final RemoteMessage? initialMessage = await firebaseMessaging.getInitialMessage(); if (initialMessage != null) { _handleMessage(initialMessage); } } RemoteMessage? _lastRemoteMessage; ProfileModel? profile; void _handleMessage(RemoteMessage message) async { _lastRemoteMessage = message; final token = LocalStorage.getToken(); if (token == null || token.isEmpty) { Get.offAllNamed(Routes.loginRegisterScreen); return; } else { Get.toNamed(Routes.dashboardScreen); } } Future<void> _showLocalNotification(RemoteMessage message) async { const AndroidNotificationDetails androidPlatformChannelSpecifics = AndroidNotificationDetails( 'high_importance_channel', 'High Importance Notifications', importance: Importance.max, priority: Priority.high, ticker: 'ticker', ); const NotificationDetails notificationDetails = NotificationDetails(android: androidPlatformChannelSpecifics); await flutterLocalNotificationsPlugin.show( 0, message.notification?.title ?? 'Notifikasi', message.notification?.body ?? 'Detail notifikasi', notificationDetails, payload: 'payload', ); } }
Editor is loading...
Leave a Comment