Notification Category: шта је, које категорије постоје и како функционишу у iOS-у

Аутор: IT Sectr Објављено: 2026-03-20 Време читања: 8 мин

Notification Category (категорија обавештења) је механизам iOS-а за груписање пусх обавештења по типу и додавање прилагодљивих радњи. Категорија одређује која дугмад се приказују при 3D Touch или дугом притиску на обавештење, као и како систем обрађује долазна обавештења овог типа. Према Apple Developer Documentation, UNNotificationCategory се региструје у UNUserNotificationCenter и повезује са обавештењем преко поља category у APNS пакету.

Главно

  • Notification Category — механизам iOS-а за класификацију пусх обавештења и додавање радњи
  • UNNotificationCategory — класа која региструје категорију са скупом UNNotificationAction
  • Радње — дугмад испод обавештења: UNTextInputAction за унос текста, UNNotificationAction за додир
  • Повезивање — категорија се наводи у APNS пакету преко кључа category у речнику aps
  • Разлика од Android-а — iOS Category управља радњама, а Android Channel важношћу и звуком

Шта је Notification Category у iOS-у?

Notification Category је функција iOS-а (од верзије 8.0) која омогућава програмеру да класификује пусх обавештења и дода интерактивне радње. Када корисник прими обавештење и притисне га снагом (3D Touch) или дуго притисне, појављују се дугмад дефинисана категоријом.

Категорија се региструје преко објекта UNNotificationCategory, који садржи идентификатор, низ радњи и опционе параметре приказа. Систем користи идентификатор категорије из APNS пакета за проналажење регистроване категорије и приказ одговарајућих радњи.

За разлику од Android Notification Channel-а, iOS Category не управља важношћу, звуком или вибрацијом. Њен једини задатак је да пружи интерактивне могућности за обавештење: дугмад за одговор, потврду, отказивање или унос текста.

Обавезност категорија

Категорије нису обавезне за приказ пусх обавештења на iOS-у. Обавештење ће се приказати у сваком случају — са дугмадима ако је категорија регистрована, или без њих. Категорије су потребне само за додавање интерактивности обавештењима.

Како функционишу категорије обавештења?

Механизам категорија састоји се од четири фазе: регистрација категорије на клијенту, слање APNS пакета са категоријом, препознавање категорије од стране система и обрада радње корисника.

  • Регистрација — апликација креира UNNotificationCategory са низом радњи и региструје у UNUserNotificationCenter
  • Слање — сервер укључује у APNS пакет кључ category са вредношћу која одговара идентификатору категорије
  • Приказ — iOS приказује обавештење и при force touch показује дугмад везана за категорију
  • Обрада — корисник притисне дугме, покреће се UNUserNotificationCenterDelegate.didReceive response

Радње у категорији могу бити два типа: foreground (отварају апликацију) и background(извршавају се у позадини). За позадинске радње апликација добија ограничено време (око 30 секунди) за обраду у UNNotificationActionHandler-у.

Опције при регистрацији категорије

UNNotificationCategory подржава неколико опција преко параметра options: customDismissAction — пријем догађаја при превлачењу обавештења, allowInCarPlay — приказ радњи у CarPlay-у, hiddenPreviewsBodyPlaceholder — прилагођени текст за скривене прегледе. Правилно подешавање опција побољшава корисничко искуство на различитим Apple уређајима.

UNNotificationAction: врсте радњи

iOS пружа два типа радњи за категорије обавештења. Сваки тип има своју намену и начин интеракције са корисником.

ТипКласаОписПример
Једноставна радњаUNNotificationActionДугме са насловом и опцијама (destructive, foreground, authenticationRequired)„Обриши”, „Погледај”
Унос текстаUNTextInputActionДугме које отвара поље за унос текста са подразумеваним текстом„Одговори”, „Коментариши”

UNTextInputAction — јединствена могућност iOS-а. При притиску дугмета „Одговори” систем приказује текстуално поље у које корисник уноси одговор. Унети текст се прослеђује делегату заједно са идентификатором радње. Ово омогућава брзе одговоре без отварања апликације.

