Registration Token στις ειδοποιήσεις push: τι είναι, τρόποι λήψης και ενημέρωσης

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

Το Registration Token είναι ένα μοναδικό αναγνωριστικό συσκευής που χρησιμοποιεί το Firebase Cloud Messaging (FCM) για την παράδοση ειδοποιήσεων push. Κάθε εφαρμογή σε κάθε συσκευή λαμβάνει το δικό της token, χωρίς το οποίο η αποστολή ειδοποιήσεων είναι αδύνατη. Σύμφωνα με το Firebase, 2025, το Registration Token δημιουργείται αυτόματα κατά την πρώτη εκκίνηση της εφαρμογής και μπορεί να αλλάξει υπό ορισμένες συνθήκες.

Κύρια σημεία

  • Registration Token — ένα string που ταυτίζει το στελέχος της εφαρμογής σε μια συγκεκριμένη συσκευή για το FCM.
  • Το token δημιουργείται αυτόματα κατά την πρώτη εκκίνηση ή μετά τη διαγραφή δεδομένων της εφαρμογής.
  • Το FCM χρησιμοποιεί το token για τη διαδρομή των ειδοποιήσεων push στη σωστή συσκευή.
  • Το token μπορεί να αλλάξει — η εφαρμογή πρέπει να εγγραφεί σε ενημερώσεις μέσω onNewToken.
  • Για την αποστολή ειδοποιήσεων, το μέρος του διακομιστή πρέπει να αποθηκεύει τα τρέχοντα token όλων των συσκευών.

Τι είναι το Registration Token

Registration Token — ένα μοναδικό string μέχρι 4096 χαρακτήρων που το Firebase Cloud Messaging εκχωρεί σε κάθε στελέχος εφαρμογής. Το token διαμορφώνεται βάση του αναγνωριστικού της εφαρμογής, της συσκευής και του λογαριασμού Google στη συσκευή.

Δομή και σκοπός του token

Το Registration Token αποτελείται από μια τυχαία ακολουθία χαρακτήρων κωδικοποιημένων σε μορφή Base64. Το FCM χρησιμοποιεί αυτό το token ως διεύθυνση παράδοσης — το μέρος του διακομιστή στέλνει ειδοποίηση στο token, και το FCM το διομολογεί στη συγκεκριμένη συσκευή. Χωρίς token, είναι αδύνατη η προώθηση μιας ειδοποίησης push σε έναν συγκεκριμένο χρήστη.

Διαφορές από άλλα αναγνωριστικά

Το Registration Token δεν πρέπει να συγχέεται με το Device ID (IMEI) ή το Advertising ID. Το Device ID είναι ένα αναγνωριστικό υλικού της συσκευής, και το Advertising ID χρησιμοποιείται για διαφημιστικούς σκοπούς. Το Registration Token είναι δεσμευμένο στον συνδυασμό εφαρμογής και συσκευής, και μια συσκευή μπορεί να έχει πολλά token για διαφορετικές εφαρμογές.

ΑναγνωριστικόΣκοπόςΜεταβλητότητα
Registration TokenΠαράδοση ειδοποιήσεων push FCMΜπορεί να αλλάξει
Device ID (IMEI)Ταυτοποίηση συσκευήςΜόνιμο
Advertising IDΣτοχευμένη διαφήμισηΜπορεί να επαναφερθεί
Instance IDΑπαρχαιωμένος μηχανισμός FirebaseΆλλαζε κατά τη διαγραφή

Πότε το token θεωρείται άκυρο

Το FCM μπορεί να θεωρήσει το Registration Token άκυρο σε αρκετές περιπτώσεις. Εάν η εφαρμογή διαγραφεί από τη συσκευή, το token ακυρώνεται αυτόματα. Κατά την επαναφορά δεδομένων από αντιγραφή ασφαλείας σε νέα συσκευή, το παλιό token σταματά να λειτουργεί. Το Firebase επιστρέφει κατάσταση UNREGISTERED κατά την προσπάθεια αποστολής ειδοποίησης σε παλιό token.

Πώς το FCM εκχωρεί το Registration Token

Firebase Cloud Messaging δημιουργεί το Registration Token κατά την πρώτη εκκίνηση της εφαρμογής, όταν κληθεί η μέθοδος getToken(). Η διαδικασία περιλαμβάνει τον έλεγχο διαιτηρων Google Play Services και την εγγραφή της εφαρμογής στην υποδομή Firebase.

