Τοπικές ειδοποιήσεις στην ανάπτυξη κινητού: ουσία, τι τύποι υπάρχουν και πώς λειτουργούν

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

Η τοπική ειδοποίηση είναι ένα μήνυμα που στέλνει η εφαρμογή στον χρήστη χωρίς τη συμμετοχή απομακρυσμένου διακομιστή. Όλα τα δεδομένα επεξεργάζονται και εμφανίζονται απευθείας στη συσκευή του παραλήπτη. Ένας τέτοιος μηχανισμός είναι κατάλληλος για υπενθυμίσεις, χρονοδιακόπτες και ξυπνητήρια όταν η εφαρμογή βρίσκεται στο παρασκήνιο ή είναι κλειστή. Σύμφωνα με το Apple Developer Documentation, το UNUserNotificationCenter παρέχει κεντρική διαχείριση των τοπικών ειδοποιήσεων στο iOS.

Κύρια σημεία

  • Τοπική ειδοποίηση — ένα μήνυμα που προγραμματίζεται και παραδίδεται από τη συσκευή χωρίς τη συμμετοχή διακομιστή
  • Πλατφόρμες — το Android χρησιμοποιεί NotificationManager, το iOS χρησιμοποιεί UNUserNotificationCenter
  • Προγραμματισμός — οι ειδοποιήσεις μπορούν να καθυστερήσουν με βάση τον χρόνο, τη γεωτοποθεσία ή το ημερολόγιο
  • Περιορισμοί — οι τοπικές ειδοποιήσεις δεν λειτουργούν μεταξύ συσκευών και απαιτούν ξεχωριστή λογική συγχρονισμού
  • UX — οι σωστά ρυθμισμένες ειδοποιήσεις αυξάνουν την αφοσίωση και επαναφέρουν τον χρήστη στην εφαρμογή

Τι είναι μια τοπική ειδοποίηση;

Μια τοπική ειδοποίηση είναι ένα μήνυμα ενεργοποίησης που δημιουργείται και εμφανίζεται από το λειτουργικό σύστημα στην ίδια συσκευή όπου είναι εγκατεστημένη η εφαρμογή. Σε αντίθεση με τις push ειδοποιήσεις, οι τοπικές δεν περνούν μέσω εξωτερικού διακομιστή — όλη η λογική προγραμματισμού εκτελείται στην πλευρά του πελάτη.

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

Το σύστημα εγγυάται την παράδοση της τοπικής ειδοποίησης ακόμη και χωρίς δίκτυο. Αυτό είναι ένα βασικό πλεονέκτημα έναντι των push ειδοποιήσεων που απαιτούν σταθερή σύνδεση στο διαδίκτυο και λειτουργικό διακομιστή.

Κύρια συστατικά του αιτήματος

Κάθε τοπική ειδοποίηση αποτελείται από τρία μέρη: περιεχόμενο (τίτλος, σώμα, ήχος), ενεργοποιητή (χρονική ή γεω-συνθήκη) και αναγνωριστικό αιτήματος. Το αναγνωριστικό επιτρέπει την ακύρωση ή ενημέρωση της ειδοποίησης πριν από την παράδοσή της.

Ο προγραμματιστής μπορεί να ορίσει έως 64 τοπικές ειδοποιήσεις για μία εφαρμογή στο iOS και απεριόριστο αριθμό στο Android. Η διαφορά οφείλεται σε αρχιτεκτονικούς περιορισμούς των λειτουργικών συστημάτων.

Πώς λειτουργούν οι τοπικές ειδοποιήσεις στο iOS και Android;

Και οι δύο πλατφόρμες παρέχουν τα δικά τους API για εργασία με τοπικές ειδοποιήσεις. Στο iOS το κεντρικό στοιχείο είναι το UNUserNotificationCenter, στο Android — το NotificationManager. Παρά τις διαφορετικές διεπαφές, η λογική είναι η ίδια: η εφαρμογή δημιουργεί ένα αίτημα, το καταχωρεί στο σύστημα και το λειτουργικό σύστημα παραδίδει την ειδοποίηση την καθορισμένη στιγμή.

