Interactive Notification είναι μια push ειδοποίηση με διαδραστικά στοιχεία που επιτρέπει την εκτέλεση μιας ενέργειας χωρίς να ανοίξει η εφαρμογή. Σύμφωνα με το Apple Human Interface Guidelines (2025), τέτοιες ειδοποιήσεις μειώνουν τον αριθμό βημάτων για την επιθυμητή ενέργεια κατά 40%. Κουμπιά ενεργειών και πεδία εισαγωγής δίνουν στον χρήστη τη δυνατότητα να απαντήσει σε ένα μήνυμα, να πληρώσει μια συνδρομή ή να επιβεβαιώσει μια κράτηση απευθείας από την κουρτίνα ειδοποιήσεων, χωρίς να ανοίξει την εφαρμογή.
Κύρια σημεία
Interactive Notification είναι μια εκτεταμένη μορφή push ειδοποίησης που περιέχει διαδραστικά στοιχεία ελέγχου: κουμπιά, διακόπτες και πεδία εισαγωγής κειμένου. Σε αντίθεση με μια τυπική ειδοποίηση που απλώς ενημερώνει, η διαδραστική επιτρέπει στον χρήστη να εκτελέσει μια επιθυμητή ενέργεια απευθείας από την κουρτίνα ή την οθόνη κλειδώματος. Σύμφωνα με το Google Material Design (2025), οι διαδραστικές ειδοποιήσεις επεξεργάζονται από το λειτουργικό σύστημα χωρίς εκκίνηση της κύριας διεργασίας της εφαρμογής — εξοικονομεί διάρκεια μπαταρίας και επιταχύνει την απόκριση. Ο προγραμματιστής ορίζει ένα σύνολο ενεργειών μέσω κατηγοριών σε iOS και καναλιών σε Android, και το σύστημα τις εμφανίζει ανάλογα με το περιβάλλον.
Κάθε διαδραστική ειδοποίηση αποτελείται από τρία επίπεδα: βασικό περιεχόμενο (τίτλος, σώμα), ενέργειες (κουμπιά) και προαιρετική εισαγωγή κειμένου. Σε iOS, αυτά τα στοιχεία συνδυάζονται μέσω UNNotificationCategory, ενώ σε Android μέσω NotificationCompat.Action.Builder. Το σύστημα εμφανίζει τα κουμπιά κάτω από το κείμενο της ειδοποίησης σε συμπιεσμένη ή εκτεταμένη μορφή ανάλογα με την έκδοση του OS και το μήκος του κειμένου. Ο χρήστης βλέπει τις διαθέσιμες ενέργειες αμέσως μετά τη λήψη της ειδοποίησης και μπορεί να εκτελέσει μία από αυτές χωρίς να μεταβεί στην εφαρμογή.
Ο μηχανισμός λειτουργίας του Interactive Notification χωρίζεται σε δύο φάσεις: εγγραφή κατηγοριών κατά την εκκίνηση της εφαρμογής και επεξεργασία ενέργειας όταν ο χρήστης πατήσει. Στη φάση εγγραφής, ο προγραμματιστής δημιουργεί αντικείμενα κατηγοριών με ένα σύνολο ενεργειών — κάθε ενέργεια έχει αναγνωριστικό, τίτλο και επιλογές. Κατά τη λήψη μιας push ειδοποίησης, το σύστημα την αντιστοιχίζει με μια εγγεγραμμένη κατηγορία βάσει του categoryIdentifier και προσθέτει αυτόματα τα αντίστοιχα κουμπιά. Όταν ο χρήστης πατήσει ένα κουμπί, το σύστημα καλεί τον delegate UNUserNotificationCenter ή PendingIntent σε Android με το αναγνωριστικό ενέργειας και μεταφέρει το αποτέλεσμα πίσω στην εφαρμογή. Σύμφωνα με το WWDC 2024, ο χρόνος επεξεργασίας μιας διαδραστικής ενέργειας σε iOS δεν υπερβαίνει τα 200 ms με σωστή ρύθμιση.
Οι διαδραστικές ειδοποιήσεις χωρίζονται σε τρεις βασικούς τύπους ανάλογα με τον τρόπο αλληλεπίδρασης: με κουμπιά, με κείμενο και πολυμέσα. Κάθε τύπος λύνει το δικό του πρόβλημα και εφαρμόζεται σε συγκεκριμένα σενάρια. Η επιλογή τύπου εξαρτάται από το περιβάλλον — όσο λιγότερα βήματα απαιτούνται από τον χρήστη, τόσο υψηλότερη η μετατροπή. Η Apple και η Google συνιστούν τη χρήση κουμπιών για επιβεβαίωση, πεδίου εισαγωγής για απαντήσεις και πολυμέσων για προεπισκόπηση περιεχομένου.
Ο πιο διαδεδομένος τύπος — ειδοποίηση με ένα ή περισσότερα κουμπιά, καθένα από τα οποία εκτελεί μια προκαθορισμένη ενέργεια. Για παράδειγμα, κουμπιά «Αποδοχή» και «Απόρριψη» για ένα συμβάν ημερολογίου, «Like» και «Απάντηση» για ένα μήνυμα. Σε iOS υποστηρίζονται έως τέσσερα κουμπιά, σε Android έως τρία. Τα κουμπιά μπορούν να ομαδοποιηθούν ανά προτεραιότητα: κανονικά και καταστροφικά (με επιβεβαίωση). Η Apple συνιστά όχι περισσότερα από δύο βασικά κουμπιά για ευκολία του χρήστη στην οθόνη κλειδώματος.
RemoteInput είναι μια τεχνολογία που επιτρέπει στον χρήστη να εισαγάγει κείμενο απευθείας στην ειδοποίηση χωρίς να ανοίξει την εφαρμογή. Σε iOS χρησιμοποιείται το UNTextInputNotificationAction, σε Android το RemoteInput.Builder με ένα κλειδί για εξαγωγή του εισαγόμενου κειμένου. Τις περισσότερες φορές εφαρμόζεται σε εφαρμογές ανταλλαγής μηνυμάτων για γρήγορη απάντηση σε ένα μήνυμα. Το εισαγόμενο κείμενο μεταφέρεται στην εφαρμογή μέσω της υπηρεσίας ειδοποιήσεων ή ενός τοπικού χειριστή. Περιορισμός — το κείμενο δεν μπορεί να περιέχει μορφοποίηση, μόνο plain string.
Οι ειδοποιήσεις με πολυμέσα επιτρέπουν την εμφάνιση εικόνων, ήχου και βίντεο απευθείας στην κουρτίνα. Σε iOS αυτό υλοποιείται μέσω UNNotificationAttachment, σε Android μέσω NotificationCompat.MessagingStyle με BigPictureStyle. Τα πολυμέσα μεταφορτώνονται από τον διακομιστή push provider και μεταδίδονται μαζί με την ειδοποίηση ως συνημμένο. Το μέγεθος του συνημμένου είναι περιορισμένο — η Apple συνιστά όχι περισσότερο από 10 MB, η Google όχι περισσότερο από 1 MB για εικόνες. Το πολυμεσικό περιεχόμενο αυξάνει την πληροφορικότητα της ειδοποίησης για ειδήσεις, αγορές και κοινωνικά δίκτυα.
Σε iOS, το Interactive Notification υλοποιείται μέσω του πλαισίου UserNotifications με χρήση UNNotificationCategory και UNNotificationAction. Η εφαρμογή καταχωρεί κατηγορίες κατά την εκκίνηση και όταν λαμβάνει μια ειδοποίηση, το σύστημα εμφανίζει αυτόματα τα αντίστοιχα κουμπιά. Για την επεξεργασία ενεργειών, πρέπει να υλοποιηθεί η μέθοδος userNotificationCenter:didReceiveNotificationResponse:withCompletionHandler. Παρακάτω δίνεται ένα παράδειγμα εγγραφής κατηγορίας με κουμπί και εισαγωγή κειμένου σε Swift.
import UserNotifications
let replyAction = UNTextInputNotificationAction(
identifier: "reply",
title: "Απάντηση",
options: [.authenticationRequired],
textInputButtonTitle: "Αποστολή",
textInputPlaceholder: "Εισαγάγετε μήνυμα..."
)
let category = UNNotificationCategory(
identifier: "message",
actions: [replyAction],
intentIdentifiers: [],
options: []
)
UNUserNotificationCenter.current()
.setNotificationCategories([category])
Μετά την κλήση του setNotificationCategories, το σύστημα αποθηκεύει τις κατηγορίες και τις χρησιμοποιεί για όλες τις επόμενες ειδοποιήσεις. Ο κώδικας πρέπει να καλείται σε κάθε εκκίνηση της εφαρμογής για συγχρονισμό των κατηγοριών με νέες εκδόσεις. Η επεξεργασία της απάντησης γίνεται στον delegate του κέντρου ειδοποιήσεων — η εφαρμογή λαμβάνει το αναγνωριστικό ενέργειας και το εισαγόμενο κείμενο για περαιτέρω επεξεργασία.
func userNotificationCenter(
_ center: UNUserNotificationCenter,
didReceive response: UNNotificationResponse,
withCompletionHandler completion: @escaping VoidBlock
) {
if response.actionIdentifier == "reply" {
let textResponse = response as! UNTextInputNotificationResponse
let message = textResponse.userText
sendMessage(message)
}
completion()
}
Η μέθοδος userNotificationCenter καλείται από το σύστημα μετά το πάτημα ενός κουμπιού ή την αποστολή κειμένου από τον χρήστη. Μέσα στον χειριστή ελέγχεται το actionIdentifier — αν ταιριάζει με το καταχωρημένο αναγνωριστικό, η εφαρμογή εξάγει το εισαγόμενο κείμενο από το userText και το στέλνει στον διακομιστή. Για απλά κουμπιά χωρίς εισαγωγή κειμένου χρησιμοποιείται UNNotificationResponse χωρίς μετατροπή τύπου.
Σε Android, οι διαδραστικές ειδοποιήσεις δημιουργούνται μέσω της κλάσης NotificationCompat με μεθόδους addAction και RemoteInput. Σε αντίθεση με iOS, το Android δεν απαιτεί προκαταρκτική εγγραφή κατηγοριών — οι ενέργειες προστίθενται απευθείας σε κάθε ειδοποίηση μέσω Builder. Αυτό δίνει μεγαλύτερη ευελιξία: κάθε ειδοποίηση μπορεί να έχει ένα μοναδικό σύνολο κουμπιών. Παρακάτω δίνεται ένα παράδειγμα ειδοποίησης με κουμπί απάντησης σε Java με χρήση RemoteInput.
RemoteInput remoteInput = new RemoteInput.Builder("key_reply")
.setLabel("Απάντηση")
.build();
PendingIntent replyIntent = PendingIntent.getBroadcast(
this, 1001,
new Intent("ACTION_REPLY"),
PendingIntent.FLAG_UPDATE_CURRENT
);
NotificationCompat.Action action =
new NotificationCompat.Action.Builder(
R.drawable.ic_reply,
"Απάντηση", replyIntent
)
.addRemoteInput(remoteInput)
.build();
NotificationCompat.Builder builder =
new NotificationCompat.Builder(this, "messages")
.setContentTitle("Νέο μήνυμα")
.setContentText("Γεια! Πώς είσαι;")
.setSmallIcon(R.drawable.ic_notification)
.addAction(action);
NotificationManagerCompat.from(this)
.notify(100, builder.build());
Το βασικό στοιχείο είναι το RemoteInput, που συνδέει το πεδίο εισαγωγής με την ενέργεια. Όταν ο χρήστης πατήσει το κουμπί «Απάντηση», το σύστημα ανοίγει ένα παράθυρο διαλόγου εισαγωγής κειμένου μέσα στην ειδοποίηση. Μετά την αποστολή, το κείμενο μεταφέρεται μέσω Intent στο BroadcastReceiver ή Activity σύμφωνα με το καθορισμένο PendingIntent. Για λήψη του κειμένου στον παραλήπτη χρησιμοποιείται RemoteInput.getResultsFromIntent(intent) με το κλειδί «key_reply».
Bundle results = RemoteInput.getResultsFromIntent(intent);
if (results != null) {
CharSequence reply = results.getCharSequence("key_reply");
if (reply != null) {
sendReplyToServer(reply.toString());
}
}
Η μέθοδος getResultsFromIntent εξάγει το κείμενο που εισήγαγε ο χρήστης από το Intent που μεταδόθηκε από το σύστημα κατά την αποστολή της απάντησης. Το αποτέλεσμα επιστρέφεται ως CharSequence, το οποίο μετατρέπεται σε συμβολοσειρά για αποστολή στον διακομιστή. Αν ο χρήστης έκλεισε το παράθυρο εισαγωγής χωρίς αποστολή, το results θα είναι κενό — αυτό πρέπει να λαμβάνεται υπόψη κατά την επεξεργασία. Αυτή η προσέγγιση επιτρέπει την υλοποίηση γρήγορης απάντησης χωρίς εκκίνηση Activity.
Το Interactive Notification εφαρμόζεται σε εφαρμογές κάθε τύπου όπου απαιτείται γρήγορη ενέργεια του χρήστη. Τα πιο αποτελεσματικά σενάρια είναι οι εφαρμογές ανταλλαγής μηνυμάτων για απάντηση σε μήνυμα, το ηλεκτρονικό εμπόριο για επιβεβαίωση παραγγελίας και τα ημερολόγια για αποδοχή πρόσκλησης. Σύμφωνα με την Localytics (2025), οι εφαρμογές με διαδραστικές ειδοποιήσεις παρουσιάζουν 28% υψηλότερη διατήρηση την 7η ημέρα. Παρακάτω παρουσιάζεται ένας πίνακας με δημοφιλή σενάρια και χαρακτηριστικά πλατφόρμας.
| Σενάριο | Ενέργειες | Πλατφόρμα |
|---|---|---|
| Ανταλλαγή μηνυμάτων | Απάντηση με κείμενο, Like | iOS + Android |
| Ηλεκτρονικό εμπόριο | Επιβεβαίωση, αναβολή, ακύρωση | iOS + Android |
| Ημερολόγιο | Αποδοχή, απόρριψη, ίσως | iOS |
| Ειδήσεις | Αποθήκευση, κοινοποίηση, άνοιγμα | Android |
| Κράτηση | Επιβεβαίωση, αναπρογραμματισμός, ακύρωση | iOS + Android |
Κατά τον σχεδιασμό διαδραστικών ειδοποιήσεων είναι σημαντικό να λαμβάνεται υπόψη ο περιορισμός — ο χρήστης μπορεί να εκτελέσει μια ενέργεια μόνο μία φορά. Μετά το πάτημα ενός κουμπιού, η ειδοποίηση εξαφανίζεται ή μεταβαίνει σε κατάσταση «ολοκληρώθηκε». Επομένως, κάθε ενέργεια πρέπει να είναι μη αναστρέψιμη ή να έχει επιβεβαίωση σε δεύτερο βήμα.
Συχνές ερωτήσεις
Interactive Notification είναι μια push ειδοποίηση με κουμπιά, πεδίο εισαγωγής ή πολυμεσικό συνημμένο που επιτρέπει στον χρήστη να εκτελέσει μια ενέργεια χωρίς να ανοίξει την εφαρμογή. Υποστηρίζεται σε iOS μέσω UserNotifications και σε Android μέσω NotificationCompat.
Μια κανονική ειδοποίηση απλώς ενημερώνει — ο χρήστης πατάει και ανοίγει την εφαρμογή. Η διαδραστική ειδοποίηση περιέχει κουμπιά ή πεδίο εισαγωγής και η ενέργεια εκτελείται απευθείας στην κουρτίνα. Αυτό συντομεύει τη διαδρομή προς την επιθυμητή ενέργεια και μειώνει το φορτίο στην εφαρμογή.
Σε iOS υποστηρίζονται έως τέσσερα κουμπιά, σε Android έως τρία. Σε Android, δύο κουμπιά εμφανίζονται στον πίνακα ειδοποιήσεων, το τρίτο είναι διαθέσιμο στο αναπτυσσόμενο μενού. Η Apple συνιστά όχι περισσότερα από δύο βασικά κουμπιά για ευκολία του χρήστη στην οθόνη κλειδώματος.
Σε iOS χρησιμοποιείται το UNTextInputNotificationAction, σε Android το RemoteInput.Builder με ένα κλειδί. Ο χρήστης εισάγει κείμενο σε ένα παράθυρο διαλόγου μέσα στην ειδοποίηση και η εφαρμογή το λαμβάνει μέσω delegate ή Intent χωρίς εκκίνηση Activity.
Η λήψη μιας push ειδοποίησης απαιτεί σύνδεση στο διαδίκτυο, αλλά η ίδια η διαδραστικότητα (εμφάνιση κουμπιών, εισαγωγή κειμένου) λειτουργεί εκτός σύνδεσης. Η μετάδοση του αποτελέσματος στον διακομιστή μπορεί να αναβληθεί μέχρι την αποκατάσταση της σύνδεσης.
Σύνοψη
Θα αναπτύξουμε μια εφαρμογή για κινητά έτοιμη για χρήση
Η IT Sectr δημιουργεί εφαρμογές iOS και Android για νεοφυείς επιχειρήσεις και επιχειρήσεις από το 2017. Θα σας συμβουλεύσουμε και θα προτείνουμε την καλύτερη λύση.
Διαβάστε επίσης