Подменить входящий пуш через X секунд
Нужно каким-то способом отловить получение пуш-уведомления и подменить его содержимое. Затем, если пользователь не триггерил ничего из этого пуша какое-то время, то необходимо подменить пуш еще раз. Как это можно реализовать?
Зачем это нужно? В приложении нужно реализовать некоторый функционал, связанный с входящими звонками, и к сожалению отправляющая сторона реализовала только отправку простых пуш-уведомления по факту звонка и не посылает каких-либо пушей еще. Смысл такой: если пользователь не трогал пуш X секунд, то показать ему, что у него есть пропущенный звонок.
Я знаю про Notification Service Extension и возможность отловить пуш там. И мне бы в принципе подошел этот вариант, если бы была возможность через X секунд подменить пришедшее уведомление еще раз, но contentHandler можно вызвать лишь единожды, при втором вызове он ничего не подменяет. Создать уведомление через UNUserNotificationCenter.current().add тоже не дает - выдает ошибку, если вызывать contentHandler и неважно до это сделать или после. Если же не вызывать contentHandler, то уведомление можно подменить, если создать его с тем же identifier, однако через какое-то время система подменяет мой пуш оригинальным контентом (не срабатывает даже serviceExtensionTimeWillExpire). Также отсюда вытекает проблема, что если пользователь скрыл пуш своим действием (не свайпом), то пуш покажется вновь, что мне не нужно.