安排本地通知的数量
Posted
技术标签:
【中文标题】安排本地通知的数量【英文标题】:Schedule number of Local Notifications 【发布时间】:2011-10-11 04:25:03 【问题描述】:我正在制作一个 iPhone 应用程序,其中我实现了本地通知的概念,以提醒用户吃药。
但在 ios 中,我们一次不能安排超过 64 个通知。但是我在数据库中有许多日期时间条目。如何安排超过 64 个通知?
【问题讨论】:
【参考方案1】:如您所知,您可以为每个应用安排最多 64 个通知。如果您添加的更多,系统将保持最快触发的 64 个通知,并丢弃另一个。
确保安排所有通知的一种方法是首先安排前 64 个通知,然后定期(可能在每次启动应用程序或每次触发通知时)检查安排的通知数量如果通知少于 64 个,假设 n 个通知,然后安排下一个 (64 - n) 个通知。
int n = [[[UIApplication sharedApplication] scheduledLocalNotifications] count];
int x = 64 - n;
// Schedule the next 'x' notifications
【讨论】:
我假设这意味着每个设备每个应用程序有 64 个通知,还是每个应用程序总共有 64 个通知?例如,如果我使用 2 部不同的手机,我是否可以在每部手机上分别设置 64 条通知,总共 128 条? 这意味着每个设备每个应用程序有 64 个通知【参考方案2】:我创建了带有本地通知的应用程序,在这种情况下,用户在给定的时间间隔内每 20/40/60 分钟收到一次通知(例如 8:00-20:00)。解决方案是全天最多生成 64 条通知,并将 UILocalNotification 的repeatInterval 设置为 NSCalendarUnitDay。当然,如果您需要使用更复杂的通知模式,这不是要走的路。
另外值得一提的是,从 iOS7 开始,由于客户端的需求,我不得不在后台应用刷新中实现通知的重新调度。
【讨论】:
【参考方案3】:对此的基本解决方案是使用 repeatInterval 来通知以特定时间间隔发生的通知。这将减少冗余通知的数量。但是,如果数字超过 64,那么您可以采用一种策略来使用 userInfo 字典并在其中传递下一个通知的时间和消息,并在调用 - (void) application:(UIApplication *)application didReceiveLocalNotification: (UILocalNotification *)notification
方法时安排它。
这可能有点棘手,因此您必须小心在 userInfo 字典中传递正确的数据并准确设置通知。
我希望这会有所帮助。
【讨论】:
当应用程序处于后台或非活动状态并且触发通知并且用户单击“取消”按钮时,这也会产生问题,在这种情况下您的didReceiveLocalNotification
方法将不会被调用,所以我们在这种情况下,将需要更好的策略。如果您发现更好的东西,请告诉我。【参考方案4】:
除了首先安排前 64 个通知之外,我不知道还有什么其他方法,然后在通知的启动、后台处理和启动时,检查通知数量是否少于 64,然后重新安排您的通知.
我不明白为什么 Apple 的通知实现如此糟糕。如果有人能找到更好的方法,请告诉我。
【讨论】:
【参考方案5】:我发现这个 Swift 库与我们正在寻找的几乎相同。我将尝试这个并确认它是如何工作的:
https://github.com/ahmedabadie/ABNScheduler
【讨论】:
【参考方案6】:Apple Doc 说:
一个应用只能有有限数量的预定通知;系统保留最快触发的 64 条通知(自动重新安排的通知计为单个通知)并丢弃其余通知。
【讨论】:
以上是关于安排本地通知的数量的主要内容,如果未能解决你的问题,请参考以下文章