Хороший и объемный туториал, который объясняет различие между
Notification Service Extension и Notification Content Extension. Есть даже демо приложение, где можно понять, как связать их через категорию уведомления и payload, чтобы реализовать rich notifications (предзагрузка картинок и кастомный UI). Основные практические выводы:
➡️
category обязательно должен лежать внутри aps➡️ для запуска
Service Extension нужен флаг “mutable‑content”: 1➡️
attachments надо сохранять как локальные файлы и добавлять в UNMutableNotificationContent➡️ время работы
Service Extension ограничено (обработать дедлайн в serviceExtensionTimeWillExpire())В Демо‑проекте предусмотрены две категории:
➡️
pushWithImageCategory - скачиваем small и big, добавляем UNNotificationAttachment; Content Extension явно ищет attachment по идентификатору “big-image” и подстраивает preferredContentSize➡️
eventCategory (без media; Content Extension читает верхнеуровневые поля eventDate/eventLocation и переключает лейаут)Есть еще пару практических советы:
➡️ регистрировать категории в основном приложении
➡️ правильно настроить
UNNotificationExtensionCategory в Info.plist (строка → массив для нескольких категорий)➡️ при кодовом UI указывать
NSExtensionPrincipalClass ➡️ не забывать о согласовании
Minimum Deployment для таргетов расширений
