Я использую UNUserNotificationCenter
для установки локальных уведомлений.
Теперь мне нужно проверить, установлено ли указанное c уведомление (для установки значка в списке).
Я написал функцию stati c, которая возвращает YES
или NO
. Но единственный способ проверить наличие определенного уведомления c, который я нашел, - это через getPendingNotificationRequestsWithCompletionHandler
, который имеет обратный вызов, который возвращает массив с уведомлениями.
Но поскольку getPendingNotificationRequestsWithCompletionHandler
работает асинхронно, я не могу установите возвращаемое значение в моей функции stati c, потому что функция возвращается до завершения обратного вызова.
Как мне это сделать?
Приведенный ниже код не работает по причинам упоминалось выше.
+(BOOL)notificationForIdIsSet:(NSString *)notificationID{
__block BOOL retVal = NO;
UNUserNotificationCenter *center = [UNUserNotificationCenter currentNotificationCenter];
[center getPendingNotificationRequestsWithCompletionHandler:^(NSArray<UNNotificationRequest *> * _Nonnull requests) {
for (UNNotificationRequest *rq in requests){
if ([rq.identifier isEqualToString: notificationID]){
retVal = YES;
}
}
}];
return retVal;
}
Почему, черт возьми, нет такой функции, как getNotificationWithId
?