Можем ли мы избежать отображения push-уведомлений
Существует сценарий, в котором мне нужно проверить, должен ли пользователь получать push-уведомления в зависимости от его местоположения. Я знаю что UNNotificationServiceExtension
помогает нам перехватить уведомление и вносит вклад в создание push-контента. Но возможно ли для этого класса или для чего-либо еще, что мы не отображаем push-уведомление, проверяя местоположение пользователя?
Это не значит, что я хочу делать это каждый раз. Но только когда мое условие не выполнено. В содержании уведомления я получаю последнее отслеживаемое местоположение пользователя, которое я буду использовать для сравнения с текущим местоположением пользователя.
Я прошел через это, но не получил убедительного ответа.
Примечание: я не ищу решение для тихого push-уведомления.
1 ответ
Используя UNUserNotificationCenter, вы можете отменить одно уведомление по идентификатору.
UNUserNotificationCenter.current().removePendingNotificationRequests(withIdentifiers: [SomeID])
Вам нужно будет реализовать UNUserNotificationCenterDelegate и внедрить userNotificationCenter(_:willPresent)
Что-то вроде:
func userNotificationCenter(_ center: UNUserNotificationCenter, willPresent notification: UNNotification, withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void) {
let identifier = notification.request.identifier
let content = notification.request.content
//your logic here
}