有没有一种方法可以使用flutter_local_notifications跳过定期通知?

时间:2020-11-07 17:57:55

标签: flutter notifications

我正在使用flutter_local_notifications安排每日提醒通知,但是我想防止用户在当天已经完成操作的情况下被通知打扰。换句话说,我希望能够跳过一天。

由于FlutterLocalNotificationsPlugin无法在触发每个重复通知之前运行一些代码,因此我想在需要跳过一天时可以执行以下解决方法:取消重复通知并重新安排TZDateTime参数设置为第二天。不幸的是,这种方式行不通。

该文档明确指出(source):

请注意,给定值时,[scheduledDate]可能并不代表第一次显示通知。例如,日期和时间当前为2020-10-19 11:00(即2020年10月19日11:00 AM),[scheduledDate]为2020-10-21 10:00,[matchDateTimeComponents]的值为[DateTimeComponents.time],那么下次出现通知的时间是2020-10-20 10:00。

目前,恐怕唯一的解决方案是使用workmanager而非FlutterLocalNotificationsPlugin之类的东西来管理自己的后台任务。我对吗?还有其他建议吗?

1 个答案:

答案 0 :(得分:0)

我遇到了同样的问题。我要采用的解决方案是使用 zonedSchedule(不将其配置为重复)手动将所有定期通知安排到未来 X 时间(比如一个月)。

接下来,您可以使用 cancel 取消您想要的任何通知。然后,您只需确保在接近初始安排时间时将每日通知的未来重新安排为一个月。例如,您可以使用 shared preferences 来跟踪调度限制,以便在应用程序打开时进行检查。