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
的属性。