每天在不同时间发出本地通知
我正在开发一个项目,每天在不同时间通知用户,每天从预定义的数据库通知用户,每天准确地进行五次。我的问题是如何安排所有这些时间,5次* 365天= 1825年的火日期!有可能安排他们全部?每天在不同时间发出本地通知
任何想法将是非常赞赏
根据苹果文档:
的应用程序只能有计划通知的数量有限;该系统保持最快发射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
定义的重复间隔。
希望它有帮助。
是的,我使用过类似的东西 - 创建队列或待定通知的有序列表,并在应用程序打开时通过它,等等。(重新)按日期顺序安排通知。事实上,通过这个方案,你只需要一个未完成的通知,因为它的“含义”被记录在你的队列中(尽管安排好几个以便“通知到达”并且徽章号码或多或少符合预期该应用程序没有运行)。 – 2012-04-27 01:13:47
@Edu这帮了我很大的忙,但是我想到了但是不知道如何实现它,但是因为每次用户将应用程序关闭后,我都会计划一整年安排一组通知确保没有未完成的通知,1825年将重复明年的同一时间,所以如果我将repeatInterval属性设置为kCFCalendarUnitYear,我不必在明年安排更多通知,对吗? – 4mahmoud 2012-04-27 10:29:03
是的,我发现NSCalendarUnit有点棘手,所以我建议你设置一些通知,并自己看看它们是如何工作的。更改我的iPhone日期可以帮助我了解如何使用repeatingInterval,因此我鼓励您这样做。提及具有repeatInterval的通知计为ONE通知也很重要。 :) – Edu 2012-04-28 00:17:24
您可以尝试Eventkit使用该框架可以添加提醒,事件和警报。
1)它没有像UILocalNotification这样的通知限制数量。
2)使用事件工具包,您可以添加基于时间以及基于位置的事件。
3)你也不需要担心隐私。
虽然UILocalNotification和EventKit都在它自己的权利强大..
需要注意的是:IOS 6或以上EventKit框架
这是您高达选择哪一个,这取决于你的需求。
以下链接会给你很好的领先地位
下面的图片会给你一个很好的偷看什么evenkit是。
使用eventkit它是否适合您的需要。
你如何处理本地通知在后台你有什么想法? – ilhnctn 2012-04-26 22:10:10