Διαδικασία εγγραφής συσκευής

Όταν η συσκευή εκτελεί για πρώτη φορά την εφαρμογή με ενσωματωμένο FCM SDK, συμβαίνει το εξής. Το Firebase SDK ελέγχει την παρουσία των Google Play Services στη συσκευή. Στη συνέχεια, το SDK στέλνει ένα αίτημα στους διακομιστές Firebase, μεταβιβάζοντας το αναγνωριστικό της εφαρμογής και πληροφορίες συσκευής. Ο διακομιστής Firebase δημιουργεί ένα νέο token και το επιστρέφει στην εφαρμογή.

Εσωτερική μηχανική του FCM

Το FCM χρησιμοποιεί μια αρχιτεκτονική βασισμένη σε μακρόχρονες συνδέσεις. Μετά την λήψη του Registration Token, η συσκευή δημιουργεί μία μόνιμη σύνδεση με τους διακομιστές Firebase μέσω πρωτοκόλου STOMP σε Android ή καναλιού APNs σε iOS. Όταν το μέρος του διακομιστή στέλνει μια ειδοποίηση στο token, το FCM βρίσκει τη συσκευή μέσω του token και παραδίδει το φορτίο.

Συνθήκες αναγέννησης του token

Το Registration Token μπορεί να αναγεννηθεί από το FCM σε περίπτωση επαναφοράς της εφαρμογής από αντιγραφή σε νέα συσκευή. Κατά τη διαγραφή και επανεγκατάσταση της εφαρμογής. Κατά την εκκαθάριση δεδομένων της εφαρμογής μέσω ρυθμίσεων συστήματος. Κατά την είσοδο σε έναν άλλο λογαριασμό Google στη συσκευή. Το Firebase συνιστά να επεξεργάζεστε πάντα το callback onNewToken για την παρακολούθηση αλλαγών.

Λήψη Registration Token σε Android

Σε Android, το Registration Token λαμβάνεται μέσω του Firebase Messaging SDK. Η διαδικασία διαφέρει για διαφορετικές εκδόσεις SDK — σε νέες εκδόσεις χρησιμοποιείται το FirebaseInstallations API αντί του απαρχαιωμένου FirebaseInstanceId.

Σύγχρονη μέθοδος μέσω FirebaseInstallations

Από την έκδοση Firebase SDK 21.0.0, η μέθοδος getToken() καλείται μέσω FirebaseMessaging. Αυτή η προσέγγιση διαχειρίζεται αυτόματα τον κύκλο ζωής του token και εγγράφεται σε ενημερώσεις αυτού.

kotlin
class MyFirebaseMessagingService : FirebaseMessagingService() {

    override fun onNewToken(token: String) {
        sendRegistrationToServer(token)
    }

    private fun sendRegistrationToServer(token: String) {
        // Αποστολή token στο διακομιστή
        Log.d("FCM", "New token: $token")
    }

    init {
        FirebaseMessaging.getInstance()
            .getToken()
            .addOnCompleteListener { task ->
                if (!task.isSuccessful) {
                    Log.w("FCM", "Η λήψη του FCM token απέτυχε")
                    return@addOnCompleteListener
                }
                val token = task.result
                sendRegistrationToServer(token)
            }
    }
}

Επεξεργασία token σε Activity ή ViewModel

Σε ορισμένα σενάρια, το token απαιτείται όχι σε υπηρεσία, αλλά απευθείας σε Activity ή ViewModel. Για αυτόν τον σκοπό, η getToken() μπορεί να κληθεί σε κατάλληλο σημείο του κύκλου ζωής της εφαρμογής. Είναι σημαντικό να μην καλείτε αυτήν τη μέθοδο από το κύριο νήμα χωρίς χειρισμό ασυγχρονίας.

kotlin
class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        getFCMToken()
    }

    private fun getFCMToken() {
        FirebaseMessaging.getInstance().getToken()
            .addOnCompleteListener { task ->
                if (task.isSuccessful) {
                    val token = task.result
                    Log.d("FCM", "Token: $token")
                }
            }
    }
}

Απαρχαιωμένη μέθοδος FirebaseInstanceId

