top of page

How to Integrate Push Notifications in Flutter Using Firebase


How to Integrate Push Notifications in Flutter Using Firebase

Push notifications are a crucial component of modern mobile applications, allowing you to engage and re-engage users by sending timely updates and reminders.


In this blog post, we'll explore how to integrate push notifications in a Flutter app using Firebase Cloud Messaging (FCM). Firebase Cloud Messaging is a powerful and user-friendly platform that enables sending notifications to both Android and iOS devices.


Prerequisites


Before we begin, ensure that you have the following prerequisites in place:

  1. Flutter Development Environment: Make sure you have Flutter and Dart installed on your system. If not, follow the official Flutter installation guide: Flutter Installation Guide

  2. Firebase Project: Create a Firebase project if you haven't already. Visit the Firebase Console (https://console.firebase.google.com/) and set up a new project.


Step 1: Set Up Firebase Project


  1. Go to the Firebase Console and select your project.

  2. Click on "Project settings" and then navigate to the "Cloud Messaging" tab.

  3. Here, you'll find your Server Key and Sender ID. These will be used later in your Flutter app to communicate with Firebase Cloud Messaging.


Step 2: Add Firebase Dependencies


In your Flutter project, open the pubspec.yaml file and add the necessary Firebase dependencies:

dependencies:
   flutter:
     sdk: flutter
   firebase_core: ^1.12.0
   firebase_messaging: ^11.1.0

After adding the dependencies, run flutter pub get to fetch them.


Step 3: Initialize Firebase


Open your main.dart file and initialize Firebase in the main function:

import 'package:flutter/material.dart';
import 'package:firebase_core/firebase_core.dart';

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


Step 4: Request Notification Permissions


To receive push notifications, you need to request user permission. Add the following code to your main widget (usually MyApp):

import 'package:firebase_messaging/firebase_messaging.dart';

class MyApp extends StatelessWidget {
  final FirebaseMessaging _firebaseMessaging = FirebaseMessaging.instance;

  @override
  Widget build(BuildContext context) {
    // Request notification permissions
    _firebaseMessaging.requestPermission();
    
    return MaterialApp(
      // ...
    );
  }
}


Step 5: Handle Notifications


Now let's handle incoming notifications. Add the following code to the same widget where you requested permissions:

class MyApp extends StatelessWidget {
  final FirebaseMessaging _firebaseMessaging = FirebaseMessaging.instance;

  @override
  void initState() {
    super.initState();

    // Handle incoming messages
    FirebaseMessaging.onMessage.listen((RemoteMessage message) {
      // Handle the message
      print("Received message: ${message.notification?.title}");
    });
  }

  @override
  Widget build(BuildContext context) {
    // ...
  }
}


Step 6: Displaying Notifications

To display notifications when the app is in the background or terminated, you need to set up a background message handler. Add the following code to your main widget:

class MyApp extends StatelessWidget {
  final FirebaseMessaging _firebaseMessaging = FirebaseMessaging.instance;

  @override
  void initState() {
    super.initState();

    FirebaseMessaging.onMessage.listen((RemoteMessage message) {
      print("Received message: ${message.notification?.title}");
    });

    // Handle messages when the app is in the background or terminated
    FirebaseMessaging.onBackgroundMessage(_firebaseMessagingBackgroundHandler);
  }

  // Define the background message handler
  Future<void> _firebaseMessagingBackgroundHandler(RemoteMessage message) async {
    print("Handling a background message: ${message.notification?.title}");
  }

  @override
  Widget build(BuildContext context) {
    // ...
  }
}


Step 7: Sending Test Notifications


Now that your Flutter app is set up to receive notifications, let's test it by sending a test notification from the Firebase Console:

  1. Go to the Firebase Console and select your project.

  2. Navigate to the "Cloud Messaging" tab.

  3. Click on the "New Notification" button.

  4. Enter the notification details and target your app.

  5. Click "Send Test Message."


Conclusion


Congratulations! You've successfully integrated push notifications in your Flutter app using Firebase Cloud Messaging. You've learned how to request notification permissions, handle incoming messages, and set up background message handling. This capability opens up a world of possibilities for engaging your users and providing timely updates.


Firebase Cloud Messaging provides even more features, such as sending notifications to specific topics, customizing notification appearance, and handling user interactions with notifications. Explore the Firebase Cloud Messaging documentation to learn more about these advanced features and take your app's notification experience to the next level.


Happy coding!

Blog for Mobile App Developers, Testers and App Owners

 

This blog is from Finotes Team. Finotes is a lightweight mobile APM and bug detection tool for iOS and Android apps.

In this blog we talk about iOS and Android app development technologies, languages and frameworks like Java, Kotlin, Swift, Objective-C, Dart and Flutter that are used to build mobile apps. Read articles from Finotes team about good programming and software engineering practices, testing and QA practices, performance issues and bugs, concepts and techniques. 

bottom of page