DEV Community

Sudhanshu Kumar Yadav
Sudhanshu Kumar Yadav

Posted on

Flutter + Firebase Messaging: A Match Made in App Heaven for Newbie Developers!

Welcome, dear novice app developer! If you're looking to add some pizzazz to your Flutter app with real-time notifications, you're in the right place! We'll show you how to set up Firebase Messaging in your Flutter app with ease. So, buckle up and let's get this party started! 🎉

What's Firebase Messaging, you ask?

Firebase Cloud Messaging (FCM) is a free messaging service provided by Google that allows you to send notifications and data messages to your users' devices. It's the perfect solution for adding real-time communication to your app without breaking a sweat! 💪

Step 1: Set Up Firebase in Your Flutter Project

Before diving into code, you'll need to create a Firebase project and connect it with your Flutter app. Follow the official FlutterFire documentation for step-by-step instructions.

Step 2: Add Firebase Messaging Dependency

Add the firebase_messaging package to your pubspec.yaml file:

dependencies:
  flutter:
    sdk: flutter
  firebase_messaging: ^11.0.0
Enter fullscreen mode Exit fullscreen mode

Then, run flutter pub get to install the package.

Step 3: Configure Firebase Messaging

In your main.dart, import the required packages and initialize Firebase:

import 'package:firebase_core/firebase_core.dart';
import 'package:firebase_messaging/firebase_messaging.dart';

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await Firebase.initializeApp();
  runApp(MyApp());
}
Enter fullscreen mode Exit fullscreen mode

Step 4: Request Permission for Notifications

Add the following code snippet inside your MyApp widget's build method to request notification permission:

FirebaseMessaging.instance.requestPermission(
  alert: true,
  badge: true,
  sound: true,
);
Enter fullscreen mode Exit fullscreen mode

Step 5: Register Device Token

You'll need a unique device token to send notifications to a specific device. To obtain it, add the following code snippet in your main function:

void main() async {
  // ... existing code
  FirebaseMessaging.onBackgroundMessage(_backgroundMessageHandler);
  FirebaseMessaging.instance.getToken().then((token) {
    print('Device Token: $token');
  });
  runApp(MyApp());
}

Future<void> _backgroundMessageHandler(RemoteMessage message) async {
  print('A background message arrived: ${message.messageId}');
}
Enter fullscreen mode Exit fullscreen mode

Save the printed token. You'll use it to send notifications via FCM.

Step 6: Handle Incoming Notifications

Let's handle notifications when the app is in the foreground:

FirebaseMessaging.onMessage.listen((RemoteMessage message) {
  print('A foreground message arrived: ${message.messageId}');
  // You can add custom logic here, like displaying a snackbar or dialog.
});
Enter fullscreen mode Exit fullscreen mode

Voilà! 🎉 Your app is now set up to receive notifications from FCM!

Sending Test Notifications

To test your shiny new notification system, use the following cURL command, replacing <YOUR-FCM-SERVER-KEY> with your FCM server key and <YOUR-DEVICE-TOKEN> with the printed device token:

curl -X POST \
  https://fcm.googleapis.com/fcm/send \
  -H 'Authorization: key=<YOUR-FCM-SERVER-KEY>' \
  -H 'Content-Type: application/json' \
  -d '{
        "to": "<YOUR-DEVICE-TOKEN>",
        "notification": {
          "title": "Test Notification",
          "body": "This is a test notification from FCM"
        }
     }'

Enter fullscreen mode Exit fullscreen mode

Top comments (0)