Objective c 每天在不同时间发出本地火灾通知

Objective c 每天在不同时间发出本地火灾通知,objective-c,ios,xcode,uilocalnotification,Objective C,Ios,Xcode,Uilocalnotification,我正在开发一个项目,每天在不同的时间从预定义的数据库通知用户,准确地说是每天五次 我的问题是如何安排所有这些时间,5次*365days=1825fire dates!!有可能把它们都安排好吗 如果您有任何想法,我们将不胜感激。根据苹果的文档: 一个应用程序只能有有限数量的预定通知;系统保留最快发出的64个通知(自动重新安排的通知视为一个通知),并丢弃其余的通知 我通过设置通知的“队列”解决了这个问题。例如,在我的应用程序中,我有三种不同类型的通知,比如A、B和C 我将A、B和C通知安排在下个月,

我正在开发一个项目,每天在不同的时间从预定义的数据库通知用户,准确地说是每天五次

我的问题是如何安排所有这些时间,
5次*365days=1825
fire dates!!有可能把它们都安排好吗


如果您有任何想法,我们将不胜感激。

根据苹果的文档:

一个应用程序只能有有限数量的预定通知;系统保留最快发出的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
中定义的重复间隔


希望对您有所帮助。

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

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

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

3) 你也不必担心隐私问题

尽管UILocalNotification和EventKit本身都很强大

注意:用于EventKit framework的ios 6或更高版本

这取决于你的需要来选择哪一个

下面的链接将为您提供良好的启动

下面的图片将让你一窥evenkit是什么


如果适合您的需要,请使用eventkit。

您将如何在后台处理本地通知?您有什么想法吗?是的,我使用过类似的方法--创建一个队列或待处理通知的有序列表,并在应用程序打开时浏览它,等等(重新)按日期顺序安排通知。事实上,在这个方案中,你只需要一个未完成的通知,因为它的“意义”被记录在你的队列中(尽管安排几个通知是很好的,这样“通知到达”和徽章号码的内容在应用程序不运行时或多或少会符合预期)。@Edu这对我帮助很大,我想到了这一点,但不知道如何实现它,但由于我将安排一整年,每次用户在确保没有未决通知后关闭应用程序时,我都会安排一组通知<64,这些1825将在明年的同一时间重复,因此如果我将repeatInterval属性设置为kCFCalendarUnitYear,明年我不必再安排任何通知,对吗?是的,我发现NSCalendarUnit有点棘手,所以我建议您设置一些通知,自己看看它们是如何工作的。更改iPhone的日期有助于我了解如何使用repeatingInterval,因此我鼓励您这样做。还有一点很重要,即带有repeatingInterval的通知被视为一个通知。:)我不懂这个密码<代码>carNotificationsDic未使用,并且未定义
scheduledNotifications
。为什么您要将A、B、C类型分开,而不是按到期日进行排序?很抱歉,
carNotificationsDic
不是必需的,它是我代码的一部分,但在这里不是必需的
scheduledNotifications
UIApplication
的属性。