我开发了一款很大程度上取决于本地通知的应用。自升级到ios 11.2.1以来,行为发生了变化而我的代码没有任何变化。
在之前的版本中,直到11.2.0,如果来自通知中心的同一个应用程序有多个通知,其中一个已被回答,则通知中心内的所有其他通知仍然存在(除非通过应用程序内的代码清除)。
升级到11.2.1后,每次收到通知时,所有其他通知也会被删除。我在模拟器和iPhone 6上的多个设备上进行了测试。这也适用于其他应用,如消息或线路,因此,它不仅限于本地通知。
这是ios 11.2.1中的错误还是预期的通知新行为? 在任何一种情况下,有没有办法让通知以与以前相同的方式工作?
以下是处理答案的相关代码
- (void)removeNotificationWithIdentifier:(NSString *)identifier {
NSMutableDictionary *notifications = [self getAllNotifications];
NSMutableDictionary *categories = [self getAllCategories];
UNNotificationContent *content = [notifications objectForKey:identifier];
NSString *category = [content.userInfo objectForKey:@"category"];
[notifications removeObjectForKey:identifier];
UNUserNotificationCenter *center = [UNUserNotificationCenter currentNotificationCenter];
[center removePendingNotificationRequestsWithIdentifiers:[NSArray arrayWithObjects:identifier, nil]];
[center removeDeliveredNotificationsWithIdentifiers:[NSArray arrayWithObjects:identifier, nil]];
if (category != nil) {
[categories removeObjectForKey:category];
}
[self saveAllNotifications:notifications];
[self saveAllCategories:categories];
}