我有一个包含多个本地通知的应用程序。当我尝试清除所有传递的通知时,我调用此removeAllDeliveredNotifications
方法。它工作正常,直到ios 11.1
。在ios 11.2
及以上,它不能按预期工作。通知仍保留在通知中心。有人可以帮我解决这个问题。
提前致谢。
我有一个包含多个本地通知的应用程序。当我尝试清除所有传递的通知时,我调用此removeAllDeliveredNotifications
方法。它工作正常,直到ios 11.1
。在ios 11.2
及以上,它不能按预期工作。通知仍保留在通知中心。有人可以帮我解决这个问题。
提前致谢。
它仍然为我们工作。我刚刚在 iOS 11.2.2 上检查过。我正在使用removeDeliveredNotificationsWithIdentifiers:
inside getDeliveredNotificationsWithCompletionHandler:
,调用getDeliveredNotificationsWithCompletionHandler
主线程。
- (void)removePendingNotificationsForObjectID:(SJFObjectID *)objectID {
__weak __typeof(self) weakSelf = self;
[self.userNotificationCenter getDeliveredNotificationsWithCompletionHandler:^(NSArray<UNNotification *> *notifications) {
__strong __typeof(weakSelf) self = weakSelf;
NSMutableArray <NSString *> *identifiersToRemove = [@[] mutableCopy];
for (UNNotification *notification in notifications) {
SJFObjectID *objectIDFromNotification = [self.notificationToObjectIDMarshaller marshalNotification:notification];
if ([objectID isEqual:objectIDFromNotification]) {
[identifiersToRemove addObject:notification.request.identifier];
}
}
[self.userNotificationCenter removeDeliveredNotificationsWithIdentifiers:identifiersToRemove];
}];
}
虽然如果我正在调试完成处理程序,我会遇到奇怪的行为。如果暂停时间过长(无论这意味着什么),完成处理程序将无法完成(即使在继续执行进程时),从而导致应用程序无响应。也许完成处理程序被终止。
这似乎是 iOS 11.3 中修复的一个错误。
您是否尝试过使用此方法:
removeDeliveredNotifications(withIdentifiers:)
您将需要传递一个包含您需要删除的所有通知标识符的数组。