Το Rich Notification είναι μια εκτεταμένη μορφή push ειδοποιήσεων iOS που περιλαμβάνει συνημμένα μέσων, διαδραστικά κουμπιά και προσαρμοσμένες διαεπαφές για βελτίωση της εμπειρίας χρήστη. Σε αντίθεση με τις τυπικές ειδοποιήσεις κειμένου, το Rich Notification μπορεί να εμφανίζει εικόνες, βίντεο και ήχο απευθείας στο banner ή στην οθόνη κλειδώματος. Σύμφωνα με το Apple Developer Documentation, 2026, το UNNotificationAttachment υποστηρίζει έως 10 αρχεία σε μία ειδοποίηση και τα κλιμακώνει αυτόματα για βέλτιστη εμφάνιση σε όλες τις συσκευές.
Κύρια σημεία
Rich Notification είναι μια ειδοποίηση push iOS που περιέχει όχι μόνο κείμενο, αλλά και συνημμένα μέσων, διαδραστικά στοιχεία και προσαρμοσμένη διαεπαφή. Ο όρος «πλούσιο» (rich) αντικατοπτρίζει τη δυνατότητα συμπερίληψης εικόνων, βίντεο, ήχου, κουμπιών ενέργειας και εισαγωγής κειμένου στην ειδοποίηση, μετατρέποντας μια απλή ειδοποίηση σε ένα πλήρως διαδραστικό στοιχείο.
Η 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, TIFF | 10 MB ανά αρχείο |
| Βίντεο | MPEG, MP4, MOV | 10 MB, έως 30 δευτερόλεπτα |
| Ήχος | MP3, AAC, WAV, CAF | 10 MB |
Οι εικόνες κόβονται και κλιμακώνονται αυτόματα από το σύστημα για εμφάνιση σε συμπαγή και εκτεταμένη προβολή ειδοποίησης. Τα κινούμενα GIF υποστηρίζονται από iOS 12 και αναπαράγονται αυτόματα κατά την προβολή της ειδοποίησης. Το συνιστώμενο μέγεθος εικόνας είναι 1024x1024 pixels, που εξασφαλίζει καθαρή εμφάνιση σε όλες τις συσκευές, συμπεριλαμβανομένου του iPad με μεγάλη οθόνη.
Το βίντεο σε Rich Notification αναπαράγεται από προεπιλογή χωρίς ήχο — ο χρήστης μπορεί να ενεργοποιήσει τον ήχο μέσω κουμπιού στη συσκευή αναπαραγωγής. Μέγιστη διάρκεια βίντεο είναι 30 δευτερόλεπτα, μετά την οποία η αναπαραγωγή σταματά. Τα συνημμένα ήχου μπορούν να χρησιμοποιηθούν για φωνητικά μηνύματα ή προεπισκοπήσεις ήχου και αναπαράγονται κατά το πάτημα της ειδοποίησης σε εκτεταμένη προβολή.
Διαδραστικές ενέργειες επιτρέπουν στον χρήστη να εκτελεί λειτουργίες απευθείας από την ειδοποίηση χωρίς να ανοίγει την εφαρμογή. Οι ενέργειες καταχωρούνται μέσω UNNotificationCategory και UNNotificationAction κατά την εκκίνηση της εφαρμογής. Κάθε ενέργεια μπορεί να είναι στο παρασκήνιο (χωρίς άνοιγμα της εφαρμογής) ή στο προσκήνιο (ανοίγει την εφαρμογή για ολοκλήρωση της λειτουργίας).
Το UNNotificationAction είναι ένα κουμπί με τίτλο και προαιρετικούς τροποποιητές, όπως requiresAuthentication (απαιτεί Face ID/Touch ID) ή destructive (επισημαίνεται με κόκκινο). UNTextInputNotificationAction επεκτείνει αυτή τη δυνατότητα προσθέτοντας ένα πεδίο εισαγωγής κειμένου — ιδανικό για γρήγορη απάντηση σε μήνυμα ή σχόλιο. Οι ενέργειες εμφανίζονται με παρατεταμένο πάτημα της ειδοποίησης ή σύρσιμο προς τα κάτω.
Οι κατηγορίες ειδοποιήσεων συνδέουν τον τύπο περιεχομένου με το σύνολο διαθέσιμων ενεργειών. Η διαδικασία καταχώρησης εκτελείται στο AppDelegate κατά την εκκίνηση της εφαρμογής μέσω UNUserNotificationCenter.current().setNotificationCategories. Η κατηγορία καθορίζεται στο διακομιστή στο πεδίο category του JSON payload, και το σύστημα εφαρμόζει αυτόματα το αντίστοιχο σύνολο ενεργειών στην ειδοποίηση.
Όταν ο χρήστης κάνει κλικ σε ένα κουμπί ή στέλνει κείμενο, το σύστημα καλεί τον εκπρόσωπο UNUserNotificationCenterDelegate με τη μέθοδο didReceive response. Το UNNotificationResponse περιέχει το αναγνωριστικό της ενέργειας και το κείμενο που εισήχθη (για UNTextInputNotificationAction). Βάσει αυτών των πληροφοριών, η εφαρμογή εκτελεί την αντίστοιχη επιχειρηματική λογική: στέλνει ένα μήνυμα, επιβεβαιώνει την ενέργεια ή ανοίγει μια συγκεκριμένη οθόνη.
Ας δούμε τον πλήρη κύκλο δημιουργίας Rich Notification: από την καταχώρηση κατηγοριών στο AppDelegate έως την επεξεργασία σε Service Extension και προβολή. AppDelegate καταχωρεί την κατηγορία με κουμπιά, ο διακομιστής στέλνει την ειδοποίηση με URL εικόνας, το Service Extension κατεβάζει τα πολυμέσα και το Content Extension εμφανίζει την προσαρμοσμένη διαεπαφή με κουμπιά.
// 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
}
Μετά τη λήψη push ειδοποίησης με την κατηγορία «social_post» και URL εικόνας σε προσαρμοσμένο πεδίο, ενεργοποιείται το Service Extension. Η επέκταση κατεβάζει την εικόνα μέσω δικτύου, δημιουργεί ένα UNNotificationAttachment με μοναδικό αναγνωριστικό και το προσθέτει στο περιεχόμενο. Είναι σημαντικό να ελέγχετε το μέγεθος του αρχείου που κατεβάσατε — αν υπερβαίνει τα 10 MB, το συνημμένο δεν θα δημιουργηθεί και το σύστημα θα εμφανίσει την ειδοποίηση χωρίς πολυμέσα.
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 χωρίς διακομιστή, χρησιμοποιήστε τον προσομοιωτή iOS και στείλτε push μέσω τερματικού με xcrun simctl push. Στο payload, πρέπει να καθορίσετε υποχρεωτικά mutable-content: 1 για ενεργοποίηση Service Extension και category για εμφάνιση ενεργειών. Η εντολή στέλνει push από το αρχείο JSON απευθείας στον επιλεγμένο προσομοιωτή, επιτρέποντας γρήγορη επανάληψη χωρίς ρύθμιση υποδομής διακομιστή.
UNNotificationContentExtension επιτρέπει την πλήρη αντικατάσταση της τυπικής διαεπαφής ειδοποίησης με μια οποιαδήποτε UIKit ή SwiftUI προβολή. Η επέκταση ενεργοποιείται όταν ο χρήστης επεκτείνει την ειδοποίηση (force touch ή σύρσιμο προς τα κάτω) και μπορεί να περιέχει κουμπιά, ρυθμιστικά, κινήσεις και άλλα στοιχεία UI. Το μέγεθος της διαεπαφής προσαρμόζεται στο περιεχόμενο με Auto Layout.
Το 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.
Συχνές Ερωτήσεις
Το μέγιστο μέγεθος ενός συνημμένου πολυμέσων είναι 10 MB. Σε περίπτωση υπέρβασης του ορίου, το UNNotificationAttachment δεν δημιουργείται και η ειδοποίηση εμφανίζεται χωρίς πολυμέσα. Συνιστάται η βελτιστοποίηση εικόνων σε 1–3 MB για γρήγορη λήψη σε Service Extension.
Το Rich Notification υποστηρίζεται σε όλες τις συσκευές με iOS 10 και νεότερο, συμπεριλαμβανομένου του iPhone 5s και νεότερων. Το Content Extension με προσαρμοσμένο UI είναι διαθέσιμο από iOS 12. SwiftUI σε Content Extension — από iOS 16. Σε παλαιότερες εκδόσεις, η ειδοποίηση εμφανίζεται σε τυπική μορφή.
Ναι, τα κινούμενα GIF υποστηρίζονται από iOS 12. Το GIF κατεβαίνει μέσω UNNotificationAttachment ως συνηθισμένη εικόνα και αναπαράγεται αυτόματα κατά την προβολή της ειδοποίησης. Το μέγεθος του GIF περιορίζεται στα ίδια 10 MB με τις άλλες μορφές.
Μέγιστες 4 ενέργειες ανά ειδοποίηση κατά την καταχώρηση κατηγορίας. Σε περίπτωση περισσότερων, το σύστημα εμφανίζει τις πρώτες 4 και αγνοεί τις υπόλοιπες. Συνιστάται η χρήση 2–3 κουμπιών για βέλτιστη UX — πάρα πολλές επιλογές υπερφορτώνουν τη διαεπαφή.
Ναι, ο διακομιστής πρέπει να στέλνει push μέσω APNS (Apple Push Notification service) με JSON payload που περιέχει URL του αρχείου πολυμέσων σε προσαρμοσμένο πεδίο και τη σημαία mutable-content: 1. Ο διακομιστής καθορίζει επίσης την category για ενεργοποίηση Content Extension και ενεργειών.
Σύνοψη
Θα αναπτύξουμε μια εφαρμογή για κινητά έτοιμη για χρήση
Η IT Sectr δημιουργεί εφαρμογές iOS και Android για νεοφυείς επιχειρήσεις και επιχειρήσεις από το 2017. Θα σας συμβουλεύσουμε και θα προτείνουμε την καλύτερη λύση.
Διαβάστε επίσης