每日本地通知在Swift iOS 9.2中

试图迅速发送每日本地通知。 但是由于某种原因,它只是每分钟发送一次。 我希望在应用程序打开后的第一个通知发送30分钟,然后每天重复此通知。

在迅速fie我有以下代码:

// ———每日通知代码(也在应用程序delagate中添加部分———- let theDate = NSDate()

let dateComp = NSDateComponents() dateComp.minute = 30 let cal = NSCalendar.currentCalendar() let fireDate:NSDate = cal.dateByAddingComponents(dateComp , toDate: theDate, options: NSCalendarOptions(rawValue: 0))! let notification:UILocalNotification = UILocalNotification() //choosing what it says in the notification and when it fires notification.alertBody = "Your Daily Motivation is Awaits" notification.fireDate = fireDate UIApplication.sharedApplication().scheduleLocalNotification(notification) //displaying notification every day notification.repeatInterval = NSCalendarUnit.Day //-------------end of daily notification code--------------- 

在我的应用程序委托文件我有以下代码:

 func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { //----------daily notification section ---------- let notiftypes:UIUserNotificationType = UIUserNotificationType.Alert.union(UIUserNotificationType.Badge).union(UIUserNotificationType.Sound) let notifSettings:UIUserNotificationSettings = UIUserNotificationSettings(forTypes: notiftypes, categories: nil) UIApplication.sharedApplication().registerUserNotificationSettings(notifSettings) return true //----------end of daily notification section----------- } 

问题在于您在安排通知后设置重复间隔。 只需在scheduleLocalNotification之前设置通知属性,并确保您只安排一次:

 let notification = UILocalNotification() notification.alertBody = "Your Daily Motivation is Awaits" // You should set also the notification time zone otherwise the fire date is interpreted as an absolute GMT time notification.timeZone = NSTimeZone.localTimeZone() // you can simplify setting your fire date using dateByAddingTimeInterval notification.fireDate = NSDate().dateByAddingTimeInterval(1800) // set the notification property before scheduleLocalNotification notification.repeatInterval = .Day UIApplication.sharedApplication().scheduleLocalNotification(notification) 

注意:UIUserNotificationType是OptionSetType结构,所以你可以简化它的声明:

 let notiftypes:UIUserNotificationType = [.Alert, .Badge, .Sound]