64个本地通知的iOS限制

问题描述:

我知道这个主题是重复的,但我需要你的帮助。这对我来说非常重要,其他职位对我来说没有真正的解决方案。64个本地通知的iOS限制

我有一个应用程序(Swift 2),其中用户可以将条目保存在核心数据中。这些条目将以表格形式显示。

用户必须为每个条目设置提醒日期(使用日期选择器)。此日期将用于本地通知的启动日期。 每个项目获取2个本地通知

第一把火日期:所选的日期前1周,第二把火日期:选择日期

的问题是64个本地通知苹果的限制。 用户只能保存32个条目(32个条目* 2个通知= 64个通知)

我该如何解决这个限制问题?

我知道我可以在Apple日历中设置“提醒”而不是本地通知。但这看起来不太好 - 这不应该是解决方案。

我知道我可以检查每个应用程序的开始或方法确实收到通知,接下来应该设置哪些通知。但为此我必须相信,用户启动应用程序或点击接收到的通知。如果他或她不这样做几天=>没有新的通知将被设置并且他或她没有得到下一个通知。这个解决方案不是很安全。

我也有过这样的问题。 所以我做的是我尽可能地计划了通知,并且当有空间来计划更多通知时,我计划了更多的通知。

UIApplication.sharedApplication().scheduledLocalNotifications?.count 

您可以获得计划通知的数量。从64中减去并计划剩余的通知。

applicationWillEnterForeground你可以做到这一点 -

if UIApplication.sharedApplication().scheduledLocalNotifications?.count < 64 

{ 

     //refersh list 

let nc = NSNotificationCenter.defaultCenter() 
nc.postNotificationName(Constants.SCHEDULE_MORE_NOTIFICATION, object: nil) 

} 

所以您的通知列表会自动刷新。

+0

thx为您的答案 - 为什么我应该用这两行代码刷新列表? ,接下来的问题是,如果用户做了32个条目 - 达到了通知限制,那该怎么办?然后他创建一个新条目,这将是最快的通知,但没有更多空间来注册通知了吗? – GhostStack

+0

好吧,一旦有新的通知空间,你就必须注册新的通知,除非你不能,所以建立一个好的队列或任何数据结构并不断刷新列表 –

+0

这个话题对我来说是非常新的。你能告诉我一个例子吗? :) – GhostStack

  1. 你可以定期发送推送通知给没有联系了一段时间的后端,并具有远程通知处理程序设置本地通知到了极限的设备,看application(_:didReceiveRemoteNotification:fetchCompletionHandler:)

  2. 或者,您可以设置一个后台提取,使用时重新安排本地通知,参见application(_:performFetchWithCompletionHandler:)。请注意,您无法完全控制此刷新的执行频率,但根据我的经验,它每天都会调用多次。

使用上述任一方法时,即使用户从不打开应用程序,也可以更新本地通知。