点击一个时,将从通知中心清除所有已发送的计划通知

时间:2018-01-30 09:16:50

标签: ios objective-c uilocalnotification unusernotificationcenter unnotificationrequest

我为用户安排了多个本地通知。所有这些都在指定的时间内交付。但是,当我尝试从通知中心打开其中任何一个时,所有这些都被清除了。

在正确的情况下,我不希望所有这些都从通知中心清除,只有那些被点击打开的通知中心。

此外,我尝试在AppDelegate.m下面评论下面的代码,但问题仍然存在。 NSDateComponents *components = [SSUtility hoursMinuteAndSectionsForDate:date]; NSInteger hour = [components hour]; NSInteger minute = [components minute]; NSLog(@"Hour %ld Min %ld ", hour,minute); UNCalendarNotificationTrigger *trigger = [UNCalendarNotificationTrigger triggerWithDateMatchingComponents:components repeats:YES]; /* Set notification */ UNMutableNotificationContent *content = [UNMutableNotificationContent new]; content.body = body; // content.categoryIdentifier=NSNotificationC; content.sound = [UNNotificationSound defaultSound]; content.userInfo = userInfo; UNNotificationRequest *request = [UNNotificationRequest requestWithIdentifier:identifier content:content trigger:trigger]; UNUserNotificationCenter *center = [UNUserNotificationCenter currentNotificationCenter]; [center addNotificationRequest:request withCompletionHandler:^(NSError * _Nullable error) { if (error != nil) { SSLOG(@"Something went wrong: %@",error); } }];

任何人都可以告诉我这里可能存在什么问题,因为我的预定通知是从通知中心清除的,即使我正在点击只打开其中一个?

以下是我用于安排本地通知的代码 -

Parent

2 个答案:

答案 0 :(得分:0)

所以我不相信这是默认行为,所以我找到了:

  • 如果您使用UNCalendarNotificationTrigger,那么系统会删除所有已发送的提醒
  • 如果您使用UNTimeIntervalNotificationTrigger,则会在通知中心保留已发送的提醒

因此请尝试使用UNTimeIntervalNotificationTrigger代替UNCalendarNotificationTrigger

NSTimeInterval timeInterval = [fireDate timeIntervalSinceDate:[NSDate date]];
UNTimeIntervalNotificationTrigger *trigger = [UNTimeIntervalNotificationTrigger triggerWithTimeInterval:timeInterval repeats:NO];

答案 1 :(得分:0)

对于我来说,向content.body添加一些文字可以解决问题:

content.body = 'Any text'