2015-06-03 2 views
11

Я новичок в разработке iOS, но создал приложение, и я пытаюсь создать ежедневное уведомление в течение установленного времени. В настоящее время уведомление выполняется один раз для данной даты/времени. Я не уверен, как использовать метод repeatInterval для ежедневного планирования. Каков наилучший способ повторить уведомление ежедневно? любая помощь будет высоко оценена (Y).Повторное локальное уведомление ежедневно в заданное время с быстрым

var dateComp:NSDateComponents = NSDateComponents() 
    dateComp.year = 2015; 
    dateComp.month = 06; 
    dateComp.day = 03; 
    dateComp.hour = 12; 
    dateComp.minute = 55; 
    dateComp.timeZone = NSTimeZone.systemTimeZone() 

    var calender:NSCalendar = NSCalendar(calendarIdentifier: NSCalendarIdentifierGregorian)! 
    var date:NSDate = calender.dateFromComponents(dateComp)! 

    var notification:UILocalNotification = UILocalNotification() 
    notification.category = "Daily Quote" 
    notification.alertBody = quoteBook.randomQuote() 
    notification.fireDate = date 
    notification.repeatInterval = 

    UIApplication.sharedApplication().scheduleLocalNotification(notification) 

ответ

14

Вы должны предоставить значение NSCalendarUnit как «HourCalendarUnit» или «DayCalendarUnit» для повторения уведомления.

Просто добавьте этот код, чтобы повторить местное уведомление ежедневно:

notification.repeatInterval = NSCalendarUnit.CalendarUnitDay 
+3

Для некоторых уведомлений причины продолжает получать толкнуло один за другим. Я изменил его на несколько минут, чтобы проверить, но с тех пор уведомления продолжают толкаться, даже когда я его отменил. Любые идеи почему? @vizllx – JUSDEV

+0

У меня такая же проблема. Кто-нибудь знает причину и исправьте –

+0

Если один раз переместился один за другим, я узнал, что локальные уведомления, зарегистрированные в разных сеансах установки, сохраняются. Если вы удалите и затем переустановите приложение, предыдущие уведомления (если они не были запущены все же) будет ВСЕ гореть сразу, если локальные уведомления снова активируются в самом новом сеансе установки. Надеюсь, это помогает кому-то другому. – cloudcal

1

var repeatInterval: NSCalendarUnit

=> документы говорят «Календарный интервал, на котором перепланировать уведомление»

так: используйте NSCalendarUnit.CalendarUnitDay

+0

@downvoter: почему? –

12

Так, пришлось изменить приведенный выше код на @ vizllx в slighty. Вот новая линия:

notification.repeatInterval = NSCalendarUnit.Day 

Вот полный рабочий пример я использовал:

let notification = UILocalNotification() 

    /* Time and timezone settings */ 
    notification.fireDate = NSDate(timeIntervalSinceNow: 8.0) 
    notification.repeatInterval = NSCalendarUnit.Day 
    notification.timeZone = NSCalendar.currentCalendar().timeZone 
    notification.alertBody = "A new item is downloaded." 

    /* Action settings */ 
    notification.hasAction = true 
    notification.alertAction = "View" 

    /* Badge settings */ 
    notification.applicationIconBadgeNumber = 
    UIApplication.sharedApplication().applicationIconBadgeNumber + 1 
    /* Additional information, user info */ 
    notification.userInfo = [ 
    "Key 1" : "Value 1", 
    "Key 2" : "Value 2" 
    ] 

    /* Schedule the notification */ 
    UIApplication.sharedApplication().scheduleLocalNotification(notification) 
}