Rich Notification: какво е, медийно съдържание и създаване на известия

Автор: IT Sectr Публикувано: 2026-03-20 Време за четене: 8 мин

Rich Notification е разширен формат на iOS push известия, който включва медийни приложения, интерактивни бутони и персонализирани интерфейси за подобряване на потребителското изживяване. За разлика от стандартните текстови известия, Rich Notification може да показва изображения, видео и аудио директно в банера или на заключения екран. Според Apple Developer Documentation, 2026, UNNotificationAttachment поддържа до 10 файла в едно известие и автоматично ги мащабира за оптимално показване на всички устройства.

Основни точки

  • Медийни приложения — Rich Notification поддържа изображения (JPEG, PNG, GIF), видео (MP4, MOV до 30 секунди) и аудио (MP3, AAC, WAV) чрез UNNotificationAttachment.
  • Интерактивност — бутоните и текстовият вход се добавят чрез UNNotificationAction и UNTextInputNotificationAction, свързани с категории известия.
  • Service Extension — задължителен компонент за изтегляне на медия: той изтегля приложението от URL в payload и го добавя към съдържанието.
  • Content Extension — създава напълно персонализиран интерфейс на известие с произволен UI, анимации и обработка на жестове.
  • Ограничения — максимален размер на приложение 10 MB, ограничение на паметта на разширението 50 MB, време за обработка до 30 секунди.

Какво е Rich Notification

Rich Notification е iOS push известие, което съдържа не само текст, но и медийни приложения, интерактивни елементи и персонализиран интерфейс. Терминът „rich“ (богат) отразява възможността за включване на изображения, видео, аудио, бутони за действия и текстов вход в известието, превръщайки простото предупреждение в пълноценен интерактивен елемент.

Еволюция на известията в iOS

Apple въведе поддръжка за Rich Notification в iOS 10 заедно с рамката UserNotifications. Преди това push известията можеха да съдържат само текст, звук и badge. iOS 10 представи UNNotificationServiceExtension и UNNotificationContentExtension, които отвориха възможността за модификация на съдържанието и създаване на персонализирани интерфейси. В по-късните версии беше добавена поддръжка за SwiftUI в Content Extension, анимирани GIF и подобрено мащабиране на медия.

Предимства пред стандартните известия

Rich Notification значително повишава ангажираността на потребителите. Изследвания на Apple показват, че известията с изображения получават 30–40% повече взаимодействия в сравнение с текстовите. Изображение на продукт, преглед на видео или бутон за бърз отговор позволяват на потребителя да вземе решение директно от известието, без да отваря приложението. Това съкращава пътя до целевото действие и подобрява потребителското изживяване.

Видове медийни приложения и техните формати

UNNotificationAttachment поддържа три категории медия: изображения, видео и аудио. Всеки тип има свои ограничения по отношение на формат, размер и продължителност. Системата автоматично мащабира изображенията до размера на известието и ограничава продължителността на видео до 30 секунди за оптимизация на производителността.

Тип медияПоддържани форматиМаксимален размер
ИзображенияJPEG, PNG, GIF, TIFF10 MB на файл
ВидеоMPEG, MP4, MOV10 MB, до 30 секунди
АудиоMP3, AAC, WAV, CAF10 MB

Изображения и анимирани GIF

Изображенията се изрязват и мащабират автоматично от системата за показване в компактния и разширения изглед на известието. Анимираните GIF се поддържат от iOS 12 и се възпроизвеждат автоматично при преглед на известието. Препоръчителният размер на изображението е 1024x1024 пиксела, което осигурява ясно показване на всички устройства, включително iPad с голям екран.

Видео и аудио приложения

Видеото в Rich Notification се възпроизвежда без звук по подразбиране — потребителят може да включи звука чрез бутон в плейъра. Максималната продължителност на видео е 30 секунди, след което възпроизвеждането спира. Аудио приложенията могат да се използват за гласови съобщения или звукови прегледи и се възпроизвеждат при докосване на известието в разширен изглед.

Интерактивни бутони и действия

Интерактивни действия позволяват на потребителя да извършва операции директно от известието без да отваря приложението. Действията се регистрират чрез UNNotificationCategory и UNNotificationAction при стартиране на приложението. Всяко действие може да бъде на заден план (без отваряне на приложението) или на преден план (отваря приложението за завършване на операцията).

