计划本地通知的数量

我正在做一个iPhone应用程序,我已经实施了本地通知的概念,提醒用户吃药。

但在iOS中,我们无法一次安排超过64个通知。 但是我在数据库中有许多date时间条目。 我怎么能安排超过64个通知?

我使用本地通知创build了应用程序,在这种情况下,用户在给定的时间间隔内(例如8:00-20:00)每20/40/60分钟通知一次。 解决scheme是在整天内生成多达64个通知,并将UILocalNotification的repeatInterval设置为NSCalendarUnitDay。 当然,如果你需要使用更复杂的通知模式,这是不是要走的路。

另外值得一提的是,自iOS7以来,由于客户要求,我不得不在后台应用程序刷新中重新安排通知。

正如你已经知道,你可以安排最多64个通知每个应用程序。 如果添加更多,系统将保持最快的64个通知,并丢弃另一个。

确保所有通知得到预定的一种方法是首先安排前64个通知,然后定期(可能在每次启动应用程序或每次通知触发时)检查计划的通知数量,如果有less于64个通知,可以说n个通知,然后安排下一个(64-n)通知。

int n = [[[UIApplication sharedApplication] scheduledLocalNotifications] count]; int x = 64 - n; // Schedule the next 'x' notifications 

对此的基本解决scheme是使用repeatInterval以特定间隔发生通知。 这将减less冗余通知的数量。 但是,如果数字超过64,那么你可以使用一个策略来使用userInfo字典,并传递下一个通知的时间和消息,并在- (void) application:(UIApplication *)application didReceiveLocalNotification: (UILocalNotification *)notification方法被调用。 这可能有点棘手,所以你必须小心,在userInfo字典中传递正确的数据,并准确地设置通知。 我希望这有帮助。

我不知道除了首先安排前64个通知,然后在启动,后台和启动通知时,检查通知的数量是否less于64,如果它是然后重新安排您的通知。

我不明白为什么苹果公司的通知实施是跛脚的。 如果有人可以更好的方式让我知道。

我发现这个Swift库正在做我们正在寻找的几乎相同的东西。 我要试试这个,并确认它是如何工作的:

https://github.com/ahmedab​​adie/ABNScheduler

苹果医生说:

一个应用程序只能有有限数量的预定通知; 系统保持最快的64个通知(自动重新安排的通知作为单个通知计数),并丢弃剩下的通知。