Firebase Cloud Messaging: τι είναι, αρχή λειτουργίας και push ειδοποιήσεις

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

Firebase Cloud Messaging (FCM) — είναι μια διαπλατφορμική υπηρεσία παράδοσης push ειδοποιήσεων και μηνυμάτων από την Google, σχεδιασμένη για εφαρμογές κινητών και ιστού. Το FCM παρέχει αξιόπιστη μεταφορά δεδομένων μεταξύ του διακομιστή και των συσκευών-πελατών χωρίς την ανάγκη διατήρησης μόνιμης σύνδεσης δικτύου. Σύμφωνα με το Firebase Documentation, 2026, μέσω της υποδομής FCM περνούν καθημερινά πάνω από 300 δισεκατομμύρια μηνύματα παγκοσμίως. Η υπηρεσία υποστηρίζει τόσο ειδοποιήσεις με αυτόματη εμφάνιση όσο και data μηνύματα για κρυφή μεταφορά δεδομένων στο παρασκήνιο.

Κύρια σημεία

  • FCM — δωρεάν υπηρεσία push ειδοποιήσεων από την Google με υποστήριξη Android, iOS και Web μέσω ενός ενιαίου API και του Firebase Console.
  • Τύποι μηνυμάτων — τα notification μηνύματα εμφανίζονται αυτόματα από το σύστημα, τα data μηνύματα επιτρέπουν την αποστολή αυθαίρετου JSON και την επεξεργασία του στην εφαρμογή.
  • Token συσκευών — κάθε εφαρμογή λαμβάνει ένα μοναδικό Registration Token που χρησιμοποιείται από τον διακομιστή για στοχευμένη αποστολή push ειδοποιήσεων.
  • Προτεραιότητες παράδοσης — οι προτεραιότητες normal και high καθορίζουν τη συμπεριφορά του συστήματος κατά την εξοικονόμηση μπαταρίας: τα high μηνύματα αφυπνίζουν τη συσκευή από τη λειτουργία Doze.
  • Θέματα και ομάδες — το FCM υποστηρίζει εγγραφή σε θέματα για μαζική αποστολή και Device Groups για αποστολή σε πολλές συσκευές ενός χρήστη.

Τι είναι το Firebase Cloud Messaging

Firebase Cloud Messaging — είναι μια υπηρεσία cloud της Google που παρέχει μεταφορά push ειδοποιήσεων και data μηνυμάτων μεταξύ του διακομιστή εφαρμογής και των συσκευών-πελατών. Η υπηρεσία αντικατέστησε το παλαιό Google Cloud Messaging (GCM) και έγινε η τυπική λύση για παράδοση push στο οικοσύστημα Firebase. Το FCM υποστηρίζει Android, iOS, Web και Unity, παρέχοντας ενιαία διεπαφή αποστολής ανεξάρτητα από την πλατφόρμα-στόχο.

Βασικές δυνατότητες του FCM

Η υπηρεσία παρέχει διάφορους μηχανισμούς παράδοσης μηνυμάτων, ο καθένας επιλύοντας τη δική του εργασία. Τα notification μηνύματα εμφανίζονται αυτόματα από το σύστημα κατά τη λήψη — ο προγραμματιστής δεν χρειάζεται να γράψει κώδικα για την εμφάνιση της ειδοποίησης. Τα data μηνύματα μεταφέρουν αυθαίρετο payload με τη μορφή ζευγών κλειδιού-τιμής και επεξεργάζονται εντός της εφαρμογής. Τα συνδυασμένα μηνύματα περιέχουν ταυτόχρονα ορατό και κρυφό μέρος για μέγιστη ευελιξία.

Πλεονεκτήματα έναντι της δικής σας λύσης

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

Πώς λειτουργεί το Firebase Cloud Messaging