Το iOS χρησιμοποιεί UNCalendarNotificationTrigger για ημερολογιακά συμβάντα, UNTimeIntervalNotificationTrigger για χρονικά διαστήματα και UNLocationNotificationTrigger για γεωτοποθεσία. Το Android προσφέρει AlarmManager, WorkManager και ακριβή προγραμματισμό μέσω setExact.

Από το Android 12 — το SCHEDULE_EXACT_ALARM απαιτεί ειδική άδεια από τον χρήστη. Στο iOS η άδεια ζητείται μία φορά μέσω UNUserNotificationCenter.requestAuthorization και ο χρήστης επιλέγει το επίπεδο πρόσβασης: banners, ήχοι, εικονίδια.

Τύποι τοπικών ειδοποιήσεων

Οι τοπικές ειδοποιήσεις ταξινομούνται ανά τύπο ενεργοποιητή, όχι ανά περιεχόμενο. Κάθε τύπος καθορίζει πότε και υπό ποιες συνθήκες θα εμφανιστεί η ειδοποίηση στον χρήστη.

Σύγκριση ενεργοποιητών ανά πλατφόρμα

Στο iOS και Android οι τύποι ενεργοποιητών υλοποιούνται διαφορετικά, αν και η λογική ταξινόμηση είναι η ίδια. Το iOS χρησιμοποιεί UNCalendarNotificationTrigger για ημερομηνίες, UNTimeIntervalNotificationTrigger για χρονικά διαστήματα και UNLocationNotificationTrigger για γεωτοποθεσία. Το Android προσφέρει AlarmManager με setExact και setRepeating, καθώς και WorkManager για καθυστερημένες εργασίες.

Τύπος ενεργοποιητήΠεριγραφήΠαράδειγμα
Χρονικό διάστημαΕιδοποίηση μετά από N δευτερόλεπτα από την εκκίνησηΧρονοδιακόπτης αντίστροφης μέτρησης
Ημερολογιακή ημερομηνίαΕιδοποίηση σε συγκεκριμένη ώρα και ημερομηνίαΥπενθύμιση συνάντησης
ΓεωτοποθεσίαΕιδοποίηση κατά την είσοδο/έξοδο από μια περιοχήΥπενθύμιση κοντά στο κατάστημα
Χωρίς όρουςΆμεση παράδοση κατά την κλήση APIΕιδοποίηση λήψης

Στο iOS είναι επίσης διαθέσιμο το UNNotificationAttachment — συνημμένο εικόνας, ήχου ή βίντεο στο σώμα της ειδοποίησης. Το Android υποστηρίζει προσαρμοσμένα πρότυπα με κουμπιά και μεγάλες εικόνες μέσω NotificationCompat.Style.

Η επιλογή ενεργοποιητή εξαρτάται από το σενάριο: οι ημερολογιακές υπενθυμίσεις λειτουργούν καλύτερα μέσω ημερολογιακού ενεργοποιητή και οι γεω-υπενθυμίσεις — μέσω γεωτοποθεσίας. Οι ενεργοποιητές χρονικού διαστήματος είναι κατάλληλοι για τακτικά συμβάντα με σταθερή περίοδο.

Συμπεριφορά ενεργοποιητών στο παρασκήνιο

Στο iOS οι τοπικές ειδοποιήσεις παραδίδονται από το σύστημα ακόμη και όταν η εφαρμογή είναι κλειστή — το UNUserNotificationCenter διαχειρίζεται την ουρά ανεξάρτητα. Στο Android η παράδοση εξαρτάται από τον επιλεγμένο μηχανισμό: το AlarmManager ενεργοποιείται ακόμη και με κλειστή οθόνη, ενώ το WorkManager λαμβάνει υπόψη την εξοικονόμηση ενέργειας.

Σενάρια χρήσης σε εφαρμογές κινητού

