每天在不同时间点火本地通知

时间:2012-04-26 21:09:48

标签: objective-c ios xcode uilocalnotification

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

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

任何想法都会非常感激

2 个答案:

答案 0 :(得分:13)

根据Apple文档:

  

应用程序只能有有限数量的预定通知;系统保持最快的64次通知(自动重新安排的通知计为单个通知)并丢弃其余的通知

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

我计划下个月的A,B和C通知,每次用户打开应用程序时,我都会检查剩下多少通知。例如,如果不再是A通知,则应用程序会安排更多A通知,依此类推。

我是如何实现这一目标的?

每次我安排通知时,都会使用userInfo属性。我使用名为type的密钥和值设置字典。

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

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中定义的重复间隔。

希望它有所帮助。

答案 1 :(得分:1)

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

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

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

3)您也不必担心隐私。

虽然UILocalNotification和EventKit本身都很强大。

请注意:EventKit框架的ios 6或更高版本

根据您的需要选择哪一个。

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

Resource 1

Resource 2

下面的图片将为您提供一个很好的查看evenkit的内容。

EventKit_image

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

相关问题