Σε παλιές εκδόσεις του Firebase SDK (πριν την έκδοση 20.x), το token λαμβανόταν μέσω FirebaseInstanceId.getInstance().getToken(). Αυτή η μέθοδος έχει επισημανθεί ως deprecated και δεν συνιστάται για χρήση σε νέα έργα. Οι πραγματοποιοί που συντηρούν legacy κώδικα πρέπει να μεταναστεύσουν σε FirebaseInstallations API.

Λήψη Registration Token σε iOS

Σε iOS, η διαδικασία λήψης του Registration Token διαφέρει αρχιτεκτονικά — το FCM λειτουργεί μέσω της Apple Push Notification service (APNs). Το Firebase SDK λαμβάνει από το APNs ένα μοναδικό device token, το μετατρέπει σε μορφή FCM και το μεταβιβάζει στην εφαρμογή.

Ρύθμιση APNs και λήψη token

Για τη λειτουργία του FCM σε iOS, πρέπει να ρυθμίσετε ένα πιστοποιητικό APNs ή ένα κλειδί στην κονσόλα Firebase. Η εφαρμογή πρέπει να ζητήσει άδεια για ειδοποιήσεις μέσω UNUserNotificationCenter. Μετά την λήψη του token APNs, το Firebase SDK δημιουργεί αυτόματα το Registration Token.

swift
import FirebaseMessaging
import UserNotifications

class AppDelegate: UIResponder, UIApplicationDelegate {

    func application(
        application: UIApplication,
        didFinishLaunchingWithOptions: [UIApplication.LaunchOptionsKey: Any]?
    ) -> Bool {
        FirebaseApp.configure()
        Messaging.messaging().delegate = self
        requestNotificationAuthorization()
        return true
    }

    private func requestNotificationAuthorization() {
        let center = UNUserNotificationCenter.current()
        center.requestAuthorization(options: [.alert, .sound, .badge])
    }
}

extension AppDelegate: MessagingDelegate {
    func messaging(
        messaging: Messaging,
        didReceiveRegistrationToken fcmToken: String?
    ) {
        Log.d("FCM", "Token: \(fcmToken ?? "")")
        sendTokenToServer(token: fcmToken)
    }
}

Διαφορές μεταξύ iOS και Android token

Το Registration Token σε iOS έχει μικρότερο μέγεθος σε σύγκριση με το token Android, καθώς βασίζεται σε APNs device token. Το Firebase SDK ενημερώνει αυτόματα το FCM token κατά την αλλαγή του APNs token, κάτι που συμβαίνει κατά την επαναφορά της συσκευής από αντιγραφή ή την επανεγκατάσταση της εφαρμογής.

Ενημέρωση και διαχείριση Registration Token

Διαχείριση κύκλου ζωής του Registration Token είναι μια κριτική εργασία για την σταθερή παράδοση ειδοποιήσεων push. Εάν το μέρος του διακομιστή αποθηκεύει ένα παλιό token, οι ειδοποιήσεις δεν θα παραδοθούν και το Firebase θα επιστρέψει σφάλμα UNREGISTERED.

Παρακολούθηση αλλαγών του token

Το Firebase SDK παρέχει δύο μηχανισμούς για την παρακολούθηση αλλαγών του token. Σε Android, χρησιμοποιείται το callback onNewToken στο FirebaseMessagingService. Σε iOS — ο αντιπρόσωπος messaging:didReceiveRegistrationToken. Και τα δύο καλούνται σε κάθε ενημέρωση του token.

kotlin
// Αποθήκευση token στο SharedPreferences και αποστολή στο διακομιστή
class TokenManager(private val context: Context) {

    companion object {
        private const val PREFS_TOKEN_KEY = "fcm_registration_token"
    }

    fun saveToken(token: String) {
        val prefs = PreferenceManager
            .getDefaultSharedPreferences(context)
        prefs.edit().putString(PREFS_TOKEN_KEY, token).apply()
    }

    fun getSavedToken(): String? {
        val prefs = PreferenceManager
            .getDefaultSharedPreferences(context)
        return prefs.getString(PREFS_TOKEN_KEY, null)
    }
}

Στρατηγική αποθήκευσης token στο διακομιστή