UNNotificationAction и UNTextInputNotificationAction

UNNotificationAction представлява бутон със заглавие и опционални модификатори, като requiresAuthentication (изисква Face ID/Touch ID) или destructive (маркиран в червено). UNTextInputNotificationAction разширява тази възможност, добавяйки поле за текстов вход — идеално за бърз отговор на съобщение или коментар. Действията се показват при продължително натискане на известието или плъзгане надолу.

Регистрация на категории и действия

Категориите известия свързват типа съдържание с набор от налични действия. Процесът на регистрация се изпълнява в AppDelegate при стартиране на приложението чрез UNUserNotificationCenter.current().setNotificationCategories. Категорията се посочва на сървъра в полето category на JSON payload, и системата автоматично прилага съответния набор от действия към известието.

Обработка на кликвания върху действия

Когато потребителят кликне бутон или изпрати текст, системата извиква делегата UNUserNotificationCenterDelegate с метода didReceive response. UNNotificationResponse съдържа идентификатора на действието и въведения текст (за UNTextInputNotificationAction). Въз основа на тази информация, приложението изпълнява съответната бизнес логика: изпраща съобщение, потвърждава действието или отваря определен екран.

Имплементация на Rich Notification в Swift

Нека разгледаме пълния цикъл на създаване на Rich Notification: от регистрация на категории в AppDelegate до обработка в Service Extension и показване. AppDelegate регистрира категорията с бутони, сървърът изпраща известието с URL на изображението, Service Extension изтегля медията и Content Extension показва персонализирания интерфейс с бутони.

swift
// AppDelegate — регистрация на категории и действия
func application(
    _ application: UIApplication,
    didFinishLaunchingWithOptions launchOptions:
    [UIApplication.LaunchOptionsKey: Any]?
) -> Bool {

    let replyAction = UNTextInputNotificationAction(
        identifier: "reply",
        title: "Отговор",
        options: [.authenticationRequired])

    let likeAction = UNNotificationAction(
        identifier: "like",
        title: "Харесва ми",
        options: [])

    let category = UNNotificationCategory(
        identifier: "social_post",
        actions: [replyAction, likeAction],
        intentIdentifiers: [],
        options: [])

    UNUserNotificationCenter.current()
        .setNotificationCategories([category])
    return true
}

Service Extension за изтегляне на изображение

След получаване на push известие с категория „social_post“ и URL на изображение в персонализирано поле, Service Extension се активира. Разширението изтегля изображението по мрежата, създава UNNotificationAttachment с уникален идентификатор и го добавя към съдържанието. Важно е да проверите размера на изтегления файл — ако надвишава 10 MB, прикаченият файл няма да бъде създаден и системата ще покаже известието без медия.

swift
class NotificationService: UNNotificationServiceExtension {

    override func didReceive(
        _ request: UNNotificationRequest,
        withContentHandler contentHandler:
        @escaping (UNNotificationContent) -> Void
    ) {
        let content = (request.content.mutableCopy()
            as! UNMutableNotificationContent)
        guard let urlString = content.userInfo["media-url"]
            as? String,
            let url = URL(string: urlString)
        else { contentHandler(request.content); return }

        URLSession.shared.downloadTask(with: url) {
            location, _, _ in
            guard let location = location else {
                contentHandler(content); return }
            let attachment = try! UNNotificationAttachment(
                identifier: "media", url: location,
                options: [UNNotificationAttachmentOptionsTypeHintKey:
                    "jpg"])
            content.attachments = [attachment]
            contentHandler(content)
        }.resume()
    }
}

Тестване на Rich Notification

За тестване на Rich Notification без сървър, използвайте iOS симулатора и изпращайте push през терминала с xcrun simctl push. В payload задължително посочете mutable-content: 1 за активиране на Service Extension и category за показване на действия. Командата изпраща push от JSON файл директно към избрания симулатор, позволявайки бърза итерация без настройка на сървърна инфраструктура.

Content Extension и персонализиран интерфейс

UNNotificationContentExtension позволява пълна замяна на стандартния интерфейс на известието с произволен UIKit или SwiftUI изглед. Разширението се активира, когато потребителят разшири известието (force touch или плъзгане надолу) и може да съдържа бутони, плъзгачи, анимации и други UI компоненти. Размерът на интерфейса се адаптира към съдържанието чрез Auto Layout.

Storyboard и SwiftUI в Content Extension

Content Extension се базира на storyboard с изглед, наследяващ UIViewController. SwiftUI View се интегрира чрез UIHostingController от iOS 16, позволявайки използването на съвременни подходи за изграждане на интерфейс. За обратна съвместимост с iOS 14–15 се препоръчва използването на UIKit с xib файлове. Интерфейсът получава модифицирано съдържание от Service Extension чрез UNNotificationContent.

Обработка на потребителски действия

Content Extension имплементира протокола UNNotificationContentExtension с метода didReceive response. UNNotificationResponse съдържа информация за натиснатия бутон или въведения текст. Разширението може да актуализира интерфейса без затваряне на известието или да извика completion handler за затварянето му. Това позволява създаването на сценарии за бързо взаимодействие, като например „харесвам“ с визуална обратна връзка директно в известието.

Препоръки за дизайн

Apple препоръчва Content Extension да бъде кратък и функционален, избягвайки излишни елементи. Максималната височина на разширеното известие е около 400 точки, след което съдържанието се скролва. Използвайте системни шрифтове и разстояния за еднородност с другите известия. Тествайте на различни размери екран, за да се уверите, че интерфейсът се показва правилно както на iPhone, така и на iPad.

Често задавани въпроси

Какъв е максималният размер на изображение в Rich Notification?

Максималният размер на едно медийно приложение е 10 MB. При превишаване на лимита, UNNotificationAttachment не се създава и известието се показва без медия. Препоръчва се оптимизиране на изображенията до 1–3 MB за бързо изтегляне в Service Extension.

Работи ли Rich Notification на всички модели iPhone?

Rich Notification се поддържа на всички устройства с iOS 10 и по-нов, включително iPhone 5s и по-нови. Content Extension с персонализиран UI е достъпен от iOS 12. SwiftUI в Content Extension — от iOS 16. На по-стари версии известието се показва в стандартна форма.

Може ли да се използва GIF в Rich Notification?

Да, анимираните GIF се поддържат от iOS 12. GIF се изтегля чрез UNNotificationAttachment като обикновено изображение и се възпроизвежда автоматично при преглед на известието. Размерът на GIF е ограничен до същите 10 MB като другите формати.

Колко бутона могат да се добавят към известие?

Максимум 4 действия на известие при регистрация на категория. При повече, системата показва първите 4 и игнорира останалите. Препоръчва се използването на 2–3 бутона за оптимално UX — твърде много опции претоварват интерфейса.

Необходим ли е сървър за изпращане на Rich Notification?

Да, сървърът трябва да изпраща push чрез APNS (Apple Push Notification service) с JSON payload, съдържащ URL на медийния файл в персонализирано поле и флага mutable-content: 1. Сървърът също така посочва category за активиране на Content Extension и действия.

Резюме

  • Rich Notification — iOS push известие с медийни приложения, интерактивни бутони и персонализиран UI, повишаващо ангажираността на потребителите.
  • Поддържана медия — JPEG/PNG/GIF изображения, MP4/MOV видео (до 30 с), MP3/AAC/WAV аудио с лимит 10 MB на файл.
  • Service Extension изтегля медия от URL в payload и добавя UNNotificationAttachment към съдържанието на известието.
  • Интерактивни действия — до 4 бутона на категория, включително текстов вход чрез UNTextInputNotificationAction.
  • Content Extension заменя стандартния интерфейс с персонализиран UIKit/SwiftUI изглед с произволни елементи.
  • Content Extension имплементира протокола UNNotificationContentExtension с метода didReceive за обработка на кликвания и актуализиране на UI в реално време.
  • Rich Notification изисква конфигурация на всички нива: сървър (APNS), Service Extension (изтегляне на медия) и AppDelegate (регистрация на категории).

Ще разработим мобилно приложение под ключ

IT Sectr създава iOS и Android приложения за стартъпи и бизнеси от 2017 г. Ще ви консултираме и ще предложим най-доброто решение.

Обсъдете проекта

Прочетете също