Η αρχιτεκτονική του FCM αποτελείται από τρία βασικά στοιχεία: τον διακομιστή παρόχου (το backend σας), τον διακομιστή Firebase Cloud Messaging και την εφαρμογή-πελάτη στη συσκευή. Όταν ο διακομιστής στέλνει ένα μήνυμα, αυτό πρώτα εισέρχεται στην υποδομή FCM, η οποία το δρομολογεί στη συσκευή-στόχο. Εάν η συσκευή είναι εκτός σύνδεσης, το FCM αποθηκεύει το μήνυμα σε ουρά και το παραδίδει όταν αποκατασταθεί η σύνδεση.

Εγγραφή συσκευής και λήψη token

Κατά την πρώτη εκτέλεση, η εφαρμογή καλεί το Firebase SDK, το οποίο εγγράφει τη συσκευή στην υπηρεσία FCM και λαμβάνει ένα μοναδικό Registration Token. Αυτό το token είναι μια συμβολοσειρά μήκους περίπου 150 χαρακτήρων που αναγνωρίζει ένα συγκεκριμένο στιγμιότυπο της εφαρμογής σε μια συγκεκριμένη συσκευή. Το token μπορεί να αλλάξει κατά την επανεγκατάσταση της εφαρμογής, τη διαγραφή δεδομένων ή την επαναφορά από αντίγραφο ασφαλείας — ο προγραμματιστής πρέπει να χειρίζεται την ενημέρωση token μέσω του εκπροσώπου onNewToken.

Κύκλος ζωής μηνύματος

Όταν ο διακομιστής στέλνει αίτημα μέσω του FCM API, το μήνυμα περνά από διάφορα στάδια. Λήψη και επικύρωση — το FCM ελέγχει την ορθότητα του αιτήματος και την ύπαρξη της συσκευής-στόχου. Ουρά — εάν η συσκευή δεν είναι διαθέσιμη, το μήνυμα εισέρχεται σε ουρά αποθήκευσης. Δρομολόγηση — το FCM καθορίζει το βέλτιστο κανάλι παράδοσης (Wi-Fi ή δεδομένα κινητής). Παράδοση — το σύστημα μεταδίδει το μήνυμα στην εφαρμογή-στόχο. Μετά από επιτυχή παράδοση, το FCM επιστρέφει στον διακομιστή ένα αναγνωριστικό μηνύματος.

Τύποι μηνυμάτων στο FCM

Το Firebase Cloud Messaging υποστηρίζει τρεις τύπους μηνυμάτων, ο καθένας με τα δικά του χαρακτηριστικά επεξεργασίας στην πλευρά του πελάτη. Τα notification μηνύματα υποβάλλονται σε επεξεργασία από την υπηρεσία συστήματος Google Play Services στο Android και APNs στο iOS και εμφανίζονται αυτόματα ως push banners. Τα data μηνύματα μεταδίδονται απευθείας στην εφαρμογή και υποβάλλονται σε επεξεργασία μέσω του callback onMessageReceived στο Android και application(_:didReceiveRemoteNotification:) στο iOS.

Notification μηνύματα

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

Data μηνύματα

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

Συνδυασμένα μηνύματα

Το FCM επιτρέπει την αποστολή μηνύματος που περιέχει ταυτόχρονα notification μέρος (για εμφάνιση) και data μέρος (για επεξεργασία). Το συνδυασμένο payload περιλαμβάνει τόσο τα προκαθορισμένα πεδία notification όσο και τα αυθαίρετα κλειδιά data. Το σύστημα εμφανίζει την ειδοποίηση από το notification μέρος, και το data μέρος μεταδίδεται στα intent extras της εφαρμογής κατά το άνοιγμα. Αυτό είναι βολικό για σενάρια όπου πρέπει να εμφανιστεί μια ειδοποίηση στον χρήστη και ταυτόχρονα να μεταδοθεί περιεχόμενο για πλοήγηση σε μια συγκεκριμένη οθόνη.

ΤύποςΑυτόματη εμφάνισηΕπεξεργασία παρασκηνίουΠαράδειγμα
NotificationΝαι, από το σύστημαΑυτόματα, χωρίς κώδικαΕιδοποίηση push καλωσορίσματος
DataΌχιΜέσω callback εφαρμογήςΣυγχρονισμός δεδομένων παρασκηνίου
ΣυνδυασμένοΝαι, notification μέροςData μέρος κατά το άνοιγμαΕιδοποίηση + σύνδεσμος παραγγελίας

