Цель- C UNUserNotificationCenter проверить, установлено ли уведомление - PullRequest
0 голосов
/ 28 февраля 2020

Я использую 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?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...