【问题标题】:Using NSLocalNotification for multiple reminders使用 NSLocalNotification 进行多个提醒
【发布时间】:2016-06-03 18:58:40
【问题描述】:

我正在创建一个基于提醒的应用,我现在唯一的问题是能够在我的应用上实现提醒。

基本上,用户会看到一个 UITableView,用户可以在其中添加事件,我想触发这些日期,并向用户发出通知,提醒他们在保存到 Core Data 的日期发生的事件。强>

此时,我仍然不明白 NSLocalNotification 是如何工作的,我在这里听到一些用户说苹果一次只允许处理 64 个通知,而我只设法创建了 1 个,但是在创建另一个事件时,它是当我使用

调试我的应用程序时,降至 0 并随机返回 1 个事件

UIApplication.sharedApplication().scheduledLocalNotifications?

我可以看到我设置的通知,但看不到其他通知。

swift 中的任何示例应用程序都会极大地帮助我了解如何设置多个通知来添加、编辑、删除它们。

提前致谢,祝您编码愉快

【问题讨论】:

  • 有什么原因不能将事件添加到主设备日历?
  • 我该怎么做?我对 LocalNotifications 完全陌生。您有执行此操作的示例应用程序吗?

标签: swift core-data nsdate localnotification


【解决方案1】:

解决此问题的最简单方法是创建通知并安排它们。如果您想删除特定通知,则必须保留它们的引用并在应用程序启动时保留它们,但是您始终可以使用 UIApplication.sharedApplication().cancelAllLocalNotifications() 删除所有当前计划的通知

这是一个安排通知在同一时间每天触发一次并持续 5 天的示例:

let secondsInADay = 60 * 60 * 24
for i in 1...5 {
  var dayString = "\(i) days"
  if i == 1 {
    dayString = "\(i) day"
  }

  let notification = UILocalNotification()
  notification.fireDate = NSDate(timeInterval: Double(i * secondsInADay), sinceDate: NSDate())
  notification.alertBody = "It has been \(dayString) since you last opened the app."
  notification.soundName = UILocalNotificationDefaultSoundName

  if notification.fireDate?.timeIntervalSinceNow > 0 {
    UIApplication.sharedApplication().scheduleLocalNotification(notification)
  }
}

另外,您是对的,每个应用程序都有一个尚未触发的本地通知队列。该队列可以容纳 64 个单独的通知(重复通知仅计为这 64 个通知中的 1 个)。

【讨论】:

  • 如何处理日期不是硬编码而是使用日期选择器设置的情况?基本上我有一个应用程序,它有一个日期选择器,可以将此日期保存到核心数据中,我一直在做的是获取核心数据日期的实例并将其放入 fireDate,但有时它不起作用
  • 问题不在于设置通知,而在于从核心数据中提取日期。您是否尝试过在从核心数据中检索日期之前设置断点并查看正在检索的值?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-12-02
  • 1970-01-01
  • 1970-01-01
  • 2020-04-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多