Notification Action — διαδραστικά κουμπιά και πεδία εισαγωγής που εμφανίζονται απευθείας στην push ειδοποίηση και επιτρέπουν στον χρήστη να εκτελέσει μια ενέργεια χωρίς να ανοίξει την εφαρμογή. Αυτό είναι ένα κλειδί στοιχείο της εμπειρίας χρήστη που συντομεύει το μονοπάτι προς την οθόνη-στόχο. Σύμφωνα με Android Developers, 2025, το Notification Action αυξάνει την αρραίωση των χρηστών έως και 40% μειώνοντας την τριβή κατά την αλληλεπίδραση.
Βασικά σημεία
Notification Action — είναι ένα διαδραστικό στοιχείο διεπαφής που προστίθεται σε μια push ειδοποίηση για την εκτέλεση μιας συγκεκριμένης ενέργειας. Ο χρήστης μπορεί να απαντήσει σε ένα μήνυμα, να επιβεβαιώσει μια εργασία ή να ανοίξει μια συγκεκριμένη οθόνη χωρίς να εισέλθει στην εφαρμογή. Οι ενέργειες εμφανίζονται ως κουμπιά κάτω από το κείμενο της ειδοποίησης ή σε επεκταμένη προβολή κατά το σπροξιμό.
Ο κύριος σκοπός του Notification Action είναι να μειώσει τον αριθμό των βημάτων που χρειάζεται ο χρήστης για να φτάσει τον στόχο του. Αντί να ανοίξει την εφαρμογή και να πλοηγηθεί στην επιθυμητή οθόνη, ο χρήστης κάνει κλικ σέ ένα κουμπί. Οι ερευνες δείχνουν ότι οι εφαρμογές με διαδραστικές ειδοποιήσεις έχουν 25–40% υψηλότερο επίπεδο αρραίωσης σε σύγκριση με τις απλές ειδοποιήσεις.
Στο Android, το Notification Action εμφανίζεται ως εικονίδια-κουμπιά στη συμπυκνή προβολή και ως κουμπιά κειμένου στη επεκταμένη λειτουργία. Στο iOS, οι ενέργειες εμφανίζονται με μάκρη πίεση στην ειδοποίηση ή σπροξιμό προς τα αριστερά. Κάθε πλατφόρμα έχει τις δικές της συστάσεις για τον αριθμό των ενεργειών — το Android συνιστά μέχρι 3, το iOS μέχρι 4.
| Πλατφόρμα | Μεγ. ενέργειες | Τρόπος εμφάνισης | Τύποι ενεργειών |
|---|---|---|---|
| Android | 3 | Εικονίδια + κείμενο | Κουμπιά, εισαγωγή κειμένου |
| iOS | 4 | Μάκρια πίεση / σπροξιμό | Κουμπιά, εισαγωγή κειμένου |
Στο Android, το Notification Action δημιουργείται μέσω του NotificationCompat.Builder χρησιμοποιώντας τη μέθοδο addAction(). Κάθε ενέργεια περιέχει ένα εικονίδιο, κείμενο και ένα PendingIntent που ενεργοποιείται σε κλικ. Από το Android 7.0 (API 24), υποστηρίζεται η άμεση εισαγωγή κειμένου μέσω RemoteInput.
Για να δημιουργήσετε ένα κουμπί σε μια ειδοποίηση, πρέπει να ορίσετε ένα PendingIntent που θα εκκινήσει κατά το κλικ. Το PendingIntent μπορεί να ανοίξει Activity, να εκκινήσει Service ή BroadcastReceiver. Το εικονίδιο της ενέργειας πρέπει να είναι μονοχρωματικό και να συμμορφώνεται με το Material Design.
val acceptIntent = Intent(context, AcceptActionReceiver::class.java)
acceptIntent.putExtra("notification_id", notificationId)
val acceptPendingIntent = PendingIntent.getBroadcast(
context, requestCode,
acceptIntent, PendingIntent.FLAG_UPDATE_CURRENT
)
val notification = NotificationCompat.Builder(context, CHANNEL_ID)
.setSmallIcon(R.drawable.ic_notification)
.setContentTitle("Αίτημα επιβεβαίωσης")
.setContentText("Επιβεβαιώστε την εκτέλεση της εργασίας")
.addAction(R.drawable.ic_accept, "Επιβεβαίωση", acceptPendingIntent)
.build()
Για σενάρια που απαιτούν εισαγωγή κειμένου (π.χ. απάντηση σε μήνυμα), το Android παρέχει RemoteInput. Ο χρήστης εισάγει κείμενο απευθείας στην ειδοποίηση και η εφαρμογή το λαμβάνει χωρίς να ανοίξει Activity. Το RemoteInput υποστηρίζεται σε Android 7.0+ και απαιτεί ρητή διαχείριση σε BroadcastReceiver ή Service.
val remoteInput = RemoteInput.Builder("reply_input")
.setLabel("Εισάγετε απάντηση")
.build()
val replyAction = NotificationCompat.Action.Builder(
R.drawable.ic_reply, "Απάντηση", replyPendingIntent
)
.addRemoteInput(remoteInput)
.build()
val notification = NotificationCompat.Builder(context, CHANNEL_ID)
.addAction(replyAction)
.build()
Κατά το κλικ σε μια ενέργεια, το σύστημα εκκινεί το καθορισμένο PendingIntent. Για να λάβετε το κείμενο που εισάχθηκε από το RemoteInput, καλέστε το RemoteInput.getResultsFromIntent(intent). Συνιστάται η επεξεργασία των ενεργειών σε IntentService ή WorkManager για να μην μπλοκάρεται το νήμα UI.
Στο iOS, το Notification Action υλοποιείται μέσω του UserNotifications framework. Ο πραγματοποιητής δημιουργεί κατηγορίες ενεργειών (UNNotificationCategory) και τις καταχωρεί κατά την εκκίνηση της εφαρμογής. Κάθε ενέργεια ορίζεται από ένα αντικείμενο UNNotificationAction με εναμαρτητικό κειμενοτεαχνητή.
Για να προσθέσετε ενέργειες σε push ειδοποιήσεις στο iOS, πρέπει να δημιουργήσετε μια κατηγορία που ομαδοποιεί σχετικές ενέργειες. Η κατηγορία καθορίζεται στο φορτίο της ειδοποίησης μέσω του πεδίου category. Κατά τη λήψη της ειδοποίησης, το σύστημα εμφανίζει τις διαθέσιμες ενέργειες από την καθορισμένη κατηγορία.
import UserNotifications
class NotificationSetup {
func registerNotificationCategories() {
let approveAction = UNNotificationAction(
identifier: "APPROVE_ACTION",
title: "Επιβεβαίωση",
options: [.foreground]
)
let declineAction = UNNotificationAction(
identifier: "DECLINE_ACTION",
title: "Απόρριψη",
options: [.destructive]
)
let category = UNNotificationCategory(
identifier: "REQUEST_CATEGORY",
actions: [approveAction, declineAction],
intentIdentifiers: [],
options: []
)
UNUserNotificationCenter.current()
.setNotificationCategories([category])
}
}
Όταν ο χρήστης κάνει κλικ σε μια ενέργεια, το σύστημα καλεί τη μέθοδο userNotificationCenter:didReceiveNotificationResponse στον αντιπρόσωπο του UNUserNotificationCenter. Το response.actionIdentifier περιέχει τον κειμενοτεαχνητή της εκτελεσμένης ενέργειας. Για εισαγωγή κειμένου, χρησιμοποιείται το UNTextInputNotificationAction που παρέχει το κείμενο που εισήγαγε ο χρήστης.
extension AppDelegate: UNUserNotificationCenterDelegate {
func userNotificationCenter(
center: UNUserNotificationCenter,
didReceive response: UNNotificationResponse,
withCompletionHandler completionHandler: @escaping () -> Void
) {
switch response.actionIdentifier {
case "APPROVE_ACTION":
Log.d("Action: approved")
case "DECLINE_ACTION":
Log.d("Action: declined")
case UNNotificationDefaultActionIdentifier:
Log.d("Action: opened app")
default:
break
}
completionHandler()
}
}
Το Notification Action ταξινομείται βάσει του τύπου αλληλεπίδρασης και του σεναρίου χρήσης. Η σωστή επιλογή τύπου ενέργειας επηρεάζει άμεσα την εμπειρία χρήστη και τη μετατροπή σε ενέργεια-στόχο.
Ο πιο συνηθισμένος τύπος — ένα κουμπί που ανοίγει την εφαρμογή σε μια συγκεκριμένη οθόνη. Στο Android χρησιμοποιείται PendingIntent.getActivity(), στο iOS — η επιλογή .foreground για το UNNotificationAction. Εφαρμόζεται σε ενέργειες που απαιτούν πλήρη διεπαφή, π.χ. προβολή λεπτομερειών παραγγελίας.
Ενέργειες που εκτελούνται χωρίς να ανοίξει την εφαρμογή. Στο Android χρησιμοποιείται PendingIntent.getBroadcast() ή PendingIntent.getService(). Στο iOS — επιλογή .authenticationRequired ή χωρίς .foreground. Παραδείγματα: σήμανση εργασίας ως ολοκληρωμένης, προτίμηση ανάρτησης, προσθήκη σε αγαπημένα.
Επιτρέπει στον χρήστη να εισάγει κείμενο απευθείας στην ειδοποίηση. Στο Android υλοποιείται μέσω RemoteInput, στο iOS μέσω UNTextInputNotificationAction. Χρησιμοποιείται για απαντήσεις σε μηνύματα, σχόλια, εισαγωγή κωδικών εφάπαξ επιβεβαίωσης.
Ενέργειες που τροποποιούν αναποστρέφως τα δεδομένα — διαγραφή, απόρριψη, φράξιμο. Στο Android εξέχονται οπτικά (κόκκινο χρώμα σε ορισμένα συστήματα), στο iOS απαιτούν την επιλογή .destructive. Συνιστάται η ζήτηση επιβεβαίωσης για καταστροφικές ενέργειες, π.χ. μέσω επιπλέον διαλόγου ή δεύτερου κλικ.
Μια ξεχωριστή κλάση ενεργειών — εισαγωγή κειμένου απευθείας από την ειδοποίηση. Στο Android υλοποιείται μέσω RemoteInput σε συνδυασμό με PendingIntent. Στο iOS χρησιμοποιείται το UNTextInputNotificationAction που κληρονομεί από το UNNotificationAction. Τέτοιες ενέργειες χρησιμοποιούνται για γρήγορες απαντήσεις σε εφαρμογές μηνυμάτων, εισαγωγή προωθητικών κωδικών, συμπλήρωση φυλλών ανάδρασης ή αξιολόγηση ποιότητας υπηρεσίας. Το κείμενο που εισάγεται μεταβιβάζεται στην εφαρμογή μαζί με τον κειμενοτεαχνητή της ενέργειας. Για σωστή επεξεργασία της εισαγωγής κειμένου και στις δύο πλατφόρμες, πρέπει να υλοποιηθεί η ανάλυση των εισαχθέντων δεδομένων και η επικύρωση πριν από την εκτέλεση της ενέργειας-στόχου.
Ο σωστός χειρισμός του Notification Action είναι κριτικός για την αναλυτική και την εμπειρία χρήστη. Κάθε κλικ πρέπει να καταγράφεται και η ενέργεια να εκτελείται αξιόπιστα, ακόμη και αν η εφαρμογή ήταν κλειστή.
Παρακολουθήστε κάθε κλικ σε Notification Action μέσω του συστήματος αναλυτικής. Τα Firebase Analytics, Mixpanel ή Yandex.Metrica επιτρέπουν την καταγραφή του κειμενοτεαχνήτη της ενέργειας, της ώρας κλικ και του πλαισίου της ειδοποίησης. Αυτά τα δεδομένα βοηθούν στην βελτιστοποίηση της στρατηγικής ειδοποιήσεων και στην αύξηση της αρραίωσης. Οι δοκιμές A/B με διαφορετικά σύνολα ενεργειών βοηθούν στον προσδιορισμό των πιο αποτελεσματικών σεναρίων αλληλεπίδρασης με τον χρήστη.
Αν η εφαρμογή είναι κλειστή, το σύστημα εξακολουθεί να παρέχει Intent ή UNNotificationResponse κατά το κλικ σε μια ενέργεια. Στο Android χρησιμοποιήστε BroadcastReceiver για εγγυημένη επεξεργασία. Στο iOS, το σύστημα εκκινεί την εφαρμογή στο υπόβαθρο και μεταβιβάζει την απάντηση στον αντιπρόσωπο. Για κρίσιμες ενέργειες (επιβεβαίωση πληρωμής, εξουσιοδότηση), προσθέστε έναν μηχανισμό επανάληψης και ειδοποίηση στον χρήστη για επιτυχημένη εκτέλεση.
Από το Android 7.0, ο πραγματοποιητής μπορεί να επηρεάσει την εμφάνιση του Notification Action μέσω εικονιδίων και χρωμάτων. Τα εικονίδια πρέπει να είναι μονοχρωματικά (κανάλι άλφα), με μέγεθος 24x24 dp. Στο iOS, η προσαρμογή κουμπιών είναι περιορισμένη — χρησιμοποιούνται χρώματα και γραμματοσειρές συστήματος. Το Material Design συνιστά την ομαδοποίηση των ενεργειών κατά προτεραιότητα: η πιο σημαντική ενέργεια πρώτη, οι καταστροφικές τελευταίες.
Συχνές ερωτήσεις
Στο Android συνιστάται μέχρι 3 ενέργειες, στο iOS μέχρι 4. Η υπέρβαση του ορίου οδηγεί στο να μην εμφανίζονται ορισμένες ενέργειες ή να κρύβονται σε υπομενού.
Το εικονίδιο μεταβιβάζεται στο NotificationCompat.Action.Builder ως πόρος drawable. Το εικονίδιο πρέπει να είναι μονοχρωματικό (κανάλι άλφα), με μέγεθος 24x24 dp και να συμμορφώνεται με τις οδηγίες Material Design.
Ναι, εάν η ειδοποίηση εμφανίζεται σε κλειδωμένη οθόνη και η σημαία visibility έχει οριστεί σε VISIBILITY_PUBLIC. Στο iOS, απαιτείται η επιλογή .authenticationRequired για ενέργειες που απαιτούν εξουσιοδότηση.
Στο Android, το σύστημα αναδημιουργεί τη διεργασία και παρέχει το Intent. Στο iOS, το σύστημα εκκινεί την εφαρμογή στο υπόβαθρο. Η παράδοση μπορεί να εγγυηθεί με BroadcastReceiver στο Android και UNNotificationServiceExtension στο iOS.
Στο Android, οι ενέργειες είναι άμεσα ορατές κάτω από την ειδοποίηση ως εικονίδια. Στο iOS, οι ενέργειες είναι κρυμμένες πίσω από μάκρια πίεση ή σπροξιμό. Το σχεδίο UX των ειδοποιήσεων πρέπει να λαμβάνει υπόψη αυτές τις διαφορές πλατφόρμας.
Σύνοψη
Θα αναπτύξουμε μια εφαρμογή για κινητά έτοιμη για χρήση
Η IT Sectr δημιουργεί εφαρμογές iOS και Android για νεοφυείς επιχειρήσεις και επιχειρήσεις από το 2017. Θα σας συμβουλεύσουμε και θα προτείνουμε την καλύτερη λύση.
Διαβάστε επίσης