Опције радњи: options.authenticationRequired — захтева откључавање уређаја, options.destructive — истиче дугме црвеном бојом (за опасне радње), options.foreground — отвара апликацију након притиска.

Подешавање категорије у iOS коду

Категорије се региструју при покретању апликације, обично у методи didFinishLaunchingWithOptions. Регистрација се врши преко UNUserNotificationCenter-а, након захтева за дозволу за обавештења. Категорије се могу ажурирати при сваком покретању — старе верзије се замењују новим.

swift
import UserNotifications

class AppDelegate: UIResponder, UIApplicationDelegate {

    func registerNotificationCategories() {
        let replyAction = UNTextInputNotificationAction(
            identifier: "reply",
            title: "Одговори",
            options: [.foreground],
            textInputButtonTitle: "Пошаљи",
            textInputPlaceholder: "Унесите поруку..."
        )

        let deleteAction = UNNotificationAction(
            identifier: "delete",
            title: "Обриши",
            options: [.destructive]
        )

        let messageCategory = UNNotificationCategory(
            identifier: "message",
            actions: [replyAction, deleteAction],
            intentIdentifiers: [],
            options: [.customDismissAction]
        )

        UNUserNotificationCenter.current()
            .setNotificationCategories([messageCategory])
    }

    func application(
        _ application: UIApplication,
        didFinishLaunchingWithOptions options: [UIApplication.LaunchOptionsKey: Any]?
    ) -> Bool {
        UNUserNotificationCenter.current().delegate = self
        registerNotificationCategories()
        return true
    }
}

Након регистрације категорије, свако обавештење са category = „message" у APNS пакету приказиваће дугмад „Одговори” и „Обриши”. Обрада притисака се врши у userNotificationCenter:didReceive response-у, где actionIdentifier одређује које дугме је притиснуто.

Обрада притиска у делегату

Када корисник притисне дугме категорије, iOS позива делегата UNUserNotificationCenterDelegate са објектом UNNotificationResponse. У response.actionIdentifier се налази идентификатор притиснутог дугмета, а у response.notification.request.content.userInfo — прилагођени подаци из APNS пакета. За UNTextInputAction додатно је доступан response.userText са текстом који је унео корисник.

Разлике од Android канала

Програмери упознати са Android Notification Channels-има често их мешају са iOS Notification Categories-има. Упркос сличном називу, ови механизми решавају различите задатке и раде на различите начине.

  • Намена — Android Channels управљају важношћу и видљивошћу обавештења; iOS Categories — интерактивним радњама
  • Обавезност — Android Channel је обавезан за приказ обавештења; iOS Category је опциона
  • Управљање од стране корисника — Android корисник подешава канале у системским поставкама; iOS категорије нису видљиве кориснику директно
  • Груписање — Android Channels се могу објединити у групе (ChannelGroup); iOS Categories се не групишу

На обе платформе могуће је комбиновати оба механизма: у Android-у обавештење може припадати каналу са радњама из NotificationCompat-а, а у iOS-у категорија допуњава канале који се у iOS-у називају thread-id и служе за груписање обавештења у центру обавештења.

APNS пакет са категоријом

Да би се обавештење приказало са дугмадима категорије, сервер мора укључити кључ category у APNS пакет. Без овог кључа систем неће знати коју категорију да примени на обавештење.

json
{
    "aps": {
        "alert": {
            "title": "Нова порука",
            "body": "Ана: Здраво! Како си?"
        },
        "category": "message",
        "thread-id": "chat_123",
        "badge": 5,
        "sound": "default"
    }
}

Кључ category мора тачно одговарати идентификатору регистрованом преко setNotificationCategories на клијенту. Велика и мала слова су битна — „message" и „Message" се сматрају различитим категоријама. Ако категорија није пронађена, обавештење се приказује без дугмади, без грешака у дневнику.

Обрада непознате категорије

Ако сервер пошаље обавештење са category која није регистрована на клијенту, iOS игнорише категорију и приказује обавештење без дугмади. Грешка се не евидентира и апликација не сазнаје за неусклађеност. Препоручује се синхронизација листе категорија између сервера и клијента преко конфигурационе датотеке и провера при сваком ажурирању апликације.

Обрасци дизајна категорија

При дизајнирању категорија обавештења iOS-а придржавајте се принципа једна категорија — један сценарио. Свака категорија треба да одговара одређеном типу интеракције: одговор на поруку, потврда радње, одбијање захтева. Немојте мешати различите сценарије у једној категорији — то збуњује корисника и компликује обраду у делегату.

Користите UNTextInputAction за сценарије у којима корисник треба да унесе текст без отварања апликације: одговори у месенџерима, коментари, брзе белешке. Текстуалне радње повећавају ангажованост — корисник обавља смислену радњу у 2 додира уместо у 5+ у отвореној апликацији.

За опасне радње (брисање, блокирање) користите опцију destructive. iOS ће истаћи ова дугмад црвеном бојом, упозоравајући корисника на неповратност радње. За радње које захтевају откључавање уређаја (преглед личних података) поставите authenticationRequired — систем ће затражити Face ID или лозинку пре извршења.

Тестирајте категорије на различитим уређајима: на iPhone-у са 3D Touch, на iPhone-у без 3D Touch (дуги притисак), на iPad-у и на Mac-у. Понашање категорија може се незнатно разликовати на различитим Apple платформама. Посебна пажња — CarPlay: дугмад категорија се приказују на екрану аутомобила, али унос текста није доступан, па се UNTextInputAction аутоматски сакрива у CarPlay-у. На watchOS категорије нису подржане — сва обавештења се приказују без дугмади за радње.

Често постављана питања

Колико категорија се може регистровати у iOS-у?

Нема ограничења — iOS не поставља лимит на број UNNotificationCategory. Међутим, у пракси се препоручује не више од 10–15 категорија како се не би компликовала обрада у делегату. Свака категорија може садржати до 4 радње (дугмета). Више од 4 радње систем игнорише.

Како обрадити притисак на дугме категорије?

Имплементирајте делегата UNUserNotificationCenterDelegate и метод didReceive response. Проверите response.actionIdentifier: UNNotificationDismissActionIdentifier — превлачење брисања, UNNotificationDefaultActionIdentifier — додир на тело, или ваш прилагођени идентификатор дугмета. За текстуална дугмад текст је доступан преко response.userText.

По чему се category разликује од thread-id?

Category — одређује интерактивне радње (дугмад) за обавештење. Thread-id — групише обавештења у Центру обавештења по темама. Оба кључа се наводе у APNS пакету. Category и thread-id нису повезани: обавештење може имати категорију без thread-id и обрнуто.

Да ли категорије раде на macOS-у?

Да, UNNotificationCategory је подржан на macOS 10.14+ (Mojave) у апликацијама које користе UserNotifications framework. Понашање категорија на macOS-у је слично iOS-у: при притиску на обавештење приказују се дугмад, обрада се врши преко UNUserNotificationCenterDelegate-а.

Да ли треба ажурирати категорије при сваком покретању?

Препоручује се регистровање категорија при сваком покретању апликације преко setNotificationCategories. Систем замењује стари скуп категорија новим при сваком позиву. Ако не ажурирате, категорије се чувају између покретања, али при промени кода старе категорије можда неће одговарати новима.

Резиме

  • Notification Category — механизам iOS-а за додавање интерактивних радњи пусх обавештењима
  • UNNotificationCategory — класа која обједињује идентификатор, низ UNNotificationAction и опције
  • UNTextInputAction — радња са пољем за унос текста за брзе одговоре без отварања апликације
  • APNS пакет — кључ category у речнику aps повезује обавештење са регистрованом категоријом
  • До 4 радње — максимални број дугмади по категорији, остатак систем игнорише
  • Опције радњи — foreground (отварање апликације), destructive (црвено дугме), authenticationRequired
  • Разлика од Android-а — iOS Category одговара за радње, Android Channel — за важност и звук

Развићемо мобилну апликацију под кључ

IT Sectr креира iOS и Android апликације за стартапе и предузећа од 2017. године. Саветоваћемо вас и предложити најбоље решење.

Разговарајте о пројекту

Прочитајте такође