我正在制作一个iPhone应用程序,我已经实现了本地通知的概念,提醒用户服用药物。
但在iOS中,我们无法一次安排超过64个通知。但是我在数据库中有许多日期时间条目。我如何安排超过64个通知?
答案 0 :(得分:15)
您已经知道,每个应用最多可以安排64个通知。如果你添加更多,系统将保持最快的64个通知,并将丢弃另一个。
确保安排所有通知的一种方法是先安排前64个通知,然后按照常规时间间隔(可能是每次启动应用程序或每次通知触发时)检查计划的通知数量如果少于 64 通知,请说 n 通知,然后安排下一个(64 - n)通知。
int n = [[[UIApplication sharedApplication] scheduledLocalNotifications] count];
int x = 64 - n;
// Schedule the next 'x' notifications
答案 1 :(得分:4)
对此的基本解决方案是将repeatInterval用于以特定间隔发生的通知。这将减少冗余通知的数量。但是,如果数量超过64,那么您可以使用一种策略来使用userInfo字典并在其中传递下一个通知的时间和消息,并在调用- (void) application:(UIApplication *)application didReceiveLocalNotification: (UILocalNotification *)notification
方法时安排它。
这可能有点棘手,因此您必须小心在userInfo字典中传递正确的数据并准确设置通知。
我希望这会有所帮助。
答案 2 :(得分:4)
我创建了带有本地通知的应用程序,在这种情况下,用户在给定的时间间隔内每隔20/40/60分钟通知一次(例如8:00-20:00)。解决方案是在一整天内生成最多64个通知,并将重复的UILocalNotification 设置为NSCalendarUnitDay。当然,如果您需要使用更复杂的通知模式,这不是可行的方法。
另外值得一提的是,由于iOS7的原因,我不得不在后台应用刷新中实施重新安排通知。
答案 3 :(得分:3)
我不知道除了先安排前64个通知,然后在启动,后台处理和启动通知时,检查通知数是否少于64,如果是,然后重新安排通知。
我不明白为什么Apple实施的通知是如此蹩脚。如果有人能想出更好的方式让我知道。
答案 4 :(得分:0)
我发现这个Swift库正在做我们正在寻找的几乎相同的东西。我将尝试这一点并确认其工作原理:
答案 5 :(得分:0)
应用只能有有限数量的预定通知;系统保持最快的64个通知(自动重新安排的通知计为单个通知)并丢弃其余通知。