我想创建将每天同时重复的本地通知 . 它有效,但有一个问题!
当它是7:30时,通知将出现4x ...也是9:30,20:30,22:30我们每天收到16x通知而不是4x
(我是初学者)谢谢你的帮助
码:
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
UNUserNotificationCenter.current().requestAuthorization(options: [.alert, .sound], completionHandler: {didAllow, error in})
// 7:30
setupNotification(hour: 7, minute: 30)
// 9:30
setupNotification(hour: 9, minute: 30)
// 20:30
setupNotification(hour: 20, minute: 30)
//22:30
setupNotification(hour: 22, minute: 30)
return true
}
func setupNotification(hour: Int, minute: Int) {
// have to use NSCalendar for the components
let calendar = NSCalendar(identifier: .gregorian)!;
var dateFire = Date()
// if today's date is passed, use tomorrow
var fireComponents = calendar.components( [NSCalendar.Unit.day, NSCalendar.Unit.month, NSCalendar.Unit.year, NSCalendar.Unit.hour, NSCalendar.Unit.minute], from:dateFire)
if (fireComponents.hour! > hour
|| (fireComponents.hour == hour && fireComponents.minute! >= minute) ) {
dateFire = dateFire.addingTimeInterval(86400) // Use tomorrow's date
fireComponents = calendar.components( [NSCalendar.Unit.day, NSCalendar.Unit.month, NSCalendar.Unit.year, NSCalendar.Unit.hour, NSCalendar.Unit.minute], from:dateFire);
}
// set up the time
fireComponents.hour = hour
fireComponents.minute = minute
// schedule local notification
dateFire = calendar.date(from: fireComponents)!
let localNotification = UILocalNotification()
localNotification.fireDate = dateFire
localNotification.alertTitle = "Drahá Elektrika"
localNotification.repeatInterval = NSCalendar.Unit.day
localNotification.alertBody = "Drahá elektrika"
localNotification.soundName = "start.mp3"
UIApplication.shared.scheduleLocalNotification(localNotification)
}