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