Flutter: Push notifications even if the app is closed

杀马特。学长 韩版系。学妹 提交于 2020-01-12 03:13:25

问题


I have built an application with flutter that works like a reminder.
How can I display notifications to the user even though the app is closed?


回答1:


For reminders i would recomend Flutter Local Notifications Plugin. It has a powerful scheduling api. From the documentation of local notification:

Scheduling when notifications should appear - Periodically show a notification (interval-based) - Schedule a notification to be shown daily at a specified time - Schedule a notification to be shown weekly on a specified day and time - Ability to handle when a user has tapped on a notification when the app is the foreground, background or terminated

And for push notification, you can use Firebase Cloud Messaging or one signal plugin or you can implement natively through platform-channels

Edit: You can also fire notifications according to specific conditions even if the app is terminated. This can be achevied by running dart code in the background. Quoting from the official faq:

Can I run Dart code in the background of an Flutter app? Yes, you can run Dart code in a background process on both iOS and Android. For more information, see the Medium article Executing Dart in the Background with Flutter Plugins and Geofencing.




回答2:


I have also faced this issue, So these are my learnings

In my Case : i am able to get notification in App-Resume or App-background state, but in App-Close state, I am not receiving notifification.

In this case our notification body was :

{notification: {body: null, title: null}, data: {body: hello, title: world}}

To Receive Notification in App-Closed state we changed notification to

{notification: {body: abc, title: abc}, data: {url: string, body: string, title: string}}



回答3:


You can use scheduled notifications in flutter.

 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:


The official firebase_messaging flutter plugin supports showing notification sent via FCM. Recently in v5.1.5 they added support for background message handling for andriod.

https://pub.dev/packages/firebase_messaging#515



来源:https://stackoverflow.com/questions/53572110/flutter-push-notifications-even-if-the-app-is-closed

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!