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

4ma*_*oud 3 xcode objective-c ios uilocalnotification

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

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

任何想法将非常感激

Edu*_*Edu 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++;
        }

}
Run Code Online (Sandbox Code Playgroud)

如果任何类型的计数为零,则应用程序会安排更多通知.

最后,如果显示通知,例如,每天在同一时间您可以使用repeatInterval属性但是您不能创建自己的重复间隔,您只能使用中定义的重复间隔NSCalendarUnit.

希望能帮助到你.