我有一个本地通知设置,应该在每天早上8点开火,除此之外,它会在早上8点发射3次,然后再发生在上午9点和下午12点,此后停止并在下一次重复同样的事情天。
我检查了函数是否被多次调用(它不是),即使多次调用它也无法解释错误时间的触发。几乎所有我能想到的,重新实现代码,但无济于事。
这就是我设置通知的方式:
func setUpMainLocalNotification() {
let notificationSettings = UIApplication.sharedApplication().currentUserNotificationSettings()
if notificationSettings?.types == .None {
return
}
let calendar = NSCalendar(calendarIdentifier: NSCalendarIdentifierGregorian)!
let currentCalendar = NSCalendar.currentCalendar()
let date = NSDate()
let calendarComponents = calendar.components([.Year, .Month, .WeekOfMonth, .Hour, .Minute, .Second], fromDate: date)
calendarComponents.hour = 8
calendarComponents.minute = 0
calendarComponents.second = 0
currentCalendar.timeZone = NSTimeZone.defaultTimeZone()
let reminder = UILocalNotification()
reminder.timeZone = NSTimeZone.defaultTimeZone()
reminder.fireDate = currentCalendar.dateFromComponents(calendarComponents)
reminder.alertBody = "Notification"
reminder.category = "CATEGORY_ID"
reminder.repeatInterval = .Day
reminder.alertAction = "Reply"
reminder.soundName = "sound.aif"
UIApplication.sharedApplication().scheduleLocalNotification(reminder)
}
更新
当我在这里阅读我自己的问题时,我注意到我在设置小时后设置时区我希望我的通知发射,所以我在设置小时之前移动了以下行,它似乎工作,火灾只有一次,早上8点。
currentCalendar.timeZone = NSTimeZone.defaultTimeZone()
答案 0 :(得分:1)
在设置新通知之前,您是否取消之前的通知?
在您的方法开始时尝试这个
UIApplication.sharedApplication().cancelAllLocalNotifications()
看看它是否有帮助。
答案 1 :(得分:1)
这是最新的代码
UIApplication.shared.cancelAllLocalNotifications()