我在iOS上使用本地通知,但是当iOS尝试创建通知时我遇到了一些问题。其中一些是创造的,一些是赢得的。
在仔细检查了我的代码之后,我发现它在创建本地通知时失败了。
UIApplication.sharedApplication().scheduleLocalNotification(notification)
我能想到的唯一原因是在循环内创建通知,大约50-60个通知,对于iOS来说太过分了。我是这样做的,因为所有的通知都有不同的时间和不同的日子,属于不同的东西。
这是我创建本地通知的块:
let createdUid = self.generateNotificationUUID()
// create a corresponding local notification
let notification = UILocalNotification()
/* Time and timezone settings */
notification.fireDate = self.buildTime()
notification.repeatInterval = NSCalendarUnit.WeekOfYear
notification.timeZone = NSTimeZone.systemTimeZone()
/* Information settings */
notification.alertBody = "Sector \(notificationData["sector"]!): located at \(notificationData["name"]!) closes in 15 min."
notification.alertAction = "Open"
/* Badge settings */
notification.applicationIconBadgeNumber = UIApplication.sharedApplication().applicationIconBadgeNumber + 1
notification.soundName = "ring.caf"
notification.userInfo = ["UUID": createdUid, ]
/* Schedule the notification */
UIApplication.sharedApplication().scheduleLocalNotification(notification)
所有这些代码都在循环中。调用通知创建之前的相同循环动态构建notificationData数组。
通知数据数组包含扇区,名称以及时间和日期。
时间和日期用于计算通知开火日期。 扇区和名称用于警报正文。 并且所有四个值都用于生成UID(UUID)。
如果我打印并删除UIApplication.sharedApplication()......所有数据看起来都很好,它需要什么。
我已尝试使用
来解决问题dispatch_async(dispatch_get_main_queue()){...}
和
dispatch_sync(dispatch_get_main_queue()){...}
但是使用异步我收到了与没有它相同的结果,使用同步我的屏幕冻结。
我有点失意,我确定我的问题是因为iOS没有及时处理所有通知创建,但我不知道如何修复它。
我希望有人可以帮助我,我使用 XCode 7.3.1 和 Swift 2.2
答案 0 :(得分:3)
来自文档:https://developer.apple.com/library/ios/documentation/iPhone/Reference/UILocalNotification_Class/
应用只能有有限数量的预定通知;该 系统保持最快的64通知(自动 重新安排的通知计为单个通知)和 丢弃其余的。