我想在上午10点创建每日通知,每天都有不同的内容。
func createNotification() {
let dateComp:NSDateComponents = NSDateComponents()
dateComp.hour = 10; // supposed to run each day at 10AM
var myCalendar:NSCalendar = NSCalendar(calendarIdentifier: NSCalendarIdentifierGregorian)!
var date:NSDate = myCalendar.dateFromComponents(dateComp)!
let localNotification = UILocalNotification()
localNotification.fireDate = date
localNotification.alertBody = getContentStringForNotification() // Method returns different string for each date
localNotification.repeatInterval = .Day // Repeats every day
localNotification.timeZone = NSTimeZone.defaultTimeZone()
UIApplication.sharedApplication().scheduleLocalNotification(localNotification)
}
它重复通知。他们不断重复并返回昨天的通知。 我搜索了Stack社区的问题,我没有找到解雇它们的正确方法。
据我所知:
帮助:
我错过了什么?代码欢迎。谢谢!
答案 0 :(得分:6)
localNotification.repeatInterval = .Day // Repeats every day
这会使通知自动安排在每一天,因此如果您想要显示相同的通知(时间和内容),则不应安排新通知。
如果您要重新安排通知,请首先清除计划中的所有先前本地通知,或阅读有关如何清除单个UILocalNotification的文档
UIApplication.sharedApplication().cancelAllLocalNotifications()
答案 1 :(得分:2)
您在该代码中安排一个通知,只需一条消息,每天向用户显示一次。如果您每次打开应用程序或每天都运行该代码,则会导致注册许多不同的通知,每个通知每天触发一次并发出一些(可能是不同的)消息。
您应该使用cancelAllLocalNotifications
或cancelLocalNotification:
删除旧通知。
可能你不想设置重复间隔。相反,每次打开应用程序时,都会在下一周的后续日期安排7个通知。如果用户在7天内没有使用该应用程序,您可能应该停止使用通知(尽管您可以注册更多应用程序限制)。