Notification Category: τι είναι, ποιες κατηγορίες υπάρχουν και πώς λειτουργούν στο iOS

Συγγραφέας: IT Sectr Δημοσιεύτηκε: 2026-03-20 Χρόνος ανάγνωσης: 8 λεπ

Notification Category (κατηγορία ειδοποιήσεων) είναι ένας μηχανισμός iOS για την ομαδοποίηση των push ειδοποιήσεων ανά τύπο και την επισύναψη προσαρμόσιμων ενεργειών. Η κατηγορία καθορίζει ποια κουμπιά εμφανίζονται κατά το 3D Touch ή το παρατεταμένο πάτημα σε μια ειδοποίηση, καθώς και πώς το σύστημα επεξεργάζεται τις εισερχόμενες ειδοποιήσεις αυτού του τύπου. Σύμφωνα με το Apple Developer Documentation, το UNNotificationCategory καταχωρείται στο UNUserNotificationCenter και συνδέεται με την ειδοποίηση μέσω του πεδίου category στο ωφέλιμο φορτίο APNS.

Κύρια σημεία

  • Notification Category — μηχανισμός iOS για ταξινόμηση push ειδοποιήσεων και προσθήκη ενεργειών
  • UNNotificationCategory — κλάση που καταχωρεί την κατηγορία με ένα σύνολο UNNotificationAction
  • Ενέργειες — κουμπιά κάτω από την ειδοποίηση: UNTextInputAction για εισαγωγή κειμένου, UNNotificationAction για πάτημα
  • Σύνδεση — η κατηγορία υποδεικνύεται στο ωφέλιμο φορτίο APNS μέσω του κλειδιού category στο λεξικό aps
  • Διαφορά από Android — το iOS Category διαχειρίζεται ενέργειες, το Android Channel διαχειρίζεται σπουδαιότητα και ήχο

Τι είναι το Notification Category στο iOS;

Το Notification Category είναι μια λειτουργία iOS (από την έκδοση 8.0) που επιτρέπει στον προγραμματιστή να ταξινομεί τις push ειδοποιήσεις και να προσθέτει διαδραστικές ενέργειες. Όταν ο χρήστης λαμβάνει μια ειδοποίηση και την πατά με δύναμη (3D Touch) ή με παρατεταμένο πάτημα, εμφανίζονται τα κουμπιά που ορίζονται από την κατηγορία.

Η κατηγορία καταχωρείται μέσω του αντικειμένου UNNotificationCategory, το οποίο περιέχει ένα αναγνωριστικό, έναν πίνακα ενεργειών και προαιρετικές παραμέτρους εμφάνισης. Το σύστημα χρησιμοποιεί το αναγνωριστικό κατηγορίας από το ωφέλιμο φορτίο APNS για να βρει την καταχωρημένη κατηγορία και να εμφανίσει τις αντίστοιχες ενέργειες.

Σε αντίθεση με το Android Notification Channel, το iOS Category δεν διαχειρίζεται σπουδαιότητα, ήχο ή δόνηση. Η μοναδική του αποστολή είναι να παρέχει διαδραστικές δυνατότητες για την ειδοποίηση: κουμπιά απάντησης, επιβεβαίωσης, ακύρωσης ή εισαγωγής κειμένου.

Υποχρεωτικότητα κατηγοριών

Οι κατηγορίες δεν είναι υποχρεωτικές για την εμφάνιση push ειδοποιήσεων στο 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. Η συμπεριφορά των κατηγοριών σε macOS είναι παρόμοια με το iOS: πατώντας την ειδοποίηση, εμφανίζονται κουμπιά, η επεξεργασία γίνεται μέσω του UNUserNotificationCenterDelegate.

Πρέπει να ενημερώνω τις κατηγορίες σε κάθε εκκίνηση;

Συνιστάται η καταχώρηση κατηγοριών σε κάθε εκκίνηση της εφαρμογής μέσω setNotificationCategories. Το σύστημα αντικαθιστά το παλιό σύνολο κατηγοριών με νέο σε κάθε κλήση. Εάν δεν ενημερώνετε, οι κατηγορίες παραμένουν μεταξύ εκκινήσεων, αλλά όταν αλλάζει ο κώδικας, οι παλιές κατηγορίες ενδέχεται να μην ταιριάζουν με τις νέες.

Περίληψη

  • Notification Category — μηχανισμός iOS για προσθήκη διαδραστικών ενεργειών σε push ειδοποιήσεις
  • UNNotificationCategory — κλάση που συνδυάζει αναγνωριστικό, πίνακα UNNotificationAction και επιλογές
  • UNTextInputAction — ενέργεια με πεδίο εισαγωγής κειμένου για γρήγορες απαντήσεις χωρίς άνοιγμα εφαρμογής
  • Ωφέλιμο φορτίο APNS — το κλειδί category στο λεξικό aps συνδέει την ειδοποίηση με καταχωρημένη κατηγορία
  • Έως 4 ενέργειες — μέγιστος αριθμός κουμπιών ανά κατηγορία, τα υπόλοιπα αγνοούνται από το σύστημα
  • Επιλογές ενεργειών — foreground (άνοιγμα εφαρμογής), destructive (κόκκινο κουμπί), authenticationRequired
  • Διαφορά από Android — iOS Category είναι υπεύθυνη για ενέργειες, Android Channel για σπουδαιότητα και ήχο

Θα αναπτύξουμε μια εφαρμογή για κινητά έτοιμη για χρήση

Η IT Sectr δημιουργεί εφαρμογές iOS και Android για νεοφυείς επιχειρήσεις και επιχειρήσεις από το 2017. Θα σας συμβουλεύσουμε και θα προτείνουμε την καλύτερη λύση.

Συζήτηση έργου

Διαβάστε επίσης