Οι Push ειδοποιήσεις είναι μηνύματα που στέλνει ο διακομιστής στην κινητή συσκευή ακόμα και όταν η εφαρμογή είναι κλειστή. Σύμφωνα με δεδομένα του Google Firebase, 2024, οι Push ειδοποιήσεις επεξεργάζονται μέσω εξειδικευμένων υπηρεσιών — FCM σε Android και APNS σε iOS, οι οποίες υποστηρίζουν παράδοση σε πραγματικό χρόνο σε εκατομμύρια συσκευές ταυτόχρονα. Έχουν γίνει αναπόσπαστο μέρος της εμπειρίας χρήστη σε σύγχρονες εφαρμογές κινητών.
Κύρια σημεία
Οι Push ειδοποιήσεις είναι σύντομα μηνύματα που στέλνει ο διακομιστής εφαρμογής στη συσκευή του χρήστη χωρίς ρητή αίτησή του. Εμφανίζονται ως banners, εικονίδια σήμανσης ή ηχητικά σήματα, προσελκύοντας την προσοχή του χρήστη στην εφαρμογή και ενημερώνοντας για σημαντικά γεγονότα.
Μια Push ειδοποίηση αποτελείται από τίτλο, σώμα μηνύματος και προαιρετικά δεδομένα (payload). Σε αντίθεση με τα SMS, οι Push ειδοποιήσεις είναι δωρεάν για τον χρήστη και παραδίδονται μέσω υποδομής υπηρεσιών cloud — FCM για Android και APNS για iOS. Οι κύριοι σκοποί των Push ειδοποιήσεων: αύξηση αφοσίωσης, ενημέρωση για γεγονότα και επαναφορά του χρήστη στην εφαρμογή.
Τα στατιστικά χρήσης δείχνουν ότι οι σωστά ρυθμισμένες Push ειδοποιήσεις αυξάνουν τη διατήρηση εφαρμογής κατά 30-60%. Ωστόσο, η υπερβολική συχνότητα ειδοποιήσεων οδηγεί σε ακυρώσεις εγγραφής — πάνω από το 60% των χρηστών απενεργοποιεί τις ειδοποιήσεις αν αποστέλλονται περισσότερες από τρεις φορές την ημέρα.
Το Push σύστημα περιλαμβάνει τρία στοιχεία: τον διακομιστή εφαρμογής (app server), την υπηρεσία πλατφόρμας (FCM/APNS) και την εφαρμογή-πελάτη στη συσκευή. Ο διακομιστής στέλνει αίτημα στην υπηρεσία πλατφόρμας, η οποία παραδίδει την ειδοποίηση στη συσκευή-στόχο μέσω μόνιμης σύνδεσης με το λειτουργικό σύστημα.
Ο μηχανισμός παράδοσης των Push ειδοποιήσεων βασίζεται σε μόνιμη σύνδεση μεταξύ της συσκευής και της υπηρεσίας πλατφόρμας. Το λειτουργικό σύστημα διατηρεί ένα κρυπτογραφημένο κανάλι επικοινωνίας μέσω του οποίου περνούν όλα τα Push μηνύματα.
Κατά την πρώτη εκκίνηση, η εφαρμογή ζητά άδεια αποστολής ειδοποιήσεων και λαμβάνει ένα μοναδικό token συσκευής από το FCM ή το APNS. Αυτό το token είναι μια συμβολοσειρά μήκους έως 4 KB που αναγνωρίζει μοναδικά την παρουσία της εφαρμογής. Το token αλλάζει κατά την επανεγκατάσταση της εφαρμογής ή την επαναφορά της συσκευής από αντίγραφο ασφαλείας.
class FirebaseMessagingService :
FirebaseMessagingService() {
override fun onNewToken(token: String) {
sendTokenToServer(token)
}
override fun onMessageReceived(
message: RemoteMessage
) {
showNotification(message.notification)
}
}
Ο διακομιστής εφαρμογής στέλνει ένα HTTP αίτημα στο FCM API ή APNS API, προσδιορίζοντας το token-στόχο, τον τίτλο, το σώμα και τα πρόσθετα δεδομένα. Η υπηρεσία πλατφόρμας απαντά με την κατάσταση παράδοσης: success, invalid token (η συσκευή διέγραψε την εφαρμογή) ή rate-limited (υπέρβαση συχνότητας αποστολής).
fetch("https://fcm.googleapis.com/fcm/send", {
method: "POST",
headers: {
"Authorization": "key=AIzaSy...",
"Content-Type": "application/json"
},
body: JSON.stringify({
to: "device_token_here",
notification: {
title: "στείλτε το token στον δικό σας διακομιστή",
body: "Έχετε μια νέα ειδοποίηση!"
}
})
})
Η επιλογή μεταξύ FCM και APNS εξαρτάται από την πλατφόρμα-στόχο. Το FCM υποστηρίζει Android και iOS, το APNS — μόνο το οικοσύστημα Apple. Ας δούμε τις βασικές διαφορές που είναι σημαντικές για την ανάπτυξη cross-platform εφαρμογών κινητών.
Το FCM είναι η υπηρεσία Google που λειτουργεί πάνω από το Google Play Services. Υποστηρίζει δύο σχήματα παράδοσης: ειδοποιήσεις με αυτόματη εμφάνιση (display notifications) και ειδοποιήσεις δεδομένων που επεξεργάζεται η ίδια η εφαρμογή. Το FCM είναι δωρεάν και δεν έχει περιορισμούς στον αριθμό των αποστελλόμενων μηνυμάτων.
Το APNS είναι η υπηρεσία της Apple με υποστήριξη για συνημμένα πολυμέσων (εικόνες, βίντεο, ήχος) έως 10 MB. Για αποστολή μέσω APNS απαιτείται πιστοποιητικό TLS ή κλειδί αυθεντικοποίησης. Το APNS περιορίζει τη συχνότητα αποστολής σε μία συσκευή — όχι περισσότερες από 150 ειδοποιήσεις ανά λεπτό, μετά από το οποίο ενεργοποιείται ο περιορισμός ρυθμού.
| Χαρακτηριστικό | FCM | APNS |
|---|---|---|
| Πλατφόρμες | Android, iOS, Web | iOS, macOS, watchOS |
| Απαιτήσεις | Google Play Services | Apple Developer Program |
| Πολυμέσα | έως 4 KB (δεδομένα) | έως 10 MB (συνημμένα) |
| Προτεραιότητα | normal/high | immediate/power-saving |
| Κόστος | δωρεάν | δωρεάν (απαιτείται λογαριασμός) |
Οι Push ειδοποιήσεις ταξινομούνται ανά τρόπο εμφάνισης και σκοπό. Η κατανόηση των τύπων βοηθά στην επιλογή της σωστής στρατηγικής για κάθε σενάριο αλληλεπίδρασης με τον χρήστη.
Ο πιο συνηθισμένος τύπος — εμφανιζόμενη ειδοποίηση με τίτλο και σώμα. Το λειτουργικό σύστημα την εμφανίζει αυτόματα στο πλαίσιο ειδοποιήσεων, στην οθόνη κλειδώματος και ως banner. Ο προγραμματιστής μπορεί να ρυθμίσει ήχο, δόνηση, σήμανση εικονιδίου και κουμπιά ενέργειας για άμεσες ενέργειες (απάντηση, άνοιγμα, απόρριψη).
Οι ειδοποιήσεις δεδομένων περιέχουν μόνο payload χωρίς οπτική εμφάνιση. Η εφαρμογή τις επεξεργάζεται στο παρασκήνιο: συγχρονίζει δεδομένα, ενημερώνει την προσωρινή μνήμη ή ξεκινά λήψη. Σε Android, οι ειδοποιήσεις δεδομένων παραδίδονται εγγυημένα, σε iOS — μόνο όταν η εφαρμογή είναι ενεργή ή μέσω background fetch.
Τα σύγχρονα κινητά λειτουργικά συστήματα υποστηρίζουν εκτεταμένες και πολυμεσικές ειδοποιήσεις με εικόνες, GIF, βίντεο και ήχο. Σε iOS αυτό υλοποιείται μέσω UNNotificationAttachment, σε Android — μέσω BigPictureStyle και InboxStyle για προσαρμογή της εμφάνισης της ειδοποίησης στο πλαίσιο συστήματος.
Οι σιωπηλές ειδοποιήσεις δεν εμφανίζονται στον χρήστη και χρησιμοποιούνται για συγχρονισμό παρασκηνίου. Σε iOS έχουν υψηλή προτεραιότητα για εργασίες όπως η ενημέρωση δεδομένων πριν από το άνοιγμα της εφαρμογής. Το Android τις αντιμετωπίζει ως ειδοποιήσεις δεδομένων με ελάχιστη προτεραιότητα.
Η ρύθμιση Push ειδοποιήσεων απαιτεί ενέργειες σε επίπεδο υποδομής, διακομιστή και κώδικα πελάτη. Ας δούμε την τυπική διαδικασία για ένα cross-platform έργο κινητού.
Για Android πρέπει να δημιουργήσετε ένα έργο στο Firebase Console, να προσθέσετε το google-services.json στο έργο και να ρυθμίσετε το FirebaseMessagingService. Το token συσκευής λαμβάνεται μέσω FirebaseInstanceId ή FirebaseMessaging.getInstance().token, στη συνέχεια αποστέλλεται στον διακομιστή μέσω API κατά την πρώτη εκκίνηση ή όταν αλλάζει.
Για iOS απαιτείται συνδρομή στο Apple Developer Program, δημιουργία Push πιστοποιητικού ή κλειδιού APNS στο Developer Portal και ενεργοποίηση του Capability Push Notifications στο Xcode. Η εγγραφή για ειδοποιήσεις γίνεται μέσω UIApplication.shared.registerForRemoteNotifications με λήψη του deviceToken στο AppDelegate.
import UIKit
import UserNotifications
@main
class AppDelegate: UIResponder,
UIApplicationDelegate {
func application(
_ application: UIApplication,
didRegisterForRemoteNotificationsWithDeviceToken
deviceToken: Data
) {
let token = deviceToken
.map { String.format("%02x", $0) }
.joined()
// αποστολή token στον δικό σας διακομιστή
}
}
Από την πλευρά του διακομιστή, οι Push ειδοποιήσεις αποστέλλονται μέσω REST API ή Admin SDK. Για FCM χρησιμοποιείται το Firebase Admin SDK (διαθέσιμο για Node.js, Java, Python, Go), για APNS — βιβλιοθήκες pusher (pushy για Java, apn2 για Node.js). Συνιστάται η αποθήκευση token στη βάση δεδομένων με χρονική σήμανση τελευταίας ενημέρωσης.
Η ασφάλεια των Push ειδοποιήσεων είναι κρίσιμη, καθώς μέσω αυτών μπορούν να μεταδοθούν εμπιστευτικά δεδομένα. Και οι δύο πλατφόρμες παρέχουν βασικούς μηχανισμούς προστασίας, αλλά ο προγραμματιστής πρέπει να τους χρησιμοποιεί σωστά.
Το payload της Push ειδοποίησης μπορεί να περιέχει προσωπικά δεδομένα χρηστών: ονόματα, ποσά συναλλαγών, συνδέσμους προς μηνύματα. Ακόμα κι αν το κανάλι επικοινωνίας μεταξύ FCM/APNS και συσκευής είναι κρυπτογραφημένο, τα δεδομένα μπορεί να υποκλαπούν σε επίπεδο εφαρμογής κατά την υποκλοπή της ειδοποίησης από λογισμικό τρίτων. Συνιστάται η κρυπτογράφηση ευαίσθητου payload στον διακομιστή με αλγόριθμο AES-256 και η αποκρυπτογράφηση στη συσκευή με κλειδί που αποθηκεύεται στο Keychain (iOS) ή EncryptedSharedPreferences (Android).
Το token συσκευής είναι ένα αναγνωριστικό περιόδου σύνδεσης που μπορεί να παραβιαστεί κατά την παραβίαση της συσκευής ή την υποκλοπή κίνησης. Ο διακομιστής εφαρμογής πρέπει να ελέγχει τα token πριν από την αποστολή: να τα συγκρίνει με τη βάση δεδομένων, να παρακολουθεί ανενεργά token και να τα διαγράφει σε επαναλαμβανόμενα σφάλματα InvalidToken. Τα FCM και APNS επιστρέφουν κατάσταση InvalidRegistration για μη έγκυρα token — μην το αγνοείτε.
Χωρίς έλεγχο συχνότητας, οι Push ειδοποιήσεις μπορούν να γίνουν εργαλείο ανεπιθύμητης αλληλογραφίας που ενοχλεί τους χρήστες και μειώνει τη διατήρηση. Ορίστε όρια στον διακομιστή: όχι περισσότερες από 5 ειδοποιήσεις την ώρα σε έναν χρήστη και όχι περισσότερα από 3 ίδια μηνύματα. Για ειδοποιήσεις συναλλαγών (επιβεβαίωση παραγγελίας, αλλαγή κωδικού) τα όρια μπορεί να είναι υψηλότερα — έως 10 την ώρα, καθώς φέρουν κρίσιμες πληροφορίες. Χρησιμοποιήστε περιορισμό ρυθμού σε επίπεδο API αποστολής ώστε ένας εισβολέας να μην μπορεί να πυροδοτήσει μαζική αποστολή μέσω του διακομιστή σας.
Συχνές ερωτήσεις
Ναι, η απευθείας σύνδεση στο APNS δεν υποστηρίζεται σε Android — για συσκευές χωρίς Google Play Services χρησιμοποιούνται εναλλακτικές όπως το Huawei Mobile Services (HMS) και δικές τους συνδέσεις WebSocket. Ωστόσο, το FCM παραμένει το πρότυπο για τις περισσότερες εφαρμογές χάρη στη δωρεάν διάθεση και αξιοπιστία του.
Τα FCM και APNS αποθηκεύουν την τελευταία ειδοποίηση στους διακομιστές τους και την παραδίδουν όταν αποκατασταθεί η σύνδεση. Σε κάθε συσκευή αποθηκεύεται μόνο η τελευταία ειδοποίηση από κάθε εφαρμογή, επομένως κατά παρατεταμένη απουσία δικτύου χάνονται τα ενδιάμεσα μηνύματα.
Οι πιο συχνές αιτίες είναι — το πιστοποιητικό Push APNS έχει λήξει (ισχύει 1 έτος), μη έγκυρο token συσκευής, απενεργοποιημένες ειδοποιήσεις στις ρυθμίσεις ή ενεργοποιημένη λειτουργία εξοικονόμησης ενέργειας. Ελέγξτε το πιστοποιητικό στο Apple Developer Console και βεβαιωθείτε ότι η εφαρμογή ζητά άδεια μέσω UNUserNotificationCenter.
Σε Android χρησιμοποιήστε PendingIntent στο NotificationCompat.Builder με παρακολούθηση ανοίγματος μέσω Intent. Σε iOS — η μέθοδος UNUserNotificationCenterDelegate.userNotificationCenter(_:didReceive:withCompletionHandler:). Το FCM παρέχει αναφορές παράδοσης και ανοίγματος για κάθε σταλμένη ειδοποίηση.
Ελάχιστα — οι Push ειδοποιήσεις δεν διατηρούν μόνιμη σύνδεση· το λειτουργικό σύστημα χρησιμοποιεί ένα ενιαίο κανάλι συστήματος για όλες τις εφαρμογές, γεγονός που ελαχιστοποιεί τη συνολική κατανάλωση ενέργειας. Η συχνή αποστολή (κάθε 5 λεπτά) καταναλώνει περισσότερη ενέργεια για την αφύπνιση της συσκευής και την έξοδο από κατάσταση αναστολής. Οι σιωπηλές ειδοποιήσεις σε iOS καταναλώνουν περισσότερη ενέργεια λόγω ενεργοποίησης της εφαρμογής στο παρασκήνιο για επεξεργασία των ληφθέντων δεδομένων.
Σύνοψη
Θα αναπτύξουμε μια εφαρμογή για κινητά έτοιμη για χρήση
Η IT Sectr δημιουργεί εφαρμογές iOS και Android για νεοφυείς επιχειρήσεις και επιχειρήσεις από το 2017. Θα σας συμβουλεύσουμε και θα προτείνουμε την καλύτερη λύση.
Διαβάστε επίσης