2015-06-03 21 views
11

Jestem nowy w rozwoju iOS, ale utworzyłem aplikację i próbuję utworzyć codzienne powiadomienie przez określony czas. Obecnie powiadomienie wykonuje się raz dla danej daty/czasu. Nie jestem pewien, jak użyć metody repeatInterval, aby zaplanować ją codziennie. Jaka jest najlepsza metoda powtarzania powiadomienia codziennie? jakakolwiek pomoc byłaby bardzo cenna (Y).Powtarzanie powiadomienia lokalnego codziennie o ustalonym czasie z szybkim

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) 

Odpowiedz

14

Musisz podać wartość NSCalendarUnit jak „HourCalendarUnit” lub „DayCalendarUnit” za powtarzanie powiadomienie.

Wystarczy dodać ten kod, aby powtórzyć lokalnym powiadomienia codziennie:

notification.repeatInterval = NSCalendarUnit.CalendarUnitDay 
+3

Dla niektórych powiadomień przyczyny ciągle wciśnięty jeden po drugim. Zmieniłem go na minuty, aby przetestować, ale od tego czasu powiadomienia są przesyłane nawet po ich zmianie. Jakieś pomysły, dlaczego? @vizllx – JUSDEV

+0

Mam ten sam problem. Czy ktoś zna przyczynę i naprawić –

+0

Po naciśnięciu jednego po drugim, dowiedziałem się, że lokalne powiadomienia zarejestrowane w różnych sesjach instalacyjnych trwają - po odinstalowaniu i ponownym zainstalowaniu aplikacji poprzednie powiadomienia (jeśli nie zostały uruchomione) yet) WSZYSTKO uruchomi się natychmiast, jeśli powiadomienia lokalne zostaną ponownie włączone w najnowszej sesji instalacji. Mam nadzieję, że to pomoże komuś innemu. – cloudcal

1

var repeatInterval: NSCalendarUnit

=> docs powiedzieć "Odstęp kalendarz, w którym przełożyć powiadomienie"

tak: używać NSCalendarUnit.CalendarUnitDay

+0

@downvoter: dlaczego? –

12

Więc musiał zmodyfikować powyższy kod znaku @ vizllx za Slighty. Oto nowa linia:

notification.repeatInterval = NSCalendarUnit.Day 

tutaj jest pełna przykładów pracy użyłem:

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) 
}