I am new to iOS development, but have created the app and I am trying to create a daily notification for a set time. Currently the notification executes once for the given d
var repeatInterval: NSCalendarUnit
=> the docs say "The calendar interval at which to reschedule the notification."
so: use NSCalendarUnit.CalendarUnitDay
You have to provide an NSCalendarUnit value like “HourCalendarUnit” or “DayCalendarUnit” for repeating a notification.
Just add this code to repeat the local notification daily :
notification.repeatInterval = NSCalendarUnit.CalendarUnitDay
So, had to modify the @vizllx's above code slighty. Here is the new line:
notification.repeatInterval = NSCalendarUnit.Day
Here is a full working example I used:
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)
}
The other answers show how to use the old, pre iOS 10 local notifications. With iOS 10 and later, you must use UNNotificationCenter as follows:
let content = UNMutableNotificationContent()
content.title = "This will appear in bold, on it's own line."
content.subtitle = "This will appear in bold, on it's own line, below the title."
content.body = "This will appear as normal text, below the title and subtitle."
let triggerInputForHourlyRepeat = Calendar.current.dateComponents([.minute], from: intendedFireDateVariable)
let trigger = UNCalendarNotificationTrigger.init(dateMatching: triggerInput, repeats: true)
let request = UNNotificationRequest(identifier: "someUniqueID", content: content, trigger: trigger)
let unc = UNUserNotificationCenter.current()
unc.add(request, withCompletionHandler: { (error) in
/// Handle error
})
Helpful tutorials: