max
max

Reputation: 1655

Handling Firebase Data push notification in flutter

I wanted to send a data type push notification from firebase to flutter app. As per documentation we need to handle these type of notification in order to show them in notification center. But there is no document which says how we can do this.

Is this feasible to handle Data type push notification in Flutter? Has anyone tried onbackgroundMessage function implementation?

Upvotes: 1

Views: 3638

Answers (1)

Ravinder Kumar
Ravinder Kumar

Reputation: 7990

Use official firebase_messaging library to use push notification and you can find decent documentation there as well. You can receive you data or notification payload like this,

Define a TOP-LEVEL or STATIC function to handle background messages

 Future<dynamic> myBackgroundMessageHandler(Map<String, dynamic> message) {
   if (message.containsKey('data')) {
     // Handle data message
     final dynamic data = message['data'];
   }

   if (message.containsKey('notification')) {
     // Handle notification message
     final dynamic notification = message['notification'];
   }

   // Or do other work.
 }

Set onBackgroundMessage handler when calling configure

 _firebaseMessaging.configure(
       onMessage: (Map<String, dynamic> message) async {
         print("onMessage: $message");
         _showItemDialog(message);
       },
       onBackgroundMessage: myBackgroundMessageHandler,
       onLaunch: (Map<String, dynamic> message) async {
         print("onLaunch: $message");
         _navigateToItemDetail(message);
       },
       onResume: (Map<String, dynamic> message) async {
         print("onResume: $message");
         _navigateToItemDetail(message);
       },
     );

To show Local notifications use flutter_local_notifications this library,

var androidPlatformChannelSpecifics = AndroidNotificationDetails(
    'your channel id', 'your channel name', 'your channel description',
    importance: Importance.Max, priority: Priority.High, ticker: 'ticker');

var iOSPlatformChannelSpecifics = IOSNotificationDetails();

var platformChannelSpecifics = NotificationDetails(
    androidPlatformChannelSpecifics, iOSPlatformChannelSpecifics);

await flutterLocalNotificationsPlugin.show(
    0, 'plain title', 'plain body', platformChannelSpecifics,
    payload: 'item x');

Upvotes: 2

Related Questions