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

卢卡斯

我正在使用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()){...}

但是使用async时,我收到的结果与不使用async时相同,并且使用sync时,屏幕冻结。

我对此有些迷失,我确定我的问题是因为iOS不能及时处理所有通知创建,但是我不知道如何解决它。

我希望有人可以帮助我,我正在使用XCode 7.3.1Swift 2.2

伊万·梅洛(Ewan Mellor)

从文档中:https : //developer.apple.com/library/ios/documentation/iPhone/Reference/UILocalNotification_Class/

一个应用只能包含有限数量的预定通知;系统会保留最早触发的64条通知(自动重新安排的通知将被计为单个通知),其余的将被丢弃。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章