我正在使用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.1和Swift 2.2
从文档中:https : //developer.apple.com/library/ios/documentation/iPhone/Reference/UILocalNotification_Class/
一个应用只能包含有限数量的预定通知;系统会保留最早触发的64条通知(自动重新安排的通知将被计为单个通知),其余的将被丢弃。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句