只允许本地通知出现一次

时间:2012-11-02 23:27:35

标签: iphone objective-c ios notifications uilocalnotification

我有一个很大的问题!我的问题是,我在我的委托中实现了一个本地通知代码。我在didEnterBackround方法中输入了这段代码。但是,我为每个didEnterBackround获得了localnotifi。如果最新消息消失,是否有可能只启动新通知?就像我有一个localnotifi,在5天后发射。当我打开和关闭应用程序5次并等待5天后,我得到5个本地通知。是否有可能让应用程序只生成一个被激活的东西,然后出现一个新的获得startet?!

我的代码:

NSCalendar  *calender = [NSCalendar autoupdatingCurrentCalendar];
NSDate *currentDate = [NSDate date];

NSDateComponents *dateComponents = [calender components:(NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit) fromDate:currentDate];

NSDateComponents *timeComponents = [calender components:(NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit) fromDate:currentDate];

NSDateComponents *temp = [[NSDateComponents alloc]init];

[temp setYear:[dateComponents year]];
[temp setMonth:[dateComponents month]];
[temp setDay:[dateComponents day]];
[temp setHour:[timeComponents hour]];
[temp setMinute:[timeComponents minute]];
[temp setSecond:[timeComponents second] +10];

NSDate *fireTime = [calender dateFromComponents:temp];


UILocalNotification *localN = [[UILocalNotification alloc]init];
localN.fireDate = fireTime;
localN.timeZone = [NSTimeZone defaultTimeZone];


localN.alertBody = @"BLA BLA BLA!";
localN.alertAction = @"GO BACK";


localN.applicationIconBadgeNumber = 1;


[[UIApplication sharedApplication] scheduleLocalNotification:localN];

1 个答案:

答案 0 :(得分:4)

您可以取消所有预定的通知:

[[UIApplication sharedApplication] cancelAllLocalNotifications];

如果您不想删除所有预定通知(可能还有其他预定的通知),请查看cancelLocalNotification:,它允许您只取消一个实例。