每天在不同时间发出本地通知

问题描述:

我正在开发一个项目,每天在不同时间通知用户,每天从预定义的数据库通知用户,每天准确地进行五次。我的问题是如何安排所有这些时间,5次* 365天= 1825年的火日期!有可能安排他们全部?每天在不同时间发出本地通知

任何想法将是非常赞赏

+0

你如何处理本地通知在后台你有什么想法? – ilhnctn 2012-04-26 22:10:10

根据苹果文档:

的应用程序只能有计划通知的数量有限;该系统保持最快发射64通知(与自动重新安排的通知计为一个单一的通知),并丢弃其余

我通过设置通知的“队列”解决了这个问题。例如,在我的应用程序中,我有三种不同类型的通知,我们只是说类型A,B和C.

我安排下个月的A,B和C通知,每当用户打开应用程序时,我检查了多少通知。例如,如果不再有A通知,则该应用会安排更多的A通知等等。

我如何实现这一目标?

每次我安排通知时,我都会使用userInfo属性。我用一个叫做type的键和一个值来设置字典。

在我的应用程序委托中,我检查所有待处理的通知并计算每种类型的剩余数量。代码如下所示:

NSArray *scheduledNotifications = [UIApplication scheduledLocalNotifications]; 

NSUInteger AType, BType, CType; 

for (UILocalNotification *notif in scheduledNotifications) { 
     //Classify notifications by type 
     NSUInteger notifType = [[notif.userInfo objectForKey:@"type"]integerValue]; 
     if (notifType == 0) { 
      AType++; 
     }else if(notifType == 1){ 
      BType++; 
     }else{ 
      CType++; 
     } 

} 

如果任何类型的计数为零,则应用程序会计划更多通知。

最后,如果通知是节目例如,在每天的同一时间,你可以使用repeatInterval财产你不能创建自己的重复间隔,你只能使用NSCalendarUnit定义的重复间隔。

希望它有帮助。

+0

是的,我使用过类似的东西 - 创建队列或待定通知的有序列表,并在应用程序打开时通过它,等等。(重新)按日期顺序安排通知。事实上,通过这个方案,你只需要一个未完成的通知,因为它的“含义”被记录在你的队列中(尽管安排好几个以便“通知到达”并且徽章号码或多或少符合预期该应用程序没有运行)。 – 2012-04-27 01:13:47

+0

@Edu这帮了我很大的忙,但是我想到了但是不知道如何实现它,但是因为每次用户将应用程序关闭后,我都会计划一整年安排一组通知确保没有未完成的通知,1825年将重复明年的同一时间,所以如果我将repeatInterval属性设置为kCFCalendarUnitYear,我不必在明年安排更多通知,对吗? – 4mahmoud 2012-04-27 10:29:03

+0

是的,我发现NSCalendarUnit有点棘手,所以我建议你设置一些通知,并自己看看它们是如何工作的。更改我的iPhone日期可以帮助我了解如何使用repeatingInterval,因此我鼓励您这样做。提及具有repeatInterval的通知计为ONE通知也很重要。 :) – Edu 2012-04-28 00:17:24

您可以尝试Eventkit使用该框架可以添加提醒,事件和警报。

1)它没有像UILocalNotification这样的通知限制数量。

2)使用事件工具包,您可以添加基于时间以及基于位置的事件。

3)你也不需要担心隐私。

虽然UILocalNotification和EventKit都在它自己的权利强大..

需要注意的是:IOS 6或以上EventKit框架

这是您高达选择哪一个,这取决于你的需求。

以下链接会给你很好的领先地位

Resource 1

Resource 2

下面的图片会给你一个很好的偷看什么evenkit是。

EventKit_image

使用eventkit它是否适合您的需要。