3

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

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

任何想法将不胜感激

4

2 回答 2

13

根据苹果文档:

一个应用程序只能有有限数量的预定通知;系统保持最快触发的 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-27T00:46:43.067 回答
1

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

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

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

3)您也不必担心隐私。

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

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

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

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

资源 1

资源 2

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

EventKit_image

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

于 2013-09-28T05:53:02.073 回答