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

Posted

技术标签:

【中文标题】每天在不同时间触发本地通知【英文标题】:Fire local notification every day on different times 【发布时间】:2012-04-26 21:09:47 【问题描述】:

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

我的问题是如何安排这些时间,5times*365days = 1825 开火日期!是否可以全部安排?

任何想法将不胜感激

【问题讨论】:

你将如何在后台处理本地通知你知道吗? 【参考方案1】:

根据 Apple 文档:

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

希望对你有帮助。

【讨论】:

是的,我使用过类似的东西——创建待处理通知的队列或有序列表,并在应用程序打开时遍历它,等等。(重新)按日期顺序安排通知。事实上,使用这种方案,您只需要一个未完成的通知,因为它的“意义”记录在您的队列中(尽管最好安排几个,以便“通知到达”和徽章编号的内容或多或少符合预期应用程序没有运行)。 @Edu 这对我帮助很大,我想到了但不知道如何实现它,但是因为我要通过每次安排一组通知来安排一整年 是的,我发现 NSCalendarUnit 有点棘手,所以我建议你设置一些通知,然后自己看看它们是如何工作的。更改 iPhone 的日期有助于我了解如何使用 repeatingInterval,因此我鼓励您这样做。值得一提的是,带有 repeatingInterval 的通知算作 ONE 通知。 :) 我看不懂这段代码。 carNotificationsDic 未使用,scheduledNotifications 未定义。为什么要分开 A、B、C 类型而不是按到期日对它们进行排序? 抱歉,carNotificationsDic 不是必需的,它是我代码的一部分,但在这里不是必需的。 scheduledNotificationsUIApplication 的属性。【参考方案2】:

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

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

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

3)您也不必担心隐私问题。

虽然 UILocalNotification 和 EventKit 本身就很强大..

注意:ios 6 或更高版本适用于 EventKit 框架

您可以根据自己的需要选择哪一种。

以下链接将为您提供良好的开端

Resource 1

Resource 2.

下面的图片将让您很好地了解 evenkit 是什么。

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

【讨论】:

以上是关于每天在不同时间触发本地通知的主要内容,如果未能解决你的问题,请参考以下文章

如何在swift 3中每天在特定时间触发本地通知

安排本地通知从明天开始每天重复

如何每天在不同时间重复本地通知

每天 5 条本地通知

本地通知在计划外的时间多次触发

在特定的时间段内每天以每小时间隔运行本地通知