Je suis nouveau dans le développement iOS, mais j'ai créé l'application et j'essaie de créer une notification quotidienne pendant une durée déterminée. Actuellement, la notification est exécutée une fois pour la date/heure donnée. Je ne sais pas comment utiliser la méthode repeatInterval pour le planifier quotidiennement. Quelle est la meilleure méthode pour répéter la notification quotidiennement? toute aide serait très appréciée (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)
Vous devez fournir une valeur NSCalendarUnit telle que «HourCalendarUnit» ou «DayCalendarUnit» pour répéter une notification.
Ajoutez simplement ce code pour répéter quotidiennement la notification locale:
notification.repeatInterval = NSCalendarUnit.CalendarUnitDay
Donc, dû modifier légèrement le code ci-dessus du @ vizllx. Voici la nouvelle ligne:
notification.repeatInterval = NSCalendarUnit.Day
Voici un exemple de travail complet que j'ai utilisé:
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)
}
var repeatInterval: NSCalendarUnit
=> la documentation indique "l'intervalle de calendrier auquel replanifier la notification".
alors: utilisez NSCalendarUnit.CalendarUnitDay
Les autres réponses montrent comment utiliser les anciennes notifications locales pré iOS 10. Avec iOS 10 et versions ultérieures, vous devez utiliser UNNotificationCenter comme suit:
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
})
Didacticiels utiles: