ios-计划无限数量的本地通知

时间:2020-04-04 17:21:17

标签: ios swift notifications

我有一个允许用户创建重复事件的应用程序。在一天的特定时间,每个事件可能都具有或不具有提醒/警报。如果有的话,该应用会在一天的该时间发送本地通知

事件存储在 CoreData 中。

Event(name: "Go to London", 
  date: 2020-04-03 21:40:55.419925+0200, 
  reminders: [2020-04-03 20:00:00.419925+0200, 
  2020-04-03 10:00:00.419925+0200, 
  2020-04-03 12:00:00.419925+0200]
)

事件可能会在每年的每一天或未来X年的每一天发生。

用户每天可以创建无限数量的事件。因此,要发送的通知总数很容易超过64(您可以在iOS中计划的本地通知总数)。因此,当应用程序处于前台状态时,我无法安排所有通知。

如果要处理的通知少于64个,我需要一种机制来定期安排通知。即使应用程序在后台,也应该这样做。

如果您提供解决方案或指导我针对这种情况找到解决方案,我将非常高兴。

信息

我尝试设置一个计时器,该计时器会定期检查待处理通知的总数及其到期日期。 。但这没有用,因为一旦应用程序进入后台,计时器就不会触发。

2 个答案:

答案 0 :(得分:2)

我不确定我是否理解您的问题。但是我的印象如下:

您的用户建立并更新事件数据库,其中每个事件都有特定的日期和时间。
他们只需将新事件输入数据库即可。 然后很容易从数据库中获取前n个事件(例如10个)。 由于无法保证传递本地通知,因此需要获取多个消息,请参见the docs

尽一切努力在本地传递远程通知。 及时,但不能保证交货。

在通知中心注册这些n本地通知,并取消不再属于n下一个事件的所有通知。 The docs说:

通常,当条件发生变化时您取消请求,而您没有 不再需要通知用户。例如,如果用户完成 提醒您,您将取消与此相关的所有活动请求 提醒。要取消有效的通知请求,请致电 removePendingNotificationRequests(withIdentifiers:)removePendingNotificationRequests(withIdentifiers:)种方法 UNUserNotificationCenter。

因此,即使您的应用程序处于后台或挂起状态,本地通知也会将其唤醒,处理该事件,将其从数据库中删除并更新n下一个事件。即使无法发送通知(这不可能,但是可能),您也可以处理错过的事件并安排下一个事件。
希望这符合您的要求!

答案 1 :(得分:1)

您是否尝试过后台获取功能?官方文档链接here

在我看来,最好使用远程通知,只需设置一个简单的服务器来存储用户的数据即可。