Οι τοπικές ειδοποιήσεις λύνουν προβλήματα όπου η εξωτερική υποδομή είναι περιττή ή μη διαθέσιμη. Κύρια σενάρια: υπενθυμίσεις, χρονοδιακόπτες, εκπαιδευτικές συμβουλές και καθυστερημένες ενέργειες.

  • Υπενθυμίσεις — η εφαρμογή ημερολογίου δημιουργεί μια τοπική ειδοποίηση σε συγκεκριμένη ημερομηνία συμβάντος
  • Εκπαιδευτικές συμβουλές — μια μέρα μετά την εγκατάσταση, η εφαρμογή εμφανίζει μια συμβουλή για την οθόνη
  • Χρονοδιακόπτες — ο χρονοδιακόπτης κουζίνας ενεργοποιείται μετά από καθορισμένο χρόνο ακόμη και με κλειστή εφαρμογή
  • Πρόοδος λειτουργιών — ειδοποίηση για την ολοκλήρωση λήψης ή εξαγωγής δεδομένων

Έρευνες της Localytics δείχνουν ότι οι εφαρμογές που χρησιμοποιούν τοπικές υπενθυμίσεις διατηρούν 35% περισσότερους χρήστες την πρώτη εβδομάδα μετά την εγκατάσταση. Αυτό καθιστά τις τοπικές ειδοποιήσεις ένα ισχυρό εργαλείο onboarding.

Είναι σημαντικό να μην γίνεται κατάχρηση της συχνότητας — το σύστημα ομαδοποιεί μόνο του τις ειδοποιήσεις από μία εφαρμογή και ο χρήστης μπορεί να απενεργοποιήσει όλες τις τοπικές ειδοποιήσεις αν τον ενοχλούν. Η βέλτιστη συχνότητα δεν είναι περισσότερες από 2–3 ειδοποιήσεις την ημέρα για μη κρίσιμα συμβάντα.

Παράδειγμα προγραμματισμού στο Android

Για τον προγραμματισμό μιας τοπικής ειδοποίησης στο Android χρησιμοποιήστε το NotificationManager μαζί με το AlarmManager. Από το Android 8+ πρέπει πρώτα να δημιουργηθεί ένα κανάλι ειδοποιήσεων, διαφορετικά η ειδοποίηση δεν θα εμφανιστεί.

kotlin
val channelId = "reminder_channel"
val notificationId = "task_reminder_42"

val channel = NotificationChannel(
    channelId,
    "Υπενθυμίσεις",
    NotificationManager.IMPORTANCE_HIGH
).apply {
    description = "Κανάλι για υπενθυμίσεις εργασιών"
}

val manager = getSystemService(NotificationManager::class.java)
manager.createNotificationChannel(channel)

val intent = Intent(this, ReminderReceiver::class.java).apply {
    putExtra("notification_id", notificationId)
    putExtra("channel_id", channelId)
}

val pendingIntent = PendingIntent.getBroadcast(
    this, notificationId.hashCode(),
    intent, PendingIntent.FLAG_UPDATE_CURRENT
)

val alarmManager = getSystemService(AlarmManager::class.java)
alarmManager.setExact(
    AlarmManager.RTC_WAKEUP,
    triggerTimeMillis,
    pendingIntent
)

Στο Android 12+ ελέγξτε την άδεια SCHEDULE_EXACT_ALARM πριν καλέσετε το setExact. Εάν δεν έχει δοθεί η άδεια — χρησιμοποιήστε το setWindow που εγγυάται την παράδοση εντός χρονικού παραθύρου.

Επεξεργασία σε BroadcastReceiver

Όταν ενεργοποιείται το AlarmManager, το σύστημα στέλνει ένα broadcast Intent που λαμβάνεται από το BroadcastReceiver. Μέσα σε αυτό πρέπει να δημιουργηθεί και να εμφανιστεί η ειδοποίηση μέσω του NotificationManager. Βεβαιωθείτε ότι το PendingIntent χρησιμοποιεί FLAG_UPDATE_CURRENT, διαφορετικά όταν αλλάξουν τα δεδομένα οι παλιές ειδοποιήσεις θα συνεχίσουν να χρησιμοποιούν το παλιό Intent.

