我有以下用于请求并发布通知的代码:
let request = UNNotificationRequest(identifier: "timerDone", content: content, trigger: trigger)
UNUserNotificationCenter.current().add(request, withCompletionHandler: nil)
它位于for循环中,因此通常会执行多次-循环的每次迭代都会导致运行此代码,但是对于每次迭代,请求都具有相同的标识符。
这是否意味着我要覆盖在循环的先前迭代中刚刚添加的先前通知? (我问的原因是,即使有多个计时器,在关闭应用程序后也只会通过一个通知;该通知通常是针对计时器的通知,这是for循环中的最后一次迭代(此代码在应用程序中确实已辞职)活动))。
答案 0 :(得分:2)
如Apple documentation中所述:
如果在安排新通知时使用相同的标识符,则 系统使用该命令删除先前计划的通知 标识符并将其替换为新的标识符。
您始终可以添加唯一的标识符标识符,简单的迭代索引/数字,UUID,项目ID或其他任何内容。
let identifier = "timerDone-\(index)"
答案 1 :(得分:1)
是的,它会将您的旧通知替换为新通知。
您可以在循环内进行此更改:
let strIdentifier = "timerDone_\(i)"
let request = UNNotificationRequest(identifier: strIdentifier, content: content, trigger: trigger)
UNUserNotificationCenter.current().add(request, withCompletionHandler: nil)