2015-06-03 19 views
11

Ich bin neu in iOS-Entwicklung, aber habe die App erstellt und ich versuche, eine tägliche Benachrichtigung für eine bestimmte Zeit zu erstellen. Derzeit wird die Benachrichtigung einmal für das angegebene Datum/Uhrzeit ausgeführt. Ich bin mir nicht sicher, wie ich die Methode repeatInterval für die tägliche Planung verwenden kann. Was ist die beste Methode, um die Benachrichtigung täglich zu wiederholen? jede Hilfe wäre sehr willkommen (Y).Wiederholte lokale Benachrichtigung täglich zu einer festgelegten Zeit mit swift

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) 

Antwort

14

Sie haben einen NSCalendarUnit Wert wie „HourCalendarUnit“ zur Verfügung zu stellen oder „DayCalendarUnit“ für eine Benachrichtigung zu wiederholen.

einfach diesen Code hinzufügen, die lokale Benachrichtigung wiederholen täglich:

notification.repeatInterval = NSCalendarUnit.CalendarUnitDay 
+3

Für einige Grund-Benachrichtigungen halten immer eine nach der anderen geschoben. Ich habe es in Minuten geändert, um es zu testen, aber seitdem werden die Benachrichtigungen immer noch gepusht, auch wenn ich es wieder geändert habe. Irgendwelche Ideen warum? @vizllx – JUSDEV

+0

Ich habe das gleiche Problem. Kennt jemand die Ursache und behebt –

+0

Wenn nacheinander gedrückt wird, habe ich gerade festgestellt, dass in verschiedenen Installationssitzungen registrierte lokale Benachrichtigungen bestehen bleiben - Wenn Sie die App deinstallieren und anschließend neu installieren, werden die vorherigen Benachrichtigungen (falls sie nicht ausgelöst wurden) Dennoch wird ALL sofort ausgelöst, wenn lokale Benachrichtigungen in der neuesten Installationssitzung erneut aktiviert werden. Hoffe das hilft jemand anderem. – cloudcal

1

var repeatInterval: NSCalendarUnit

=> die docs sagen "Der Kalender Intervall, in dem die Benachrichtigung neu zu planen"

so: Verwenden Sie NSCalendarUnit.CalendarUnitDay

+0

@ downvoter: warum? –

12

So, das @ vizllx den obigen Code slighty zu ändern hatte. Hier ist die neue Linie:

notification.repeatInterval = NSCalendarUnit.Day 

Hier ist ein voll funktionierendes Beispiel I verwendet:

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