flutter - 有条件地显示预定通知

标签 flutter dart notifications

如何使用 flutter_local_notifications 根据条件显示预定通知。如果不满足条件,我不想显示通知。似乎当您安排通知时,它会无条件地显示。
在这种情况下,我想检查我在我的应用程序中维护的嵌入式数据存储 Sembast 的一些状态。我的应用程序直接与数据存储区交互。因此,在这种情况下,我会轮询数据存储,可能会使用我的应用程序中的现有代码。不确定这是否可行,因为可以在我的应用程序未运行时安排通知。
例如,我安排在每天上午 9:00 发生通知。在上午 9:00,我希望运行一些代码来检查条件是否为真,然后才显示通知。即使应用程序关闭,这也应该发生。

最佳答案

我使用了 background_fetch 的组合和 flutter_local_notifications 在应用程序未运行时有条件地显示通知。
background_fetch 仅允许您以大于 15 分钟的间隔在后台运行代码,并且您不能将其安排在特定时间。不理想,但我可以使用它。重要的是,在 Android 上,即使应用程序关闭,您也会收到事件(称为“ headless 事件”)。在 iOS 上,只有当应用没有被用户终止时,您才会收到 headless 事件。这是因为 iOS 的限制/功能。
在 headless 和非 headless 的 background_fetch 事件处理程序中,我有以下代码来生成通知:

  var androidPlatformChannelSpecifics = AndroidNotificationDetails(
      'your channel id', 'your channel name', 'your channel description',
      importance: Importance.Max, priority: Priority.High, ticker: 'ticker');
  var iOSPlatformChannelSpecifics = IOSNotificationDetails();
  var platformChannelSpecifics = NotificationDetails(
      androidPlatformChannelSpecifics, iOSPlatformChannelSpecifics);
  await flutterLocalNotificationsPlugin.show(
      0, 'my event', 'my event', platformChannelSpecifics,
      payload: 'item x');

关于flutter - 有条件地显示预定通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63716335/

相关文章:

download - 运行 flutter doctor 时很难出错

dart - void Function(int) 不是 void Function(dynamic) 的有效覆盖

来自命令提示符的 Windows 8 通知服务通知

ios - 当应用程序被终止(非事件)时,点击 Firebase 通知不起作用

Android Facebook 锁屏通知

flutter - 为 flutter android 项目添加 google gms 服务时出错并且厌倦了搜索答案

xml - Flutter/Dart XML添加和插入节点

android-studio - flutter 卡在等待天文台端口可用

flutter - 任何人都可以帮助我使用 BS 到 AD 日期转换器来 flutter 吗?

ios - 奇怪的错误,有些时候 flutter 自动停止并开始执行