Создание push-уведомлений для Flutter Web — полное руководство
FlutterPulseЭта статья переведена специально для канала FlutterPulse. В этом канале вы найдёте много интересных вещей, связанных с Flutter. Не забывайте подписываться! 🚀

Push-уведомления — мощный способ вовлечения пользователей, особенно в веб-приложениях. По мере созревания Flutter Web многие разработчики задаются вопросом:
"Можно ли отправлять push-уведомления в моё приложение Flutter Web?"
Короткий ответ — да — но для этого требуется использовать Firebase Cloud Messaging (FCM), сервисные воркеры и немного JavaScript interop.
В этой статье мы разберём всё, что нужно для интеграции push-уведомлений в ваше веб-приложение Flutter.
🧱 Требования
Прежде чем приступать, убедитесь, что у вас есть:
- Проект Flutter Web (
flutter create your_project) - Настроенный проект Firebase
- Базовое понимание Firebase Console и Flutter Web
- Домен, размещённый с HTTPS (push-уведомления работают только в защищённых контекстах)
🔧 Шаг 1: Добавление Firebase в проект Flutter Web
Используйте Firebase CLI:
firebase login firebase init
Выберите:
- Hosting
- Firebase SDK для веба
Теперь добавьте зависимости Firebase в pubspec.yaml:
dependencies: firebase_core: ^2.0.0 firebase_messaging: ^14.0.0
Затем инициализируйте Firebase в вашем main.dart:
void main() async {
WidgetsFlutterBinding.ensureInitialized();
await Firebase.initializeApp(
options: DefaultFirebaseOptions.currentPlatform,
);
runApp(MyApp());
}
📬 Шаг 2: Включение FCM в Firebase Console
- Перейдите в Firebase Console
- Выберите свой проект
- Перейдите в Cloud Messaging
- Нажмите Get Started
- Скопируйте ключ сертификата Web Push в разделе Web configuration — он понадобится в коде
🛠 Шаг 3: Настройка firebase-messaging-sw.js
Flutter Web использует сервисный воркер для прослушивания уведомлений в фоне.
В вашей папке web/ создайте файл с именем firebase-messaging-sw.js:
// web/firebase-messaging-sw.js
importScripts('https://www.gstatic.com/firebasejs/9.6.10/firebase-app-compat.js');
importScripts('https://www.gstatic.com/firebasejs/9.6.10/firebase-messaging-compat.js');
firebase.initializeApp({
apiKey: 'YOUR_API_KEY',
authDomain: 'your-project.firebaseapp.com',
projectId: 'your-project-id',
messagingSenderId: 'your-sender-id',
appId: 'your-app-id',
});
const messaging = firebase.messaging();
В web/index.html зарегистрируйте сервис-воркера:
<script>
if ('serviceWorker' in navigator) {
navigator.serviceWorker.register('firebase-messaging-sw.js')
.then(function(registration) {
console.log('Service Worker Registered');
});
}
</script>
🔐 Шаг 4: Запрос разрешений на уведомления в Dart
Внутри вашего приложения Flutter:
import 'package:firebase_messaging/firebase_messaging.dart';
void setupNotifications() async {
FirebaseMessaging messaging = FirebaseMessaging.instance;
// Запрос разрешения
NotificationPermission permission = await messaging.requestPermission();
// Получение токена FCM
String? token = await messaging.getToken(
vapidKey: 'YOUR_VAPID_KEY_FROM_FIREBASE',
);
print("FCM Token: $token");
// Слушаем сообщения на переднем плане
FirebaseMessaging.onMessage.listen((RemoteMessage message) {
print('New message: ${message.notification?.title}');
});
}
Вызывайте этот метод setupNotifications() в инициализации вашего приложения.
📤 Шаг 5: Отправка тестового push-уведомления
Вы можете отправлять push-уведомления из:
- Firebase Console
- Postman с использованием HTTP v1 API
- Backend-сервер
Для отправки через Firebase Console:
- Перейдите в Cloud Messaging
- Нажмите Send your first message
- Введите заголовок и текст
- В разделе Web push вставьте токен FCM
- Нажмите Send
Теперь ваше веб-приложение Flutter будет получать уведомления даже при закрытом браузере (если сервис-воркер зарегистрирован правильно).
🧪 Шаг 6: Тестирование и отладка
- Используйте Chrome DevTools > Application > Service Workers для проверки работы вашего сервис-воркера
- Тестируйте уведомления на переднем и заднем плане отдельно
- Проверьте консоль на наличие токена FCM и логов сообщений
💡 Бонус: Отображение пользовательского интерфейса уведомлений
Вы можете вручную обрабатывать отображение уведомлений в файле firebase-messaging-sw.js:
messaging.onBackgroundMessage(function(payload) {
self.registration.showNotification(payload.notification.title, {
body: payload.notification.body,
icon: '/icons/Icon-192.png',
});
});
Это обеспечивает единообразие вашего бренда на всех платформах.
✅ Подведение итогов
Flutter Web + Firebase Cloud Messaging дает вам возможность:
- Отправлять уведомления в реальном времени
- Взаимодействовать с пользователями, даже когда ваше приложение не открыто
- Создавать устанавливаемые веб-приложения с поведением, похожим на нативное
Ключевые моменты:
- Flutter web поддерживает push-уведомления через Firebase с использованием service workers
- Требуется домен с HTTPS
- Всегда тестируйте как передний, так и фоновый потоки
- Настраивайте стиль уведомлений с помощью
firebase-messaging-sw.js
Push-уведомления — это уже не только для мобильных устройств. Ваше Flutter веб-приложение теперь может так же эффективно достигать пользователей.