我知道这个主题是重复的,但我需要你的帮助。这对我来说非常重要,其他帖子对我来说没有真正的解决方案。
我有一个应用程序(Swift 2),用户可以在其中保存核心数据中的条目。这些内容将以表格形式显示。
用户必须为每个条目设置提醒日期(带日期选择器)。此日期将用于本地通知的开火日期。 每个条目都有2个本地通知
首次开火日期:所选日期前一周,第二次开火日期:选择日期
问题是Apple限制了64个本地通知。 用户只能保存32个条目(32个条目* 2个通知= 64个通知)
如何通过限制来解决这个问题?
我知道我可以在Apple日历中设置“提醒”而不是本地通知。但这看起来不太好 - 这不应该是解决方案。
我知道我可以检查每个应用启动或方法确实收到通知,接下来应该设置哪些通知。但为此,我必须相信,用户启动应用程序或点击收到的通知。如果他或她几天没有这样做=>不会设置新通知,他或她不会收到下一个通知。这个解决方案不是很安全。
答案 0 :(得分:3)
您可以定期向未在一段时间内联系后端的设备发送推送通知,并让远程通知处理程序设置最多限制的本地通知,请参阅application(_:didReceiveRemoteNotification:fetchCompletionHandler:)。
< / LI>或者,您可以设置后台提取,使用重新安排本地通知,但请参阅application(_:performFetchWithCompletionHandler:)。请注意,您无法完全控制此刷新的执行频率,但根据我的经验,它每天会被调用多次。
使用上述任何一种方法时,即使用户从不打开应用,也可以更新本地通知。
答案 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)
}
因此,您的通知列表将自动刷新。