Firebase Cloud Messaging (FCM) — είναι μια διαπλατφορμική υπηρεσία παράδοσης push ειδοποιήσεων και μηνυμάτων από την Google, σχεδιασμένη για εφαρμογές κινητών και ιστού. Το FCM παρέχει αξιόπιστη μεταφορά δεδομένων μεταξύ του διακομιστή και των συσκευών-πελατών χωρίς την ανάγκη διατήρησης μόνιμης σύνδεσης δικτύου. Σύμφωνα με το Firebase Documentation, 2026, μέσω της υποδομής FCM περνούν καθημερινά πάνω από 300 δισεκατομμύρια μηνύματα παγκοσμίως. Η υπηρεσία υποστηρίζει τόσο ειδοποιήσεις με αυτόματη εμφάνιση όσο και data μηνύματα για κρυφή μεταφορά δεδομένων στο παρασκήνιο.
Κύρια σημεία
Firebase Cloud Messaging — είναι μια υπηρεσία cloud της Google που παρέχει μεταφορά push ειδοποιήσεων και data μηνυμάτων μεταξύ του διακομιστή εφαρμογής και των συσκευών-πελατών. Η υπηρεσία αντικατέστησε το παλαιό Google Cloud Messaging (GCM) και έγινε η τυπική λύση για παράδοση push στο οικοσύστημα Firebase. Το FCM υποστηρίζει Android, iOS, Web και Unity, παρέχοντας ενιαία διεπαφή αποστολής ανεξάρτητα από την πλατφόρμα-στόχο.
Η υπηρεσία παρέχει διάφορους μηχανισμούς παράδοσης μηνυμάτων, ο καθένας επιλύοντας τη δική του εργασία. Τα notification μηνύματα εμφανίζονται αυτόματα από το σύστημα κατά τη λήψη — ο προγραμματιστής δεν χρειάζεται να γράψει κώδικα για την εμφάνιση της ειδοποίησης. Τα data μηνύματα μεταφέρουν αυθαίρετο payload με τη μορφή ζευγών κλειδιού-τιμής και επεξεργάζονται εντός της εφαρμογής. Τα συνδυασμένα μηνύματα περιέχουν ταυτόχρονα ορατό και κρυφό μέρος για μέγιστη ευελιξία.
Η υλοποίηση δικού σας push διακομιστή απαιτεί συνεχή διατήρηση σύνδεσης TCP με κάθε συσκευή, η οποία είναι αναποτελεσματική και μη ασφαλής. Το FCM χρησιμοποιεί την ενιαία υποδομή της Google, η οποία διατηρεί σύνδεση με δισεκατομμύρια συσκευές ταυτόχρονα. Η υπηρεσία διαχειρίζεται αυτόματα επαναλαμβανόμενες προσπάθειες παράδοσης, ουρές μηνυμάτων και εξισορρόπηση φορτίου, απαλλάσσοντας τον προγραμματιστή από την ανάγκη να επιλύει αυτά τα καθήκοντα μόνος του.
Η αρχιτεκτονική του FCM αποτελείται από τρία βασικά στοιχεία: τον διακομιστή παρόχου (το backend σας), τον διακομιστή Firebase Cloud Messaging και την εφαρμογή-πελάτη στη συσκευή. Όταν ο διακομιστής στέλνει ένα μήνυμα, αυτό πρώτα εισέρχεται στην υποδομή FCM, η οποία το δρομολογεί στη συσκευή-στόχο. Εάν η συσκευή είναι εκτός σύνδεσης, το FCM αποθηκεύει το μήνυμα σε ουρά και το παραδίδει όταν αποκατασταθεί η σύνδεση.
Κατά την πρώτη εκτέλεση, η εφαρμογή καλεί το Firebase SDK, το οποίο εγγράφει τη συσκευή στην υπηρεσία FCM και λαμβάνει ένα μοναδικό Registration Token. Αυτό το token είναι μια συμβολοσειρά μήκους περίπου 150 χαρακτήρων που αναγνωρίζει ένα συγκεκριμένο στιγμιότυπο της εφαρμογής σε μια συγκεκριμένη συσκευή. Το token μπορεί να αλλάξει κατά την επανεγκατάσταση της εφαρμογής, τη διαγραφή δεδομένων ή την επαναφορά από αντίγραφο ασφαλείας — ο προγραμματιστής πρέπει να χειρίζεται την ενημέρωση token μέσω του εκπροσώπου onNewToken.
Όταν ο διακομιστής στέλνει αίτημα μέσω του FCM API, το μήνυμα περνά από διάφορα στάδια. Λήψη και επικύρωση — το FCM ελέγχει την ορθότητα του αιτήματος και την ύπαρξη της συσκευής-στόχου. Ουρά — εάν η συσκευή δεν είναι διαθέσιμη, το μήνυμα εισέρχεται σε ουρά αποθήκευσης. Δρομολόγηση — το FCM καθορίζει το βέλτιστο κανάλι παράδοσης (Wi-Fi ή δεδομένα κινητής). Παράδοση — το σύστημα μεταδίδει το μήνυμα στην εφαρμογή-στόχο. Μετά από επιτυχή παράδοση, το FCM επιστρέφει στον διακομιστή ένα αναγνωριστικό μηνύματος.
Το Firebase Cloud Messaging υποστηρίζει τρεις τύπους μηνυμάτων, ο καθένας με τα δικά του χαρακτηριστικά επεξεργασίας στην πλευρά του πελάτη. Τα notification μηνύματα υποβάλλονται σε επεξεργασία από την υπηρεσία συστήματος Google Play Services στο Android και APNs στο iOS και εμφανίζονται αυτόματα ως push banners. Τα data μηνύματα μεταδίδονται απευθείας στην εφαρμογή και υποβάλλονται σε επεξεργασία μέσω του callback onMessageReceived στο Android και application(_:didReceiveRemoteNotification:) στο iOS.
Το notification μήνυμα περιέχει προκαθορισμένα πεδία: title, body, URL εικόνας και ήχο ειδοποίησης. Το σύστημα αυτόματα δημιουργεί και εμφανίζει την ειδοποίηση στο δίσκο συστήματος, ακόμα κι αν η εφαρμογή βρίσκεται στο παρασκήνιο ή έχει τερματιστεί. Ο χρήστης βλέπει ένα τυπικό banner με τίτλο και κείμενο, και με κλικ η εφαρμογή ανοίγει με τα δεδομένα που μεταδόθηκαν στο payload. Εάν η εφαρμογή είναι ενεργή, το notification μήνυμα μπορεί να αναχαιτιστεί και να υποβληθεί σε επεξεργασία στον κώδικα.
Το data μήνυμα είναι ένα προσαρμοσμένο σύνολο ζευγών κλειδιού-τιμής χωρίς προκαθορισμένα πεδία. Το payload δεν υποβάλλεται σε επεξεργασία από το σύστημα αυτόματα — η εφαρμογή λαμβάνει ακατέργαστα δεδομένα και μπορεί να τα ερμηνεύσει με οποιονδήποτε τρόπο. Τα data μηνύματα χρησιμοποιούνται για συγχρονισμό δεδομένων στο παρασκήνιο, ενημέρωση τοπικής προσωρινής μνήμης, ενεργοποίηση συγχρονισμού ή μετάδοση εντολών χωρίς εμφάνιση ειδοποίησης. Στο Android, το data μήνυμα παραδίδεται πάντα, ακόμα κι αν η εφαρμογή έχει τερματιστεί ή βρίσκεται στο παρασκήνιο.
Το FCM επιτρέπει την αποστολή μηνύματος που περιέχει ταυτόχρονα notification μέρος (για εμφάνιση) και data μέρος (για επεξεργασία). Το συνδυασμένο payload περιλαμβάνει τόσο τα προκαθορισμένα πεδία notification όσο και τα αυθαίρετα κλειδιά data. Το σύστημα εμφανίζει την ειδοποίηση από το notification μέρος, και το data μέρος μεταδίδεται στα intent extras της εφαρμογής κατά το άνοιγμα. Αυτό είναι βολικό για σενάρια όπου πρέπει να εμφανιστεί μια ειδοποίηση στον χρήστη και ταυτόχρονα να μεταδοθεί περιεχόμενο για πλοήγηση σε μια συγκεκριμένη οθόνη.
| Τύπος | Αυτόματη εμφάνιση | Επεξεργασία παρασκηνίου | Παράδειγμα |
|---|---|---|---|
| Notification | Ναι, από το σύστημα | Αυτόματα, χωρίς κώδικα | Ειδοποίηση push καλωσορίσματος |
| Data | Όχι | Μέσω callback εφαρμογής | Συγχρονισμός δεδομένων παρασκηνίου |
| Συνδυασμένο | Ναι, notification μέρος | Data μέρος κατά το άνοιγμα | Ειδοποίηση + σύνδεσμος παραγγελίας |
Η ενσωμάτωση FCM στο Android ξεκινά με τη σύνδεση του Firebase SDK μέσω του αρχείου build.gradle σε επίπεδο εφαρμογής. Μετά την προσθήκη εξαρτήσεων και του αρχείου google-services.json, η εφαρμογή λαμβάνει αυτόματα το Registration Token, το οποίο μεταδίδεται μέσω του callback FirebaseMessagingService. Για τη λήψη ειδοποιήσεων, πρέπει να δημιουργηθεί μια υπηρεσία που κληρονομεί το FirebaseMessagingService και να καταχωρηθεί στο AndroidManifest.xml.
Μετά τη σύνδεση του SDK, το Firebase δημιουργεί αυτόματα το token της συσκευής χωρίς επιπλέον κώδικα. Το token είναι προσβάσιμο μέσω του FirebaseMessaging.getInstance().token, το οποίο επιστρέφει Task
class MyFirebaseMessagingService :
FirebaseMessagingService() {
override fun onNewToken(token: String) {
sendTokenToServer(token)
}
override fun onMessageReceived(
message: RemoteMessage
) {
val data = message.data
val title = "Νέο μήνυμα"
val body = data["body"] ?: ""
showNotification(title, body)
}
}
Η υπηρεσία λήψης μηνυμάτων FCM πρέπει να καταχωρηθεί στο AndroidManifest.xml με το κατάλληλο intent-filter. Προσθήκη tag service με άδεια INTERNET και καθορισμό action. Χωρίς καταχώρηση της υπηρεσίας, τα μηνύματα δεν θα παραδίδονται στην εφαρμογή στο παρασκήνιο. Για την εμφάνιση ειδοποιήσεων στο Android 13+ απαιτείται άδεια χρόνου εκτέλεσης POST_NOTIFICATIONS.
<!-- AndroidManifest.xml -->
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name=
"android.permission.POST_NOTIFICATIONS" />
<service
android:name=".MyFirebaseMessagingService"
android:exported="false">
<intent-filter>
<action android:name=
"com.google.firebase.MESSAGING_EVENT" />
</intent-filter>
</service>
Η ενσωμάτωση FCM στο iOS απαιτεί διαμόρφωση τόσο στην πλευρά του Apple Push Notification Service (APNs) όσο και στο Firebase Console. Σε αντίθεση με το Android, όπου το FCM διαχειρίζεται άμεσα τη σύνδεση, στο iOS το FCM χρησιμοποιεί το APNs ως στρώμα μεταφοράς. Η εφαρμογή εγγράφεται για λήψη push ειδοποιήσεων μέσω του UIApplication.shared.registerForRemoteNotifications, και το Firebase SDK αναχαιτίζει το ληφθέν device token και το συνδέει με το FCM Registration Token.
Για τη λειτουργία του FCM στο iOS, πρέπει να μεταφορτωθεί ένα κλειδί APNs ή πιστοποιητικό στο Firebase Console. Το κλειδί APNs — είναι μια σύγχρονη μέθοδος αυθεντικοποίησης χωρίς πιστοποιητικά (συνιστάται από την Apple). Το κλειδί δημιουργείται στο Apple Developer Portal στην ενότητα Keys και μεταφορτώνεται στις ρυθμίσεις Cloud Messaging στο Firebase Console. Μετά τη διαμόρφωση APNs, η εφαρμογή ζητά άδεια για ειδοποιήσεις μέσω του UNUserNotificationCenter και εγγράφεται μέσω APNs.
import Firebase
import UserNotifications
class AppDelegate: NSObject, UIApplicationDelegate {
func application(
_ application: UIApplication,
didFinishLaunchingWithOptions
launchOptions: [UIApplication.LaunchOptionsKey: Any]?
) -> Bool {
FirebaseApp.configure()
UNUserNotificationCenter.current()
.requestAuthorization(options: [.alert, .sound, .badge])
application.registerForRemoteNotifications()
return true
}
func application(
_ application: UIApplication,
didRegisterForRemoteNotificationsWithDeviceToken
deviceToken: Data
) {
Messaging.messaging()
.apnsToken = deviceToken
}
}
Για την επεξεργασία ληφθεισών ειδοποιήσεων, υλοποιείται ο εκπρόσωπος UNUserNotificationCenter. Η μέθοδος willPresent καλείται όταν λαμβάνεται ειδοποίηση ενώ η εφαρμογή είναι ενεργή — εδώ μπορεί να εμφανιστεί μια προσαρμοσμένη ειδοποίηση εντός εφαρμογής ή να αγνοηθεί το banner συστήματος. Η μέθοδος didReceive καλείται όταν ο χρήστης κάνει κλικ στην ειδοποίηση — εδώ πραγματοποιείται πλοήγηση στην αντίστοιχη οθόνη. Για data μηνύματα, χρησιμοποιείται ο εκπρόσωπος MessagingDelegate, ο οποίος λαμβάνει το payload κατά τη λήψη μηνύματος FCM στο παρασκήνιο.
Αποστολή από την πλευρά του διακομιστή μηνυμάτων FCM πραγματοποιείται μέσω του HTTP v1 API Firebase Cloud Messaging ή του παλαιού Firebase Cloud Messaging API. Το HTTP v1 API είναι η συνιστώμενη μέθοδος, χρησιμοποιεί αυθεντικοποίηση OAuth 2.0 μέσω Service Account και υποστηρίζει όλες τις σύγχρονες δυνατότητες FCM, συμπεριλαμβανομένων αναλυτικών παράδοσης και A/B δοκιμών ειδοποιήσεων. Το αίτημα αποστέλλεται με μέθοδο POST στο endpoint https://fcm.googleapis.com/v1/projects/{project_id}/messages:send.
Το σώμα του αιτήματος περιέχει ένα αντικείμενο JSON με πληροφορίες για το μήνυμα: target (token, θέμα ή συνθήκη), notification (για εμφάνιση) και data (προσαρμοσμένο payload). Αυθεντικοποίηση μέσω κλειδιού JSON Service Account, το οποίο φορτώνεται στις μεταβλητές περιβάλλοντος του διακομιστή. Το token πρόσβασης δημιουργείται μέσω της βιβλιοθήκης google-auth-library. Η Google συνιστά τη χρήση του Firebase Admin SDK για αυτόματη διαχείριση αυθεντικοποίησης και επαναλαμβανόμενων προσπαθειών.
const admin = require("firebase-admin")
const serviceAccount = require("./serviceAccountKey.json")
admin.initializeApp({ credential: admin.credential.cert(serviceAccount) })
const message = {
token: "device_registration_token",
notification: { title: "Έκπτωση 20%", body: "Για όλες τις υπηρεσίες σήμερα" },
data: { screen: "promo", promoId: "324" },
android: { priority: "high" },
apns: { payload: { aps: { sound: "default" } } }
}
admin.messaging().send(message)
.then(response => {
console.log("Επιτυχής αποστολή:", response)
})
.catch(error => {
console.log("Σφάλμα αποστολής:", error)
})
Για την αποστολή ειδοποιήσεων σε μια ομάδα χρηστών, το FCM υποστηρίζει εγγραφή σε θέματα. Το θέμα (topic) — είναι ένα ονομασμένο κανάλι στο οποίο η εφαρμογή-πελάτης εγγράφεται μέσω του FirebaseMessaging.getInstance().subscribeToTopic(). Ο διακομιστής μπορεί να στείλει μήνυμα σε ένα θέμα, και θα παραδοθεί σε όλες τις εγγεγραμμένες συσκευές. Τα θέματα είναι κατάλληλα για ενημερωτικά δελτία, προωθητικές ειδοποιήσεις και event push. Για πιο ακριβή τμηματοποίηση, χρησιμοποιούνται συνθήκες (conditions) βάσει πολλαπλών θεμάτων με λογικούς τελεστές.
Συχνές ερωτήσεις
Το FCM λειτουργεί στο Android μέσω της δικής του υποδομής Google, ενώ στο iOS χρησιμοποιεί το APNs ως πρωτόκολλο μεταφοράς. Το FCM παρέχει ενιαίο API και για τις δύο πλατφόρμες, αυτόματη αποθήκευση μηνυμάτων εκτός σύνδεσης και αναλυτικά παράδοσης, τα οποία δεν υπάρχουν στο καθαρό APNs.
Ναι, μέσω του Firebase Console στην ενότητα Cloud Messaging μπορούν να σταλούν χειροκίνητα ειδοποιήσεις σε επιλεγμένες συσκευές, θέματα ή τμήματα κοινού. Η λειτουργία είναι κατάλληλη για δοκιμές και εφάπαξ αποστολές, αλλά δεν αντικαθιστά την ενσωμάτωση διακομιστή για εφαρμογές παραγωγής.
Εγγραφείτε για ενημερώσεις token μέσω του onNewToken στο FirebaseMessagingService (Android) ή MessagingDelegate (iOS). Όταν αλλάξει το token, στείλτε το νέο token στον διακομιστή και διαγράψτε το παλιό. Ο διακομιστής πρέπει να ενημερώσει τη βάση δεδομένων και να σταματήσει τις προσπάθειες αποστολής στο παλιό token.
Το FCM αποθηκεύει το μήνυμα σε ουρά έως και 28 ημέρες και το παραδίδει όταν αποκατασταθεί η σύνδεση. Για notification μηνύματα, μόνο το τελευταίο μήνυμα για κάθε ομάδα σύμπτυξης συμπτύσσεται. Τα data μηνύματα αποθηκεύονται ξεχωριστά και παραδίδονται με τη σειρά αποστολής χωρίς σύμπτυξη.
Το FCM είναι εντελώς δωρεάν χωρίς περιορισμούς στον αριθμό μηνυμάτων. Η χρήση του FCM δεν χρεώνεται ούτε στο πρόγραμμα Spark ούτε στο πρόγραμμα Blaze. Οι περιορισμοί ισχύουν μόνο για το μέγεθος payload: έως 4 KB για notification μηνύματα και έως 2 KB για data μηνύματα.
Περίληψη
Θα αναπτύξουμε μια εφαρμογή για κινητά έτοιμη για χρήση
Η IT Sectr δημιουργεί εφαρμογές iOS και Android για νεοφυείς επιχειρήσεις και επιχειρήσεις από το 2017. Θα σας συμβουλεύσουμε και θα προτείνουμε την καλύτερη λύση.
Διαβάστε επίσης