Παράδειγμα προγραμματισμού στο iOS

Στο iOS οι τοπικές ειδοποιήσεις δημιουργούνται μέσω του UNUserNotificationCenter χρησιμοποιώντας UNMutableNotificationContent και έναν από τους ενεργοποιητές. Πριν από τον προγραμματισμό πρέπει να ζητηθεί άδεια από τον χρήστη.

swift
import UserNotifications

let center = UNUserNotificationCenter.current()

center.requestAuthorization(options: [.alert, .sound, .badge]) { granted, error in
    guard granted else { return }
}

let content = UNMutableNotificationContent()
content.title = "Υπενθύμιση εργασίας"
content.body = "Μην ξεχάσετε να ολοκληρώσετε την αναφορά έως τις 18:00"
content.sound = .default
content.userInfo = ["task_id": "42"]

let trigger = UNTimeIntervalNotificationTrigger(
    timeInterval: 3600,
    repeats: false
)

let request = UNNotificationRequest(
    identifier: "task_reminder_42",
    content: content,
    trigger: trigger
)

center.add(request)

Το iOS υποστηρίζει έως 64 ταυτόχρονα αιτήματα τοπικών ειδοποιήσεων. Εάν ξεπεραστεί το όριο — το σύστημα απορρίπτει νέα αιτήματα έως ότου τα ενεργά αιτήματα παραδοθούν ή ακυρωθούν. Χρησιμοποιήστε το getPendingNotificationRequests για να ελέγξετε την τρέχουσα ουρά.

Επεξεργασία απόκρισης αντιπροσώπου

Όταν ο χρήστης αλληλεπιδρά με μια τοπική ειδοποίηση iOS, καλείται η μέθοδος userNotificationCenter:didReceive response του αντιπροσώπου UNUserNotificationCenterDelegate. Σε αυτήν τη μέθοδο είναι διαθέσιμα το αναγνωριστικό αιτήματος, το actionIdentifier (ποιο κουμπί πατήθηκε) και τα προσαρμοσμένα userInfo. Αυτό επιτρέπει τη διάκριση μεταξύ απλού ανοίγματος της ειδοποίησης και πατήματος ενός συγκεκριμένου κουμπιού ενέργειας.

Βέλτιστες πρακτικές τοπικών ειδοποιήσεων

Για να είναι οι τοπικές ειδοποιήσεις χρήσιμες και να μην ενοχλούν τον χρήστη, ακολουθήστε μερικούς βασικούς κανόνες. Πρώτον: ελέγξτε τη συχνότητα — όχι περισσότερες από 2–3 ειδοποιήσεις την ημέρα για μη κρίσιμα συμβάντα, διαφορετικά ο χρήστης θα απενεργοποιήσει όλες τις ειδοποιήσεις της εφαρμογής.

Δεύτερον: δώστε επιλογή στον χρήστη. Προσθέστε στη διεπαφή τη δυνατότητα απενεργοποίησης συγκεκριμένων τύπων τοπικών ειδοποιήσεων. Στο Android γι' αυτό είναι βολικό να χρησιμοποιήσετε ξεχωριστό NotificationChannel με χαμηλή σημασία, στο iOS — ξεχωριστή κατηγορία στις ρυθμίσεις της εφαρμογής.

Τρίτον: συμφραζόμενη συνάφεια — η ειδοποίηση πρέπει να εμφανίζεται όταν τη χρειάζεται ο χρήστης. Οι γεω-ενεργοποιητές είναι ιδανικοί για υπενθυμίσεις υποχρεώσεων κοντά στο σπίτι, οι ημερολογιακοί — για συναντήσεις, οι ενεργοποιητές χρονικού διαστήματος — για τακτικές ενέργειες όπως το ποτό νερού ή οι διατάσεις. Μην αναμιγνύετε τους τύπους χωρίς ανάγκη.

