Flutter 特定日期范围内每天的通知

Flutter 特定日期范围内每天的通知,flutter,Flutter,因此,我有一个应用程序,提醒用户每天在特定时间、特定日期间隔服用药物。例如,用户可以选择在一天中的某个时间从2020年9月16日到2020年9月18日获取通知 我的方法是:我使用flatter\u local\u notifications包和showDailyAtTime()函数安排通知。然而,我面临的问题是,假设我不再打开应用程序,则无法取消计划通知,因此,即使在指定的日期范围之后,通知也会弹出。我希望通知处于脱机状态,因此Firebase似乎不是一个选项。您可以使用解决此问题 方法是每次启

因此,我有一个应用程序,提醒用户每天在特定时间、特定日期间隔服用药物。例如,用户可以选择在一天中的某个时间从2020年9月16日到2020年9月18日获取通知


我的方法是:我使用
flatter\u local\u notifications
包和
showDailyAtTime()
函数安排通知。然而,我面临的问题是,假设我不再打开应用程序,则无法取消计划通知,因此,即使在指定的日期范围之后,通知也会弹出。我希望通知处于脱机状态,因此Firebase似乎不是一个选项。

您可以使用解决此问题

方法是每次启动应用程序时调用方法
rescheduleNotifications
。在该方法中,删除所有通知并设置下一个通知。例如,在
calculateNotificationTimes
中,计算未来30天的所有通知。例如,2020年9月16日至2020年9月18日的所有通知都是在您选择的时间每天发送的

import'包:flatter_local_通知/flatter_local_通知.dart';
将来的重新调度通知()异步{
final localNotificationsPlugin=flatterlocalnotificationsplugin();
const initializationSettings=initializationSettings(AndroidInitializationSettings('app_图标'),IOSInitializationSettings());
const androidChannelSpecifics=AndroidNotificationDetails(“您的频道id”、“您的频道名称”、“您的频道描述”);
const IONotificationDetails=IONotificationDetails();
const notificationsDetails=NotificationDetails(androidChannelSpecifics、iOSNotificationDetails);
等待localNotificationsPlugin.initialize(初始化设置);
等待localNotificationsPlugin.cancelAll();
//计算下一个通知。
最终通知时间=计算通知时间();
var_currentNotificationId=0;
对于(通知时间中的最后一次){
localNotificationsPlugin.schedule(
_currentNotificationId++,
“该吃药了。”,
“吃红色药丸”,
时间
通知详情,
安德罗德洛维希莱德:是的,
);
}
}
在iOS上,您最多只能启用64个通知。此方法在iOS上的缺点是,如果用户在64次通知后未打开应用程序,则不会显示任何通知。我认为这很好,因为用户似乎不再使用该应用程序了


未测试代码。

您可以使用解决问题

方法是每次启动应用程序时调用方法
rescheduleNotifications
。在该方法中,删除所有通知并设置下一个通知。例如,在
calculateNotificationTimes
中,计算未来30天的所有通知。例如,2020年9月16日至2020年9月18日的所有通知都是在您选择的时间每天发送的

import'包:flatter_local_通知/flatter_local_通知.dart';
将来的重新调度通知()异步{
final localNotificationsPlugin=flatterlocalnotificationsplugin();
const initializationSettings=initializationSettings(AndroidInitializationSettings('app_图标'),IOSInitializationSettings());
const androidChannelSpecifics=AndroidNotificationDetails(“您的频道id”、“您的频道名称”、“您的频道描述”);
const IONotificationDetails=IONotificationDetails();
const notificationsDetails=NotificationDetails(androidChannelSpecifics、iOSNotificationDetails);
等待localNotificationsPlugin.initialize(初始化设置);
等待localNotificationsPlugin.cancelAll();
//计算下一个通知。
最终通知时间=计算通知时间();
var_currentNotificationId=0;
对于(通知时间中的最后一次){
localNotificationsPlugin.schedule(
_currentNotificationId++,
“该吃药了。”,
“吃红色药丸”,
时间
通知详情,
安德罗德洛维希莱德:是的,
);
}
}
在iOS上,您最多只能启用64个通知。此方法在iOS上的缺点是,如果用户在64次通知后未打开应用程序,则不会显示任何通知。我认为这很好,因为用户似乎不再使用该应用程序了


没有测试代码。

这样,除非我正确打开应用程序,否则通知不会每天出现?而且,即使取消也只有在我打开应用程序时才会发生。我认为这带来了同样的问题,通过这种方法,通知可以每天显示。为此,“calculateNotificationTimes”方法每天只需要输出一次。与showDailyAtTime相比,它的优点是不会显示不必要的通知。有了它,除非我正确打开应用程序,否则通知不会每天出现?而且,即使取消也只有在我打开应用程序时才会发生。我认为这带来了同样的问题,通过这种方法,通知可以每天显示。为此,“calculateNotificationTimes”方法每天只需要输出一次。与showDailyAtTime相比,它的优点是不会显示不必要的通知。