iOS限制64个本地通知

时间:2016-02-29 08:23:00

标签: ios cocoa-touch uilocalnotification

我知道这个主题是重复的,但我需要你的帮助。这对我来说非常重要,其他帖子对我来说没有真正的解决方案。

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

用户必须为每个条目设置提醒日期(带日期选择器)。此日期将用于本地通知的开火日期。 每个条目都有2个本地通知

首次开火日期:所选日期前一周,第二次开火日期:选择日期

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

如何通过限制来解决这个问题?

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

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

2 个答案:

答案 0 :(得分:3)

  1. 您可以定期向未在一段时间内联系后端的设备发送推送通知,并让远程通知处理程序设置最多限制的本地通知,请参阅application(_:didReceiveRemoteNotification:fetchCompletionHandler:)

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

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

答案 1 :(得分:1)

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

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)

}

因此,您的通知列表将自动刷新。