Iphone 如何检查过期的UILocalNotification?

Iphone 如何检查过期的UILocalNotification?,iphone,xcode,uilocalnotification,Iphone,Xcode,Uilocalnotification,您好,有人能解释一下如何检查过期的UILocalNotifications并取消通知吗?您能详细介绍一下过期的通知吗???通过给出时间间隔范围,您可以获得到期时间(可能是当前时间)之前的通知。 您完全可以使用取消通知 -(作废)取消通知:(UILocalNotification*)通知您能详细说明一下过期的通知吗???通过给出时间间隔范围,您可以获得到期时间(可能是当前时间)之前的通知。 您完全可以使用取消通知 -(void)cancelLocalNotification:(UILocalNot

您好,有人能解释一下如何检查过期的UILocalNotifications并取消通知吗?

您能详细介绍一下过期的通知吗???通过给出时间间隔范围,您可以获得到期时间(可能是当前时间)之前的通知。 您完全可以使用取消通知


-(作废)取消通知:(UILocalNotification*)通知

您能详细说明一下过期的通知吗???通过给出时间间隔范围,您可以获得到期时间(可能是当前时间)之前的通知。 您完全可以使用取消通知

-(void)cancelLocalNotification:(UILocalNotification*)通知

“您不能取消过期的通知,因为它已过期/已被激发。”

安排通知时,如果fireDate为零或为过去日期,则通知将立即被触发。因此,只为将来的日期安排通知

在调用ApplicationIdentinterBackground委托时,所有通知(您称之为“过期通知”)都将被触发

一旦触发通知,如果该通知不是定期通知,则会自动将其删除

取消某一日期的本地通知

如果到达最后日期,请使用以下代码取消通知。从
didReceiveLocalNotificationOn:
方法或
didFinishLaunchingWithOptions:
方法调用此方法

- (void)stop:(UILocalNotification *)localNotif ifLastDate:(NSDate *)lastDate {

    NSTimeInterval ti = 24*60*60; // One day
    NSDate *expiryDate = [lastDate dateByAddingTimeInterval:ti];
    NSDate *nextFireDate = [localNotif.fireDate dateByAddingTimeInterval:ti];

    if ([nextFireDate compare:expiryDate] == NSOrderedDescending) {

        [[UIApplication sharedApplication] cancelLocalNotification:localNotif];
    }
}
didFinishLaunchingWithOptions:method

didReceiveLocalNotification:方法

请注意,您只能在应用程序运行时取消本地通知。如果应用未运行,则无法取消通知。只有在
lastDate
上触发通知后,通过点击操作按钮打开应用程序,上述代码才会取消通知。如果没有,则在应用程序打开时,通过点击在最后日期之后发出的通知上的操作按钮,通知将被取消。

您不能取消过期的通知,因为它已经过期/发出。

安排通知时,如果fireDate为零或为过去日期,则通知将立即被触发。因此,只为将来的日期安排通知

在调用ApplicationIdentinterBackground委托时,所有通知(您称之为“过期通知”)都将被触发

一旦触发通知,如果该通知不是定期通知,则会自动将其删除

取消某一日期的本地通知

如果到达最后日期,请使用以下代码取消通知。从
didReceiveLocalNotificationOn:
方法或
didFinishLaunchingWithOptions:
方法调用此方法

- (void)stop:(UILocalNotification *)localNotif ifLastDate:(NSDate *)lastDate {

    NSTimeInterval ti = 24*60*60; // One day
    NSDate *expiryDate = [lastDate dateByAddingTimeInterval:ti];
    NSDate *nextFireDate = [localNotif.fireDate dateByAddingTimeInterval:ti];

    if ([nextFireDate compare:expiryDate] == NSOrderedDescending) {

        [[UIApplication sharedApplication] cancelLocalNotification:localNotif];
    }
}
didFinishLaunchingWithOptions:method

didReceiveLocalNotification:方法


请注意,您只能在应用程序运行时取消本地通知。如果应用未运行,则无法取消通知。只有在
lastDate
上触发通知后,通过点击操作按钮打开应用程序,上述代码才会取消通知。如果没有,则在应用程序打开时,通过点击上次日期后发出的通知上的操作按钮,通知将被取消。

在下面提到的委托方法中,您可以检查日期

- (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notif {
    if(notif.fireDate  Compare:[NSDate date]==NSOrderAscending)
    NSLog(@"Expired");
}

在下面提到的委托方法中,您可以检查日期

- (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notif {
    if(notif.fireDate  Compare:[NSDate date]==NSOrderAscending)
    NSLog(@"Expired");
}

如果您的UILocalNotifications增加了应用程序图标徽章编号(即应用程序图标右上角红色圆圈中的编号),那么有一种简单得可笑的方法来检查未确认的UILocalNotifications:只需检查当前的
ApplicationBadgeNumber
是什么:

- (void)applicationWillEnterForeground:(UIApplication *)application
{        
    int unacknowledgedNotifs = application.applicationIconBadgeNumber;
    NSLog(@"I got %d unacknowledged notifications", unacknowledgedNotifs);
    //do something about it...

    //You might want to reset the count afterwards:
    [[UIApplication sharedApplication] setApplicationIconBadgeNumber:0];

}

如果您的UILocalNotifications增加了应用程序图标徽章编号(即应用程序图标右上角红色圆圈中的编号),那么有一种简单得可笑的方法来检查未确认的UILocalNotifications:只需检查当前的
ApplicationBadgeNumber
是什么:

- (void)applicationWillEnterForeground:(UIApplication *)application
{        
    int unacknowledgedNotifs = application.applicationIconBadgeNumber;
    NSLog(@"I got %d unacknowledged notifications", unacknowledgedNotifs);
    //do something about it...

    //You might want to reset the count afterwards:
    [[UIApplication sharedApplication] setApplicationIconBadgeNumber:0];

}

您想在计划通知或打开应用程序时执行此操作?我想在ApplicationIdentinterBackground功能中执行Cancelin您尝试执行的操作似乎没有意义。请参阅下面我的更新答案。基本上,在我的应用程序中,我有开始日期和结束日期b/w这些日期,我需要显示通知,在结束日期之后,我需要取消该通知。请您提供开始日期和结束日期的任何教程。因此,您每天或在2011年10月1日至2011年10月14日期间发出通知。如果当前日期为2011年10月14日,那么您想在今天发出通知后取消通知?您想在安排通知或打开应用程序时执行此操作?我想在ApplicationIdentinterBackground功能中执行Cancelin您尝试执行的操作似乎毫无意义。请参阅下面我的更新答案。基本上,在我的应用程序中,我有开始日期和结束日期b/w这些日期,我需要显示通知,在结束日期之后,我需要取消该通知。请您提供开始日期和结束日期的任何教程。因此,您每天或在2011年10月1日至2011年10月14日期间发出通知。如果当前日期是2011年10月14日,那么您想在今天发出通知后取消通知吗?我认为为此,应用程序必须持续运行,但我不想继续运行我的应用程序。我认为为此,应用程序必须持续运行,但我不想继续运行我的应用程序,从2011年10月1日到2011年10月14日,您每天或每隔一段时间都会收到火灾通知。如果当前日期为2011年10月14日,那么您想在今天发出通知后取消通知?您好,您能解释一下这个概念吗