Untitled
unknown
dart
3 years ago
5.3 kB
4
Indexable
import 'package:firebase_core/firebase_core.dart'; import 'package:firebase_messaging/firebase_messaging.dart'; import 'package:flutter_local_notifications/flutter_local_notifications.dart'; import 'package:gaadi_bazaar/data/app_shared_preferences/app_shared_preferences.dart'; import 'package:get/get.dart'; import '../routes.dart'; Future<void> firebaseMessagingBackgroundHandler(RemoteMessage message) async { await Firebase.initializeApp(); print('Handling a background message ${message.messageId}'); if (message.notification != null) { print(message.notification?.title); print(message.notification?.body); localNotification(message); } } class FcmNotifications { static Future<void> initialise() async { AppSharedPreferences _appSharedPreferences = Get.put(AppSharedPreferences()); FirebaseMessaging messaging = FirebaseMessaging.instance; var token = await messaging.getToken(); // This Creates a FirebaseToken print("Token = $token"); if (token != null) { await _appSharedPreferences.saveFCMToken(token); } //requesting permission from device NotificationSettings settings = await messaging.requestPermission( alert: true, announcement: false, badge: true, sound: true, carPlay: false, ); print("user granted permission: ${settings.authorizationStatus}"); //if app in terminated state RemoteMessage? getInitMessage = await messaging.getInitialMessage(); if (getInitMessage?.notification != null) { localNotification(getInitMessage); } //if app is background FirebaseMessaging.onMessageOpenedApp.listen((RemoteMessage message) { print("On MessageOpenedApp ${message.data}"); if (message.notification != null) { localNotification(message); } }); //if app is running on foreground FirebaseMessaging.onMessage.listen((RemoteMessage message) { print("On Message ${message.notification}"); localNotification(message); // if(event.data["screen"] == 'A'){ // Get.to(const ScreenA()); // // Navigator.push(context,MaterialPageRoute(builder: (context){return const ScreenA();}) ); // } }); //if app is terminated or closed FirebaseMessaging.onBackgroundMessage(firebaseMessagingBackgroundHandler); } } localNotification(RemoteMessage? remoteMessage) async { try { final FlutterLocalNotificationsPlugin _flutterLocalNotificationsPlugin = FlutterLocalNotificationsPlugin(); const AndroidNotificationChannel channel = AndroidNotificationChannel( 'gadi_bazaar_channel_id', // id 'gadi_bazaar_channel_name', // title description: 'This channel is used for important notifications.', // description importance: Importance.max, ); await _flutterLocalNotificationsPlugin .resolvePlatformSpecificImplementation< AndroidFlutterLocalNotificationsPlugin>() ?.createNotificationChannel(channel); AndroidInitializationSettings initializationSettingsAndroid = const AndroidInitializationSettings('@mipmap/ic_launcher'); var initializationSettings = InitializationSettings( android: initializationSettingsAndroid, // iOS: initializationSettingsIos, ); await _flutterLocalNotificationsPlugin.initialize(initializationSettings, onSelectNotification: (String? payload) { if (remoteMessage?.data['screen'] == "skip") { AppRoutes.goToHomePageWithIndexRemovingAllPreviousScreen(0); } }); RemoteNotification? notification = remoteMessage?.notification; AndroidNotification? android = remoteMessage?.notification?.android; if (notification != null && android != null) { await _flutterLocalNotificationsPlugin.show( notification.hashCode, notification.title, notification.body, NotificationDetails( android: AndroidNotificationDetails( channel.id, channel.name, channelDescription: channel.description, icon: '@mipmap/ic_launcher', priority: Priority.max, importance: Importance.max, ), )); } //For IOS No set up has been made -----/// } catch (e) { Get.snackbar("Exception", e.toString()); } } // AndroidNotificationDetails androidPlatformChannelSpecifics = // AndroidNotificationDetails( // channel.id, // "gadi_bazaar_channel_name", // icon: "@mipmap/ic_launcher", // importance: Importance.max, // priority: Priority.max, // fullScreenIntent: true, // ); // NotificationDetails platformChannelSpecifics = // NotificationDetails(android: androidPlatformChannelSpecifics); // var id = DateTime.now().millisecondsSinceEpoch ~/ 1000; // print(id); // await _flutterLocalNotificationsPlugin.show( // id, // remoteMessage?.notification?.title, // remoteMessage?.notification?.body, // platformChannelSpecifics, // payload: 'Notification Payload', // );
Editor is loading...