本地通知在多个非预定时间点火多次

时间:2016-03-23 07:16:31

标签: swift uilocalnotification

我有一个本地通知设置,应该在每天早上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()

2 个答案:

答案 0 :(得分:1)

在设置新通知之前,您是否取消之前的通知?

在您的方法开始时尝试这个

UIApplication.sharedApplication().cancelAllLocalNotifications()

看看它是否有帮助。

答案 1 :(得分:1)

这是最新的代码

UIApplication.shared.cancelAllLocalNotifications()