一次创建多个本地通知失败

时间:2016-06-14 02:59:14

标签: ios notifications swift2 localnotification

我在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

1 个答案:

答案 0 :(得分:3)

来自文档:https://developer.apple.com/library/ios/documentation/iPhone/Reference/UILocalNotification_Class/

  

应用只能有有限数量的预定通知;该   系统保持最快的64通知(自动   重新安排的通知计为单个通知)和   丢弃其余的。