我正在尝试使用本地通知,这是我的代码:
的appdelegate
application.registerUserNotificationSettings(UIUserNotificationSettings(forTypes: [UIUserNotificationType.Sound, UIUserNotificationType.Alert, UIUserNotificationType.Badge], categories: nil))
notificationViewController
let localNotification:UILocalNotification = UILocalNotification()
var BDate = friend.birthday.componentsSeparatedByString("/")
let date = NSDate.date(year: 2015, month: Int(BDate[1])!, day: Int(BDate[0])! - daysBefore, hour: hour, minute: min, second: 0)
localNotification.soundName = "notificationSound.mp3"
localNotification.alertBody = friend.fullName + " has a birthday today!"
localNotification.fireDate = date
localNotification.timeZone = NSTimeZone.localTimeZone()
localNotification.repeatInterval = NSCalendarUnit.Year
UIApplication.sharedApplication().scheduleLocalNotification(localNotification)
friend.birthday是一个字符串 - “DD / MM / YYYY”
我正在为friends数组中的每个朋友调用setNotification函数。如果只有一两个朋友,我会收到通知,但有一个有~100 +我不再收到通知。
我知道fireDate是正确的,我查了一下。
为什么代码不起作用?
答案 0 :(得分:3)
设备上的每个应用仅限于64个预定的本地通知。系统会丢弃超出此限制的预定通知,仅保留最快发送的64个通知。重复通知被视为单个通知。
答案 1 :(得分:1)
看起来您确实超出了通知限制。有几个提示和指南可能会有所帮助:
date
与NSDate()
,并仅在date.timeIntervalSinceReferenceDate > NSDate().timeIntervalSinceReferenceDate
compare
中有NSDate
方法时安排通知,但我更愿意进行比较原始价值)UIApplication.sharedApplication().scheduledLocalNotifications
属性。applicationDidFinishLaunching()
委托方法中。