Το μέρος του διακομιστή πρέπει να αποθηκεύει το Registration Token σε συνδυασμό με το αναγνωριστικό χρήστη. Κατά την ενημέρωση του token, ο πελάτης στέλνει νέο token στο διακομιστή, και ο διακομιστής αντικαθιστά το παλιό. Συνιστάται η τήρηση ιστορικού των token: εάν μια ειδοποίηση δεν παραδόθηκε σε νέο token, μπορείτε να δοκιμάσετε το παλιό.

Χειρισμός σφαλμάτων κατά την εργασία με το token

Το Firebase μπορεί να επιστρέψει σφάλμα λήψης token σε αρκετές περιπτώσεις. Έλλειψη Google Play Services στη συσκευή — το token δεν θα ληφθεί. Υπέρβαση ορίου αιτημάτων FCM — πρέπει να εφαρμόσετε εκθετική καθυστέρηση σε επαναλήψεις. Λήξη του token — το SDK ζητά αυτόματα νέο.

ΚατάστασηΑποτέλεσμαΕνέργεια πραγματοποιού
Διαγραφή εφαρμογήςToken ακυρώνεταιΔιαγραφή token από βάση δεδομένων
Επαναφορά από αντιγραφήΝέο tokenΕνημέρωση στη βάση δεδομένων
Επαναφορά Google Play ServicesToken αναγεννήθηκεΕπεξεργασία onNewToken
Λήξη του tokenΑυτόματη ενημέρωσηΕγγραφή σε ενημερώσεις

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

Τι να κάνω εάν δεν λήφθηκε το Registration Token;

Ελέγξτε την παρουσία των Google Play Services στη συσκευή, την ορθότητα του αρχείου google-services.json και την έκδοση του Firebase SDK. Βεβαιωθείτε ότι η εφαρμογή έχει άδεια πρόσβασης στο διαδίκτυο.

Πόσο συχνά αλλάζει το Registration Token;

Το token μπορεί να αλλάξει κατά τη διαγραφή και επανεγκατάσταση της εφαρμογής, εκκαθάριση δεδομένων, επαναφορά από αντιγραφή ή είσοδο σε έναν άλλο λογαριασμό Google. Δεν υπάρχει αυστηρό χρονικό διάστημα.

Μπορεί μια συσκευή να έχει πολλά Registration Token;

Ναι, κάθε εφαρμογή στη συσκευή λαμβάνει το δικό της FCM token. Εάν υπάρχουν τρεις εφαρμογές με Firebase στη συσκευή, κάθε μία θα έχει το δικό της μοναδικό Registration Token.

Πώς να ελέγξω αν το Registration Token είναι ακόμα έγκυρο;

Στείλτε μια δοκιμαστική ειδοποίηση μέσω της κονσόλας Firebase ή FCM HTTP API. Εάν το token είναι άκυρο, το API θα επιστρέψει σφάλμα UNREGISTERED ή NOT_FOUND.

Είναι ασφαλής η αποθήκευση Registration Token στο διακομιστή;

Το Registration Token δεν είναι μυστικό κλειδί, αλλά η διαρροή του επιτρέπει την αποστολή ειδοποιήσεων στη συσκευή του χρήστη. Αποθηκεύστε τα token σε προστατευμένη βάση δεδομένων και χρησιμοποιείτε HTTPS για μεταφορά.

Συμπεράσματα

  • Registration Token — υποχρεωτικό στοιχείο για την παράδοση ειδοποιήσεων push μέσω Firebase Cloud Messaging.
  • Το token δημιουργείται αυτόματα κατά την πρώτη εκκίνηση της εφαρμογής με FCM SDK.
  • Σε Android, το token λαμβάνεται μέσω FirebaseMessaging.getInstance().getToken().
  • Σε iOS, το token βασίζεται σε APNs device token και μεταβιβάζεται μέσω του αντιπροσώπου MessagingDelegate.
  • Το token μπορεί να αλλάξει — η εφαρμογή πρέπει να επεξεργάζεται το callback onNewToken.
  • Το μέρος του διακομιστή πρέπει να αποθηκεύει τα τρέχοντα token και να διαγράφει τα παλιά σε σφάλμα UNREGISTERED.
  • Για αξιόπιστη παράδοση, εφαρμόστε παρακολούθηση αλλαγών token και μηχανισμό επαναλήψεων σε αποτυχίες.

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

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

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

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