【问题标题】:Flutter Local Notifications show notification every 72 hoursFlutter 本地通知每 72 小时显示一次通知
【发布时间】:2022-01-21 03:35:20
【问题描述】:

我正在尝试每 72 小时发送一次通知。我正在使用flutter_local_notifications 包。我知道我可以定期显示通知,但据我所知,它仅限于以下选项:

/// The available intervals for periodically showing notifications.
enum RepeatInterval {
  /// An interval for every minute.
  everyMinute,

  /// Hourly interval.
  hourly,

  /// Daily interval.
  daily,

  /// Weekly interval.
  weekly
}

有什么办法可以达到72h的间隔吗?我在这方面找不到任何东西。如果您需要更多信息,请告诉我!任何帮助表示赞赏!

【问题讨论】:

  • 它是固定 72 小时还是可以由某人更改为几分钟或几天等?
  • @Diwyansh 不太确定我是否理解您的问题。 72h 是固定的
  • 实际上,您可以选择在前 72 小时完成时安排下一个 72 小时的通知,或者您可以在检测到 72 小时后立即显示通知您更喜欢什么?
  • @Diwyansh 通知应在给定时间每 72 小时发送一次

标签: flutter dart push-notification flutter-local-notification


【解决方案1】:

如果我是你,我会使用 flutter cron 包:cron package on pub.dev 它允许您安排一个 cron 作业,这只是一个每隔 x 秒或几天、几个月运行一次的任务...... 以您为例:

fltrNotification = new FlutterLocalNotificationsPlugin();
final cron = Cron();
// Schedule a task that will run every 3 days
cron.schedule(Schedule.parse('0 0 */3 * *'), () async {
  // Schedule a notification right now
  fltrNotification.schedule(1, "Times Uppp", task, 
  DateTime.now(), generalNotificationDetails);
  print('every three days');
});
If you want to change the frequency, cron is very flexible and you can do pretty much any frequency, the cron syntax is pretty straightforward and their are some websites online that allow you to simply generate it.

当然,有几种方法可以使用 cron 来做你想做的事。您可以安排在接下来的 72 小时内每 72 小时通知一次,每 24 小时刷新一次,无论您觉得更好。

(顺便说一句,我在这个例子中使用了 Piyush Kumar 的部分答案,并将其更新为使用 cron)

【讨论】:

  • 如果应用程序完全关闭,这是否也会运行?
【解决方案2】:

这种方法总是有效的

  1. 制作您自己的软件包副本
  2. 修改它?

1.制作自己的副本

您可以轻松地将包文件复制到您的项目中。并像这样使用它 (flutter doc)

dependencies:
  plugin1:
    path: ../plugin1/

如果您愿意,可以分叉项目并像下面这样使用它

dependencies:
  plugin1:
    git:
      url: git://github.com/flutter/plugin1.git

2.修改它?

对于您的问题,您可以将每日间隔的值更改为(3 * 每日间隔)

我找到了这部分代码 (android - ios)

【讨论】:

    【解决方案3】:

    你可以试试这个:-

     fltrNotification = new FlutterLocalNotificationsPlugin();
    
     var scheduledTime = DateTime.now().add(Duration(hour : 72));
     fltrNotification.schedule(1, "Times Uppp", task, 
     scheduledTime, generalNotificationDetails);
    

    【讨论】:

    • 这只会导致 1 个通知,还是我错了?我想以 72 小时间隔重复该通知
    猜你喜欢
    • 2023-01-20
    • 2021-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多