unified_notifications

Flutter package to unify FCM, APNs and MQTT/EMQX as a single notification SDK.

Features

  • Unified push and realtime notification API
  • FCM + APNs token access
  • MQTT foreground realtime support
  • Local notification rendering
  • Deduplication by eventId
  • Grouping by groupKey
  • Local inbox persistence
  • Background FCM data-only handler

Quick start

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

Future<void> main() async {
  FirebaseMessaging.onBackgroundMessage(
    unifiedNotificationsFirebaseBackgroundHandler,
  );

  await UnifiedNotifications.instance.init(
    config: UnifiedNotificationConfig(
      appName: 'Spark',
      enableFcm: true,
      enableApns: true,
      enableMqtt: true,
      enableSystemNotifications: true,
      mqtt: const MqttConfig(
        broker: '134.122.119.215',
        port: 1883,
        topicBase: 'usuarioSistemaTareaEMQX',
      ),
      android: const AndroidNotificationConfig(
        defaultChannelId: 'spark_delivery',
        defaultChannelName: 'Spark Notificaciones',
      ),
      ios: const IosNotificationConfig(),
    ),
  );

  await UnifiedNotifications.instance.login(userId: '30');
}

Notes

  • MQTT is intended for foreground realtime notifications.
  • FCM/APNs are the main source for background and terminated states.
  • Backend should send Android notifications as FCM data-only.