Можно ли определить момент, когда удаленное уведомление было добавлено в центр уведомлений? - PullRequest
0 голосов
/ 30 января 2019

В протоколе UNUserNotificationCenterDelegate есть два метода, связанных с доставкой уведомлений.Но оба, кажется, не удовлетворяют моим потребностям.

-(void)userNotificationCenter:(UNUserNotificationCenter *)center
  willPresentNotification:(UNNotification *)notification
    withCompletionHandler:(void (^)(UNNotificationPresentationOptions options))completionHandler

называется ДО доставки уведомления.Если вы попросите центр уведомлений предоставить вам все доставленные уведомления, новое будет отсутствовать.

- (void)userNotificationCenter:(UNUserNotificationCenter *)center
didReceiveNotificationResponse:(UNNotificationResponse *)response
     withCompletionHandler:(void(^)(void))completionHandler

вызывается только в том случае, если пользователь предоставляет какой-либо ответ на уведомление.Есть также старый добрый - (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo, но он устарел.

Так можно ли получать уведомления сразу после того, как Центр уведомлений добавил уведомление?

Ответы [ 2 ]

0 голосов
/ 31 января 2019

Вы можете добавить расширение содержимого уведомлений , это расширение будет вызываться при получении push-уведомлений, с целью позволить расширению расширить уведомление перед его представлением пользователю ( wwdcсеанс расширенных уведомлений ).

Таким образом, у вас есть возможность выполнить некоторый код при получении уведомления.Вам не нужно фактически изменять уведомление.

Обратите внимание, что код будет выполняться в контексте расширения приложения, поэтому вам может потребоваться дополнительная работа, если вы хотите выполнить что-то в приложении.

0 голосов
/ 30 января 2019

То, что вы хотите, это:

удалить уведомление из центра уведомлений.но его там нет

Если вы пытаетесь подавить или предотвратить представление push-уведомлений.Тогда это невозможно, начиная с iOS 11.0. Почему Apple об этом не упомянула.

Однако, если вы хотите просто удалить push, UNUserNotificationCenter предлагает следующие методы:

// Notification requests that are waiting for their trigger to fire
open func getPendingNotificationRequests(completionHandler: @escaping ([UNNotificationRequest]) -> Void)

open func removePendingNotificationRequests(withIdentifiers identifiers: [String])

open func removeAllPendingNotificationRequests()


// Notifications that have been delivered and remain in Notification Center. Notifications triggered by location cannot be retrieved, but can be removed.
open func getDeliveredNotifications(completionHandler: @escaping ([UNNotification]) -> Void)

open func removeDeliveredNotifications(withIdentifiers identifiers: [String])

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