Ρύθμιση FCM στο Android

Η ενσωμάτωση FCM στο Android ξεκινά με τη σύνδεση του Firebase SDK μέσω του αρχείου build.gradle σε επίπεδο εφαρμογής. Μετά την προσθήκη εξαρτήσεων και του αρχείου google-services.json, η εφαρμογή λαμβάνει αυτόματα το Registration Token, το οποίο μεταδίδεται μέσω του callback FirebaseMessagingService. Για τη λήψη ειδοποιήσεων, πρέπει να δημιουργηθεί μια υπηρεσία που κληρονομεί το FirebaseMessagingService και να καταχωρηθεί στο AndroidManifest.xml.

Αρχικοποίηση και λήψη token

Μετά τη σύνδεση του SDK, το Firebase δημιουργεί αυτόματα το token της συσκευής χωρίς επιπλέον κώδικα. Το token είναι προσβάσιμο μέσω του FirebaseMessaging.getInstance().token, το οποίο επιστρέφει Task. Για την παρακολούθηση ενημερώσεων token, η μέθοδος onNewToken παρακάμπτεται στην υπηρεσία. Το token πρέπει να μεταδοθεί στον διακομιστή παρόχου, ώστε ο διακομιστής να μπορεί να στέλνει push ειδοποιήσεις σε αυτήν τη συσκευή.

kotlin
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)
    }
}

Καταχώρηση υπηρεσίας στο manifest

Η υπηρεσία λήψης μηνυμάτων FCM πρέπει να καταχωρηθεί στο AndroidManifest.xml με το κατάλληλο intent-filter. Προσθήκη tag service με άδεια INTERNET και καθορισμό action. Χωρίς καταχώρηση της υπηρεσίας, τα μηνύματα δεν θα παραδίδονται στην εφαρμογή στο παρασκήνιο. Για την εμφάνιση ειδοποιήσεων στο Android 13+ απαιτείται άδεια χρόνου εκτέλεσης POST_NOTIFICATIONS.

xml
<!-- 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

Η ενσωμάτωση 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.

Διαμόρφωση APNs και εγγραφή για ειδοποιήσεις

Για τη λειτουργία του FCM στο iOS, πρέπει να μεταφορτωθεί ένα κλειδί APNs ή πιστοποιητικό στο Firebase Console. Το κλειδί APNs — είναι μια σύγχρονη μέθοδος αυθεντικοποίησης χωρίς πιστοποιητικά (συνιστάται από την Apple). Το κλειδί δημιουργείται στο Apple Developer Portal στην ενότητα Keys και μεταφορτώνεται στις ρυθμίσεις Cloud Messaging στο Firebase Console. Μετά τη διαμόρφωση APNs, η εφαρμογή ζητά άδεια για ειδοποιήσεις μέσω του UNUserNotificationCenter και εγγράφεται μέσω APNs.

swift
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.

Μορφή αιτήματος HTTP v1

Το σώμα του αιτήματος περιέχει ένα αντικείμενο JSON με πληροφορίες για το μήνυμα: target (token, θέμα ή συνθήκη), notification (για εμφάνιση) και data (προσαρμοσμένο payload). Αυθεντικοποίηση μέσω κλειδιού JSON Service Account, το οποίο φορτώνεται στις μεταβλητές περιβάλλοντος του διακομιστή. Το token πρόσβασης δημιουργείται μέσω της βιβλιοθήκης google-auth-library. Η Google συνιστά τη χρήση του Firebase Admin SDK για αυτόματη διαχείριση αυθεντικοποίησης και επαναλαμβανόμενων προσπαθειών.

js
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 και APNs;

Το FCM λειτουργεί στο Android μέσω της δικής του υποδομής Google, ενώ στο iOS χρησιμοποιεί το APNs ως πρωτόκολλο μεταφοράς. Το FCM παρέχει ενιαίο API και για τις δύο πλατφόρμες, αυτόματη αποθήκευση μηνυμάτων εκτός σύνδεσης και αναλυτικά παράδοσης, τα οποία δεν υπάρχουν στο καθαρό APNs.

