Найти в Дзене
Даниил Зазулин

Swift. User Notifications in Suspend

Недавно была поставлена задача передавать данные по сети после пуш уведомления, когда приложение убито. Причем когда "не убито" запрос должен отправляться с основного модуля с данными, которые включают информацию по авторизации. Раньше мне не приходилось сталкиваться с этим, поэтому зафиксирую, чтобы не забыть.
1) метод application(_:didReceiveRemoteNotification:) не срабатывает, когда приложение убито юзером или не было запущено после перезагрузки устройства.

https://developer.apple.com/documentation/uikit/uiapplicationdelegate/1623013-application
https://developer.apple.com/documentation/uikit/uiapplicationdelegate/1623013-application

2) обрабатывать такие пуши нужны в NotificationService. Подробно описано в статье.
https://www.raywenderlich.com/8277640-push-notifications-tutorial-for-ios-rich-push-notifications
3) для того чтобы NotificationService начал обрабатывает пуши, которые удовлетворяют двум условиям.

https://developer.apple.com/documentation/usernotifications/modifying_content_in_newly_delivered_notifications
https://developer.apple.com/documentation/usernotifications/modifying_content_in_newly_delivered_notifications

4) чтобы брать данные из UserDefaults понадобилось создать appGroup и добавить туда приложение и notificationService, так как notificationService не может видеть напрямую данные из основного приложения.

https://developer.apple.com/documentation/notificationcenter/building_a_simple_widget_for_the_today_view
https://developer.apple.com/documentation/notificationcenter/building_a_simple_widget_for_the_today_view

5) чтобы notificationCenter не перехватывал события при включенном состоянии и вообще не отображался пуш, нужно:

https://stackoverflow.com/questions/43499834/is-it-possible-to-prevent-a-remote-notification-from-being-displayed
https://stackoverflow.com/questions/43499834/is-it-possible-to-prevent-a-remote-notification-from-being-displayed

Вроде все знания которые мне понадобились.