Τέταρτον: δοκιμάστε σε πραγματικές συσκευές. Ο προσομοιωτής iOS δεν εξομοιώνει όλα τα σενάρια παράδοσης τοπικών ειδοποιήσεων, ειδικά στο παρασκήνιο. Στο Android χρησιμοποιήστε την adb shell dumpsys notification για να ελέγξετε την ουρά των προγραμματισμένων ειδοποιήσεων και τις παραμέτρους τους. Πέμπτον: πάντα να παρέχετε στον χρήστη τη δυνατότητα απενεργοποίησης των ειδοποιήσεων μέσω της διεπαφής της εφαρμογής — αυτή είναι υποχρεωτική απαίτηση UX και των οδηγιών App Store Review.

Συχνές Ερωτήσεις

Σε τι διαφέρει η τοπική ειδοποίηση από την push;

Η τοπική ειδοποίηση προγραμματίζεται και παραδίδεται από τη συσκευή χωρίς τη συμμετοχή διακομιστή. Η push ειδοποίηση απαιτεί εξωτερική υπηρεσία (FCM, APNS) και σύνδεση στο διαδίκτυο. Οι τοπικές λειτουργούν εκτός σύνδεσης, οι push — μόνο με πρόσβαση στο δίκτυο.

Πόσες τοπικές ειδοποιήσεις μπορούν να προγραμματιστούν;

Το iOS περιορίζει σε 64 ταυτόχρονα προγραμματισμένα αιτήματα. Το Android δεν έχει αυστηρό όριο, αλλά πάνω από 500 ειδοποιήσεις μπορεί να μειώσουν την απόδοση του συστήματος και να επηρεάσουν τον χρόνο παράδοσης.

Μπορεί να ακυρωθεί μια τοπική ειδοποίηση μετά τον προγραμματισμό;

Ναι, στο iOS χρησιμοποιήστε την removePendingNotificationRequests με το αναγνωριστικό αιτήματος. Στο Android καλέστε την NotificationManager.cancel ή ακυρώστε το PendingIntent μέσω AlarmManager. Το μοναδικό αναγνωριστικό είναι υποχρεωτικό για ακύρωση.

Απαιτείται άδεια χρήστη για τοπικές ειδοποιήσεις;

Στο iOS η άδεια ζητείται υποχρεωτικά μέσω requestAuthorization. Στο Android 13+ (Tiramisu) απαιτείται επίσης η άδεια POST_NOTIFICATIONS. Οι παλαιότερες εκδόσεις Android δεν απαιτούν ρητή άδεια για τοπικές ειδοποιήσεις.

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

Στο iOS δημιουργήστε UNNotificationAction και προσθέστε την στο UNNotificationCategory. Στο Android χρησιμοποιήστε την NotificationCompat.Builder.addAction με PendingIntent για BroadcastReceiver. Κάθε κουμπί ενεργοποιεί μια ξεχωριστή ενέργεια στην εφαρμογή.

Σύνοψη

  • Τοπικές ειδοποιήσεις — μηνύματα που προγραμματίζονται και παραδίδονται από τη συσκευή χωρίς υποδομή διακομιστή
  • UNUserNotificationCenter — το κύριο API για εργασία με τοπικές ειδοποιήσεις στο iOS
  • NotificationManager — το κύριο API για εργασία με τοπικές ειδοποιήσεις στο Android
  • Τύποι ενεργοποιητών — χρονικό διάστημα, ημερολογιακή ημερομηνία, γεωτοποθεσία και παράδοση χωρίς όρους
  • Όρια — το iOS περιορίζει σε 64 προγραμματισμένα αιτήματα, το Android δεν έχει αυστηρό όριο
  • Άδειες — στο iOS και Android 13+ απαιτείται ρητή συγκατάθεση του χρήστη για την εμφάνιση ειδοποιήσεων
  • Εκτός σύνδεσης — οι τοπικές ειδοποιήσεις λειτουργούν χωρίς σύνδεση στο διαδίκτυο, καθιστώντας τες πιο αξιόπιστες από τις push

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

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

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

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