ios - 安排无限数量的本地通知

2024-06-29

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

事件存储在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 个,我需要一种定期安排通知的机制。即使应用程序位于后台,也应该执行此操作。

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

info

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


我不确定我是否正确理解你的问题。但我的印象是这样的:

您的用户设置并更新事件数据库,其中每个事件都有特定的日期和时间。
他们只需将新事件输入数据库即可。 那么很容易获取第一个n(例如,10)来自数据库的事件。 由于无法保证本地通知的传递,因此需要获取多个通知,请参阅the docs https://developer.apple.com/documentation/usernotifications:

我们尽一切努力以一种方式传递本地和远程通知 及时,但不保证交货。

注册这些n与通知中心进行本地通知,并取消不再属于其中的事件的任何通知n接下来的。The docs https://developer.apple.com/documentation/usernotifications/scheduling_a_notification_locally_from_your_app say:

通常,当情况发生变化且您不同意时,您会取消请求 不再需要通知用户。例如,如果用户完成了 提醒,您将取消与此相关的任何活动请求 提醒。要取消活动通知请求,请致电removePendingNotificationRequests(withIdentifiers:) or removePendingNotificationRequests(withIdentifiers:)的方法 UN用户通知中心。

因此,即使您的应用程序处于后台或暂停状态,本地通知也会唤醒它,处理事件,将其从数据库中删除,并更新n接下来的活动。即使无法发送通知(虽然不太可能,但有可能),您也可以处理错过的事件,并安排下一个事件。
我希望这能满足您的要求!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ios - 安排无限数量的本地通知 的相关文章

随机推荐