Μπορούν να σταλούν μηνύματα FCM χωρίς διακομιστή;

Ναι, μέσω του Firebase Console στην ενότητα Cloud Messaging μπορούν να σταλούν χειροκίνητα ειδοποιήσεις σε επιλεγμένες συσκευές, θέματα ή τμήματα κοινού. Η λειτουργία είναι κατάλληλη για δοκιμές και εφάπαξ αποστολές, αλλά δεν αντικαθιστά την ενσωμάτωση διακομιστή για εφαρμογές παραγωγής.

Τι να κάνω αν το token της συσκευής άλλαξε;

Εγγραφείτε για ενημερώσεις token μέσω του onNewToken στο FirebaseMessagingService (Android) ή MessagingDelegate (iOS). Όταν αλλάξει το token, στείλτε το νέο token στον διακομιστή και διαγράψτε το παλιό. Ο διακομιστής πρέπει να ενημερώσει τη βάση δεδομένων και να σταματήσει τις προσπάθειες αποστολής στο παλιό token.

Πώς χειρίζεται το FCM συσκευές εκτός σύνδεσης;

Το FCM αποθηκεύει το μήνυμα σε ουρά έως και 28 ημέρες και το παραδίδει όταν αποκατασταθεί η σύνδεση. Για notification μηνύματα, μόνο το τελευταίο μήνυμα για κάθε ομάδα σύμπτυξης συμπτύσσεται. Τα data μηνύματα αποθηκεύονται ξεχωριστά και παραδίδονται με τη σειρά αποστολής χωρίς σύμπτυξη.

Πόσο κοστίζει η χρήση του Firebase Cloud Messaging;

Το FCM είναι εντελώς δωρεάν χωρίς περιορισμούς στον αριθμό μηνυμάτων. Η χρήση του FCM δεν χρεώνεται ούτε στο πρόγραμμα Spark ούτε στο πρόγραμμα Blaze. Οι περιορισμοί ισχύουν μόνο για το μέγεθος payload: έως 4 KB για notification μηνύματα και έως 2 KB για data μηνύματα.

Περίληψη

  • Firebase Cloud Messaging — διαπλατφορμική υπηρεσία push ειδοποιήσεων από την Google που υποστηρίζει Android, iOS, Web και Unity μέσω ενός ενιαίου API.
  • Η αρχιτεκτονική FCM αποτελείται από τον διακομιστή παρόχου, την υποδομή Firebase και την εφαρμογή-πελάτη, εξασφαλίζοντας αξιόπιστη παράδοση μηνυμάτων μέσω του παγκόσμιου δικτύου Google.
  • Τρεις τύποι μηνυμάτων — notification (αυτόματη εμφάνιση), data (αυθαίρετο payload χωρίς UI) και συνδυασμένα (και οι δύο τύποι σε ένα μήνυμα).
  • FCM στο Android λειτουργεί μέσω FirebaseMessagingService με δική του σύνδεση, ενώ στο iOS χρησιμοποιεί APNs ως μεταφορά με αναχαίτιση token μέσω MessagingDelegate.
  • HTTP v1 API συνιστάται για αποστολή από την πλευρά διακομιστή με αυθεντικοποίηση OAuth 2.0 μέσω Service Account και υποστήριξη αναλυτικών παράδοσης.
  • Τα θέματα επιτρέπουν την αποστολή μηνυμάτων σε ομάδες συνδρομητών, και οι συνθήκες (conditions) επιτρέπουν τον συνδυασμό πολλαπλών θεμάτων για ακριβή τμηματοποίηση.
  • Το FCM είναι δωρεάν χωρίς περιορισμό στον αριθμό μηνυμάτων, με αποθήκευση μηνυμάτων εκτός σύνδεσης έως 28 ημέρες και μέγιστο μέγεθος payload 4 KB.

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

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

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

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