smart_firebase_fcm 1.0.4 copy "smart_firebase_fcm: ^1.0.4" to clipboard
smart_firebase_fcm: ^1.0.4 copied to clipboard

A plug-and-play modular Firebase FCM package with local notifications, redirection, and manual feature toggles (analytics, crashlytics, etc.).

๐Ÿ”” smart_firebase_fcm #

A lightweight, plug-and-play Firebase FCM (Push Notification) package for Flutter, offering seamless support for foreground, background, and terminated notifications, deep link redirection, local notifications, and customizable Firebase Analytics and Crashlytics integration.


โœจ Features #

  • One-line Setup: Initialize Firebase and FCM with a single call.
  • Notification Handling: Supports foreground, background, and terminated state notifications.
  • Local Notifications: Integrates flutter_local_notifications for foreground notifications.
  • Android Notification Channels: Pre-configured for consistent Android notification delivery.
  • Feature Toggles: Enable or disable Firebase Analytics, Crashlytics, and FCM via flags.
  • Deep Link Redirection: Easily handle notification taps with customizable navigation logic.
  • Clean & Modular: Well-structured, extensible code for easy customization.

๐Ÿš€ Quick Start #

1. Configure Firebase Features #

Set up Firebase and FCM in your app with customizable feature flags.

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

void main() async {
  WidgetsFlutterBinding.ensureInitialized();

  // Configure Firebase feature flags
  FirebaseFeatureFlags.enableAnalytics = false;
  FirebaseFeatureFlags.enableCrashlytics = true;
  FirebaseFeatureFlags.enableFCM = true;

  // Initialize FCM with a callback for notification taps
  await FCMInitializer.initialize(
    onTap: FCMHandler.handleMessage,
  );

  runApp(const MyApp());
}

2. Handle Notification Taps #

Implement custom navigation logic for notification taps using the handleMessage callback.

void handleMessage(RemoteMessage message) {
  final type = message.data['type'];

  switch (type) {
    case 'order':
      navigatorKey.currentState?.pushNamed('/order', arguments: message.data['order_id']);
      break;
    case 'chat':
      navigatorKey.currentState?.pushNamed('/chat');
      break;
    default:
      print('Unknown notification type: $type');
      break;
  }
}

3. Retrieve FCM Device Token #

final token = await FCMInitializer.getDeviceToken();
print('FCM Token: $token');

๐Ÿ“ฑ Android Configuration #

  1. Add the google-services.json file to your Android project at:

    android/app/google-services.json
    
  2. Update your android/build.gradle:

buildscript {
  dependencies {
    classpath 'com.google.gms:google-services:4.3.15'
  }
}
  1. Update android/app/build.gradle:
apply plugin: 'com.google.gms.google-services'

dependencies {
  implementation 'com.google.firebase:firebase-messaging:23.0.8'
}
  1. Ensure these permissions in AndroidManifest.xml:
<uses-permission android:name="android.permission.INTERNET"/>
  1. Add FCM service inside <application> tag:
<service
        android:name="com.google.firebase.messaging.FirebaseMessagingService"
        android:exported="true">
  <intent-filter>
    <action android:name="com.google.firebase.MESSAGING_EVENT"/>
  </intent-filter>
</service>

๐ŸŽ iOS Configuration #

  1. Add the GoogleService-Info.plist file to your Xcode project in Runner/.

  2. In ios/Podfile, ensure platform is at least iOS 12:

platform :ios, '12.0'
  1. Add required capabilities:
  • Enable Push Notifications
  • Enable Background Modes โ†’ Check Remote notifications
  1. Add notification permission request in Info.plist:
<key>FirebaseAppDelegateProxyEnabled</key>
<false/>
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>

๐Ÿ“ฆ Installation #

Add the package to your pubspec.yaml:

dependencies:
  smart_firebase_fcm: ^1.0.3

Install with:

flutter pub get

Note: Ensure Firebase is set up for your Flutter project. Follow the official Firebase setup guide.


๐Ÿ”ง Notification Payload Structure #

{
  "notification": {
    "title": "New Order!",
    "body": "You have a new order."
  },
  "data": {
    "type": "order",
    "order_id": "12345"
  }
}

๐Ÿงฑ Under the Hood #

  • Firebase Initialization: Handles Firebase.initializeApp() and permissions.

  • FCM Listeners:

    • onMessage (Foreground)
    • onMessageOpenedApp (Background)
    • getInitialMessage (Terminated)
  • Local Notifications: Uses flutter_local_notifications.

  • Notification Channels: Preconfigured for Android.

  • Feature Flags: Control Analytics, Crashlytics, and FCM independently.


๐Ÿงช Example App #

To test the full flow:

cd example/
flutter run

โ“ FAQ #

Q: Can I use this package without Firebase Analytics or Crashlytics? โœ… Yes โ€” just toggle the flags in FirebaseFeatureFlags.

Q: How do I customize notification navigation? ๐Ÿ› ๏ธ Implement your redirection logic inside FCMHandler.handleMessage.

Q: iOS not receiving notifications? ๐Ÿ“ฒ Ensure permissions and capabilities are properly set in Xcode.


๐Ÿ“„ License #

MIT License ยฉ 2025 Divyaraj Jadeja


๐Ÿ’ฌ Support #

Please report bugs or contribute at GitHub Repository

2
likes
0
points
224
downloads

Publisher

verified publisherquantumeye.in

Weekly Downloads

A plug-and-play modular Firebase FCM package with local notifications, redirection, and manual feature toggles (analytics, crashlytics, etc.).

Repository (GitHub)
View/report issues

License

unknown (license)

Dependencies

firebase_analytics, firebase_core, firebase_crashlytics, firebase_messaging, flutter, flutter_local_notifications

More

Packages that depend on smart_firebase_fcm