【发布时间】:2020-08-01 01:16:16
【问题描述】:
我知道以前出现过类似的问题,但我认为我需要进一步澄清,因为我仍然不知道如何完成。我是初学者,如有错误请见谅。
如果用户尚未完成,我正在尝试从我的应用中获得日常任务的每日提醒,那么当他已经完成任务时,我怎样才能让它不显示呢?
到目前为止,我发现的解决方案建议删除待处理通知并同时为将来的日期设置新通知。
我使用此代码成功设置了每日通知:
func sendDailyReminder() {
let content = UNMutableNotificationContent()
content.title = "Daily reminder"
content.body = "You still have task to complete today."
content.sound = UNNotificationSound.default
var dateComponents = DateComponents()
dateComponents.hour = 20
dateComponents.minute = 00
let trigger = UNCalendarNotificationTrigger(dateMatching: dateComponents, repeats: true)
let request = UNNotificationRequest(identifier: "dailyTrigger", content: content, trigger: trigger)
center.add(request) { (error) in
if let error = error {
print("Notification Error: ", error)
}
}
}
我也可以使用 removePendingNotificationRequest 方法成功删除挂起的通知,但我如何在此处使用 dateComponents 为明天设置触发器?
或者还有其他方法可以实现吗?也许使用后台获取来检查它是否在发送通知之前完成?
我发现一些回复表明这实际上是不可能的,但是任何任务或待办事项应用程序如何实现这样的目标?
【问题讨论】:
-
你不能设置一个重复通知,然后当任务完成后,取消通知?
-
是的,这就是我尝试做的,但如何设置第二天的通知?这是一个示例:每天晚上 8 点有提醒,用户在晚上 7 点完成任务,我取消通知然后我必须为第二天设置新通知,它不能简单地是相同的通知,因为那样它会显示相同无论如何,对吧?如何设置第二天的新通知?那是我不知道该怎么做的部分
-
您可能需要安排多个通知;一周中的每一天。然后,当任务完成后,您可以取消当天的通知。
-
据我了解,您需要做两件事:a) 在任务已经完成时不要调用此方法,以及 b) 当任务的状态从打开完成。
-
@Paulw11 我想过,这似乎是一个好方法,但我又觉得我缺少一些知识来实现它。如何设置下周失踪的日子?如果每天有 7 个重复通知并且我取消了那一天,那么在某些时候必须重新设置它,在这里我会回到与以前相同的问题。
标签: ios swift usernotifications