Система реальных уведомлений - это полноценная платформа для отправки и получения push-уведомлений, интегрированная с Firebase Cloud Messaging (FCM) и поддерживающая все модули приложения MyModus.
- Firebase Cloud Messaging - надежная доставка уведомлений
- Автоматическая регистрация FCM токенов
- Поддержка Android и iOS с нативными каналами
- Background и foreground обработка сообщений
- Flutter Local Notifications для in-app уведомлений
- Кастомные каналы для разных типов уведомлений
- Звуки и вибрация для Android
- Badge счетчики для iOS
- AI Personal Shopper - рекомендации, ценовые оповещения
- AR Fitting - завершение примерки, рекомендации размеров
- Blockchain Loyalty - начисление баллов, повышение уровня
- Social Analytics - тренды, конкурентный анализ
- Social Commerce - напоминания о стримах, обновления покупок
- Системные - обновления, обслуживание, безопасность
- Отложенная отправка по расписанию
- Автоматические напоминания о live-стримах
- Периодические уведомления (ежедневные, еженедельные)
- Умная группировка и приоритизация
backend/lib/
├── services/
│ └── notification_service.dart # Основной сервис уведомлений
├── handlers/
│ └── notification_handler.dart # API endpoints
└── bin/
└── server.dart # Интеграция в основной сервер
frontend/lib/
├── services/
│ └── real_notification_service.dart # Сервис уведомлений
├── screens/
│ └── real_notifications_screen.dart # Экран уведомлений
└── widgets/
└── notification_card.dart # Виджеты карточек
POST /api/notifications/register-token- Регистрация FCM токенаGET /api/notifications/{userId}- Получение уведомлений пользователяPOST /api/notifications/create- Создание уведомленияPUT /api/notifications/{id}/read- Отметка как прочитанногоDELETE /api/notifications/{id}- Удаление уведомления
POST /api/notifications/recommendations- AI рекомендацииPOST /api/notifications/price-alert- Ценовые оповещенияPOST /api/notifications/loyalty-points- Баллы лояльностиPOST /api/notifications/live-stream-reminder- Напоминания о стримахPOST /api/notifications/group-purchase-update- Обновления групповых покупок
POST /api/notifications/bulk- Массовая отправкаGET /api/notifications/{userId}/stats- СтатистикаPOST /api/notifications/cleanup- Очистка старых
# Перейти на https://console.firebase.google.com
# Создать новый проект или использовать существующий
# Добавить Android и iOS приложения<!-- android/app/src/main/AndroidManifest.xml -->
<manifest>
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<application>
<!-- Firebase конфигурация -->
<meta-data
android:name="com.google.firebase.messaging.default_notification_channel_id"
android:value="mymodus_channel" />
</application>
</manifest><!-- ios/Runner/Info.plist -->
<key>UIBackgroundModes</key>
<array>
<string>fetch</string>
<string>remote-notification</string>
</array>// frontend/lib/main.dart
import 'package:firebase_core/firebase_core.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
await Firebase.initializeApp();
runApp(MyApp());
}final notificationService = RealNotificationService();
// Инициализация с userId
await notificationService.initialize(userId: 'user_123');// Простое уведомление
await notificationService.createNotification(
title: 'Новые рекомендации!',
body: 'Найдено 5 товаров для вас',
type: NotificationType.newRecommendations,
);
// Уведомление с данными
await notificationService.createNotification(
title: 'Скидка на товар',
body: 'Товар подешевел на 20%',
type: NotificationType.priceAlert,
data: {
'product_id': 'prod_123',
'old_price': 1000,
'new_price': 800,
},
);
// Запланированное уведомление
await notificationService.createNotification(
title: 'Напоминание о стриме',
body: 'Live-стрим начинается через 30 минут',
type: NotificationType.liveStreamReminder,
scheduledFor: DateTime.now().add(Duration(minutes: 30)),
);// Все уведомления
final allNotifications = notificationService.notifications;
// Только непрочитанные
final unreadNotifications = notificationService.unreadNotifications;
// По типу
final recommendations = notificationService.getNotificationsByType(
NotificationType.newRecommendations,
);
// С backend
await notificationService.getNotifications(
isRead: false,
type: NotificationType.priceAlert,
limit: 20,
);// Отметить как прочитанное
await notificationService.markAsRead('notification_id');
// Отметить все как прочитанные
await notificationService.markAllAsRead();
// Удалить уведомление
await notificationService.deleteNotification('notification_id');
// Очистить прочитанные
notificationService.clearRead();- mymodus_channel - Основные уведомления (высокий приоритет)
- recommendations_channel - AI рекомендации (высокий приоритет)
- price_alerts_channel - Ценовые оповещения (средний приоритет)
- loyalty_channel - Программа лояльности (средний приоритет)
await androidImplementation.createNotificationChannel(
const AndroidNotificationChannel(
'mymodus_channel',
'MyModus Notifications',
description: 'Основные уведомления приложения',
importance: Importance.high,
playSound: true,
enableVibration: true,
),
);- Общее количество отправленных уведомлений
- Прочитанные/непрочитанные уведомления
- Успешные/неуспешные отправки
- Распределение по типам уведомлений
- Время доставки и открытия
final stats = await notificationService.getNotificationStats();
print('Всего: ${stats['total']}');
print('Непрочитанных: ${stats['unread']}');
print('По типам: ${stats['by_type']}');- Автоматическая регистрация при инициализации
- Привязка к пользователю для персонализации
- Обновление токенов при изменении устройства
- Запрос разрешений для iOS (alert, badge, sound)
- Android разрешения для уведомлений и вибрации
- Graceful fallback при отключении уведомлений
// Отправить тестовое уведомление
await notificationService.sendTestNotification();
// Создать уведомление определенного типа
await notificationService.createNotification(
title: 'Тест',
body: 'Тестовое уведомление',
type: NotificationType.systemUpdate,
data: {'test': true},
);// Включить логирование
debugPrint('FCM token: ${notificationService.fcmToken}');
debugPrint('Initialized: ${notificationService.isInitialized}');
debugPrint('Notifications enabled: ${notificationService.notificationsEnabled}');cd backend
# Установить зависимости
dart pub get
# Настроить переменные окружения
export FCM_SERVER_KEY="your_fcm_server_key"
# Запустить сервер
dart run bin/server.dartcd frontend
# Установить зависимости
flutter pub get
# Настроить Firebase
# Добавить google-services.json (Android)
# Добавить GoogleService-Info.plist (iOS)
# Запустить приложение
flutter run# Firebase Cloud Messaging
FCM_SERVER_KEY=your_fcm_server_key_here
# Порт сервера
PORT=8080# Backend URL
BACKEND_URL=http://localhost:8080
# Firebase конфигурация (автоматически из google-services.json)- Web Push уведомления для веб-версии
- Email уведомления как альтернатива push
- SMS уведомления для критически важных сообщений
- In-app уведомления с rich content
- Геолокационные уведомления на основе местоположения
- A/B тестирование уведомлений
- Машинное обучение для оптимизации времени отправки
- WebSocket для real-time уведомлений
- GraphQL для гибких запросов
- Redis для кэширования и очередей
- Kafka для масштабируемости
- Микросервисная архитектура для уведомлений
- iOS background - ограничения на background обработку
- Android Doze Mode - задержки в режиме экономии энергии
- FCM квоты - лимиты на количество сообщений
- Размер payload - ограничение 4KB для FCM
- Foreground обработка для критически важных уведомлений
- Battery optimization исключения для Android
- Payload оптимизация и сжатие данных
- Fallback механизмы при недоступности FCM
- GitHub Issues - баги и предложения
- Stack Overflow - вопросы по реализации
- Discord - обсуждение и помощь
- Email: support@mymodus.com
- Telegram: @mymodus_support
- Documentation: https://docs.mymodus.com
Система реальных уведомлений MyModus - мощная платформа для создания интерактивного пользовательского опыта с помощью push-уведомлений, интегрированная со всеми модулями приложения и поддерживающая масштабируемость для миллионов пользователей. 🚀✨