Flutter: Push-уведомления, даже если приложение закрыто
Я создал приложение с флаттером, которое работает как напоминание.
Как я могу отображать уведомления для пользователя, даже если приложение закрыто?
Ответы
Ответ 1
Для напоминаний я бы рекомендовал Плагин Flutter Local Notifications. Он имеет мощный график планирования API. Из документации локального уведомления:
Планирование, когда уведомления должны появляться - периодически показывать Уведомление (на основе интервала) - Запланируйте показ уведомления ежедневно в указанное время - Запланируйте показ еженедельно в указанный день и время - возможность обрабатывать, когда пользователь нажимает на уведомление, когда приложение находится на переднем плане, фоне или закрыто
А для push-уведомлений вы можете использовать Firebase Cloud Messaging
или плагин с одним сигналом, или вы можете реализовать его через каналы платформы
Изменение: Вы также можете запускать уведомления в соответствии с конкретными условиями, даже если приложение закрыто. Этого можно добиться, запустив код dart в фоновом режиме. Цитата из официального FAQ:
Могу ли я запустить код Dart на фоне приложения Flutter? Да, ты можешь запустить код Dart в фоновом режиме на iOS и Android. За дополнительную информацию см. в статье "Medium" "Выполнение дротика" в Фон с плагинами флаттера и геозон.
Ответ 2
Я также столкнулся с этой проблемой, так что это мои уроки
В моем случае: я могу получать уведомления в состоянии App-Resume или App-background, но в состоянии App-Close я не получаю уведомления.
В этом случае наш орган уведомления был:
{notification: {body: null, title: null}, data: {body: hello, title: world}}
Чтобы получать уведомления в закрытом приложении, мы изменили уведомление на
{notification: {body: abc, title: abc}, data: {url: string, body: string, title: string}}
Ответ 3
Вы можете использовать запланированные уведомления в флаттерах.
var scheduledNotificationDateTime =
new DateTime.now().add(new Duration(seconds: 5));
var androidPlatformChannelSpecifics =
new AndroidNotificationDetails('your other channel id',
'your other channel name', 'your other channel description');
var iOSPlatformChannelSpecifics =
new IOSNotificationDetails();
NotificationDetails platformChannelSpecifics = new
NotificationDetails(
androidPlatformChannelSpecifics, iOSPlatformChannelSpecifics);
await flutterLocalNotificationsPlugin.schedule(
0,
'scheduled title',
'scheduled body',
scheduledNotificationDateTime,
platformChannelSpecifics);
Ответ 4
Официальный плагин firebase_messaging flutter поддерживает отображение уведомлений, отправленных через FCM.
Недавно в v5.1.5 они добавили поддержку фоновой обработки сообщений для andriod.
https://pub.dev/packages/firebase_messaging#515