Registration Token एक अद्वितीय डिवाइस पहचानकर्ता है जिसका उपयोग Firebase Cloud Messaging (FCM) पुश सूचनाएं देने के लिए करता है। प्रत्येक डिवाइस पर प्रत्येक ऐप को अपना स्वयं का टोकन मिलता है, जिसके बिना सूचनाएं भेजना असंभव है। Firebase, 2025 के अनुसार, Registration Token ऐप के पहली बार लॉन्च होने पर स्वचालित रूप से जेनरेट होता है और कुछ शर्तों के तहत बदल सकता है।
मुख्य बिंदु
Registration Token 4096 वर्णों तक की एक अद्वितीय स्ट्रिंग है जिसे Firebase Cloud Messaging प्रत्येक ऐप इंस्टेंस को निर्दिष्ट करता है। टोकन एप्लिकेशन आईडी, डिवाइस आईडी और डिवाइस पर Google खाते के आधार पर बनता है।
Registration Token में Base64 प्रारूप में एन्कोड किए गए वर्णों का एक यादृच्छिक अनुक्रम होता है। FCM इस टोकन का उपयोग डिलीवरी पते के रूप में करता है — सर्वर टोकन पर एक सूचना भेजता है, और FCM इसे विशिष्ट डिवाइस पर रूट करता है। टोकन के बिना किसी विशिष्ट उपयोगकर्ता को पुश सूचना भेजना असंभव है।
Registration Token को Device ID (IMEI) या Advertising ID के साथ भ्रमित नहीं किया जाना चाहिए। Device ID डिवाइस का एक हार्डवेयर पहचानकर्ता है, जबकि Advertising ID का उपयोग विज्ञापन उद्देश्यों के लिए किया जाता है। Registration Token ऐप और डिवाइस के संयोजन से जुड़ा होता है, और एक डिवाइस में विभिन्न ऐप्स के लिए कई टोकन हो सकते हैं।
| पहचानकर्ता | उद्देश्य | परिवर्तनशीलता |
|---|---|---|
| Registration Token | FCM पुश सूचना वितरण | बदल सकता है |
| Device ID (IMEI) | हार्डवेयर पहचान | स्थायी |
| Advertising ID | लक्षित विज्ञापन | रीसेट किया जा सकता है |
| Instance ID | पुरानी Firebase तंत्र | हटाने पर बदलता था |
FCM कई स्थितियों में Registration Token को अमान्य मान सकता है। यदि ऐप डिवाइस से हटा दिया जाता है, तो टोकन स्वचालित रूप से रद्द हो जाता है। नए डिवाइस पर बैकअप से डेटा पुनर्स्थापित करने पर पुराना टोकन काम करना बंद कर देता है। साथ ही, पुराने टोकन पर सूचना भेजने का प्रयास करने पर Firebase UNREGISTERED स्थिति लौटाता है।
Firebase Cloud Messaging ऐप के पहली बार लॉन्च होने और getToken() विधि कॉल करने पर Registration Token जेनरेट करता है। प्रक्रिया में Google Play Services क्रेडेंशियल्स की जांच और Firebase इंफ्रास्ट्रक्चर में ऐप का पंजीकरण शामिल है।
जब कोई डिवाइस पहली बार एकीकृत FCM SDK वाला ऐप चलाता है, तो निम्नलिखित होता है। Firebase SDK डिवाइस पर Google Play Services की उपस्थिति की जांच करता है। फिर SDK एप्लिकेशन आईडी और डिवाइस जानकारी भेजते हुए Firebase सर्वरों पर एक अनुरोध भेजता है। Firebase सर्वर एक नया टोकन बनाता है और इसे ऐप को लौटाता है।
FCM लंबे समय तक चलने वाले कनेक्शनों पर आधारित आर्किटेक्चर का उपयोग करता है। Registration Token प्राप्त करने के बाद, डिवाइस एंड्रॉइड पर STOMP प्रोटोकॉल या iOS पर APNs चैनल के माध्यम से Firebase सर्वरों के साथ एक स्थायी कनेक्शन स्थापित करता है। जब सर्वर टोकन पर एक सूचना भेजता है, तो FCM टोकन द्वारा डिवाइस ढूंढता है और पेलोड वितरित करता है।
FCM द्वारा निम्नलिखित मामलों में Registration Token पुनर्जेनरेट किया जा सकता है। नए डिवाइस पर बैकअप से ऐप पुनर्स्थापित करने पर। ऐप को हटाने और पुनः इंस्टॉल करने पर। सिस्टम सेटिंग्स के माध्यम से ऐप डेटा साफ़ करने पर। डिवाइस पर किसी भिन्न Google खाते में साइन इन करने पर। Firebase परिवर्तनों को ट्रैक करने के लिए हमेशा onNewToken कॉलबैक को हैंडल करने की अनुशंसा करता है।
एंड्रॉइड पर, Registration Token Firebase Messaging SDK के माध्यम से प्राप्त किया जाता है। यह प्रक्रिया SDK के विभिन्न संस्करणों के लिए भिन्न होती है — नए संस्करण पुराने FirebaseInstanceId के बजाय FirebaseInstallations API का उपयोग करते हैं।
Firebase SDK संस्करण 21.0.0 से शुरू होकर, getToken() विधि FirebaseMessaging के माध्यम से कॉल की जाती है। यह दृष्टिकोण स्वचालित रूप से टोकन जीवनचक्र का प्रबंधन करता है और इसके अपडेट की सदस्यता लेता है।
class MyFirebaseMessagingService : FirebaseMessagingService() {
override fun onNewToken(token: String) {
sendRegistrationToServer(token)
}
private fun sendRegistrationToServer(token: String) {
// सर्वर को टोकन भेजना
Log.d("FCM", "New token: $token")
}
init {
FirebaseMessaging.getInstance()
.getToken()
.addOnCompleteListener { task ->
if (!task.isSuccessful) {
Log.w("FCM", "FCM टोकन प्राप्त करने में विफल")
return@addOnCompleteListener
}
val token = task.result
sendRegistrationToServer(token)
}
}
}
कुछ परिदृश्यों में, टोकन सेवा में नहीं बल्कि सीधे Activity या ViewModel में आवश्यक होता है। इसके लिए, ऐप जीवनचक्र में सुविधाजनक बिंदु पर getToken() कॉल किया जा सकता है। असमकालिकता को संभाले बिना इस विधि को मुख्य थ्रेड से कॉल न करना महत्वपूर्ण है।
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")
}
}
}
}
Firebase SDK के पुराने संस्करणों (संस्करण 20.x से पहले) में, टोकन FirebaseInstanceId.getInstance().getToken() के माध्यम से प्राप्त किया जाता था। यह विधि डिप्रीकेटेड के रूप में चिह्नित है और नई परियोजनाओं में उपयोग के लिए अनुशंसित नहीं है। लीगेसी कोड बनाए रखने वाले डेवलपर्स को FirebaseInstallations API पर माइग्रेट करना चाहिए।
iOS पर, Registration Token प्राप्त करने की प्रक्रिया आर्किटेक्चरली भिन्न होती है — FCM Apple Push Notification service (APNs) के माध्यम से काम करता है। Firebase SDK APNs से एक अद्वितीय डिवाइस टोकन प्राप्त करता है, इसे FCM प्रारूप में बदलता है, और ऐप को देता है।
iOS पर FCM का उपयोग करने के लिए, Firebase कंसोल में APNs प्रमाणपत्र या कुंजी कॉन्फ़िगर करना आवश्यक है। ऐप को UNUserNotificationCenter के माध्यम से सूचना अनुमति का अनुरोध करना चाहिए। APNs टोकन प्राप्त करने के बाद, Firebase SDK स्वचालित रूप से Registration Token जेनरेट करता है।
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 पर Registration Token एंड्रॉइड टोकन की तुलना में आकार में छोटा होता है, क्योंकि यह APNs डिवाइस टोकन पर आधारित होता है। Firebase SDK स्वचालित रूप से FCM टोकन को अपडेट करता है जब APNs टोकन बदलता है, जो डिवाइस को बैकअप से पुनर्स्थापित करने या ऐप को पुनः इंस्टॉल करने पर होता है।
Registration Token के जीवनचक्र का प्रबंधन पुश सूचनाओं की विश्वसनीय डिलीवरी के लिए एक महत्वपूर्ण कार्य है। यदि सर्वर पुराना टोकन संग्रहीत करता है, तो सूचनाएं वितरित नहीं होंगी और Firebase UNREGISTERED त्रुटि लौटाएगा।
Firebase SDK टोकन परिवर्तनों को ट्रैक करने के लिए दो तंत्र प्रदान करता है। एंड्रॉइड पर, FirebaseMessagingService में onNewToken कॉलबैक का उपयोग किया जाता है। iOS पर, messaging:didReceiveRegistrationToken डेलीगेट का उपयोग किया जाता है। टोकन अपडेट होने पर दोनों को कॉल किया जाता है।
// 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)
}
}
सर्वर को Registration Token को उपयोगकर्ता पहचानकर्ता के साथ संग्रहीत करना चाहिए। जब टोकन अपडेट होता है, तो क्लाइंट सर्वर को नया टोकन भेजता है, और सर्वर पुराने को बदल देता है। टोकन इतिहास रखने की अनुशंसा की जाती है: यदि नए टोकन पर सूचना वितरित नहीं होती है, तो पुराने को आज़माया जा सकता है।
Firebase कई मामलों में टोकन प्राप्त करने में त्रुटि लौटा सकता है। डिवाइस पर Google Play Services की अनुपस्थिति — टोकन प्राप्त नहीं होगा। FCM अनुरोध कोटा से अधिक — पुनः प्रयासों पर एक्सपोनेंशियल बैकऑफ़ लागू करना आवश्यक है। टोकन की समाप्ति — SDK स्वचालित रूप से नया अनुरोध करता है।
| स्थिति | परिणाम | डेवलपर कार्रवाई |
|---|---|---|
| ऐप हटाना | टोकन रद्द | डेटाबेस से टोकन हटाएं |
| बैकअप से पुनर्स्थापना | नया टोकन | डेटाबेस में अपडेट करें |
| Google Play Services रीसेट | टोकन पुनर्जेनरेट | onNewToken हैंडल करें |
| टोकन समाप्ति | स्वचालित अपडेट | अपडेट की सदस्यता लें |
अक्सर पूछे जाने वाले प्रश्न
डिवाइस पर Google Play Services की उपलब्धता जांचें, google-services.json फ़ाइल की सत्यता और Firebase SDK संस्करण की जांच करें। सुनिश्चित करें कि ऐप के पास इंटरनेट अनुमति है।
टोकन ऐप को अनइंस्टॉल और पुनः इंस्टॉल करने, डेटा साफ़ करने, बैकअप से पुनर्स्थापित करने या किसी भिन्न Google खाते में साइन इन करने पर बदल सकता है। कोई निश्चित समय अंतराल नहीं है।
हां, डिवाइस पर प्रत्येक ऐप को अपना स्वयं का FCM टोकन मिलता है। यदि किसी डिवाइस में Firebase वाले तीन ऐप हैं, तो प्रत्येक का अपना अद्वितीय Registration Token होगा।
Firebase कंसोल या FCM HTTP API के माध्यम से एक परीक्षण सूचना भेजें। यदि टोकन अमान्य है, तो API UNREGISTERED या NOT_FOUND त्रुटि लौटाएगा।
Registration Token कोई गुप्त कुंजी नहीं है, लेकिन इसके लीक होने से उपयोगकर्ता के डिवाइस पर सूचनाएं भेजी जा सकती हैं। टोकन को सुरक्षित डेटाबेस में संग्रहीत करें और ट्रांसमिशन के लिए HTTPS का उपयोग करें।
सारांश
हम एक मोबाइल एप्लिकेशन टर्नकी विकसित करेंगे
IT Sectr 2017 से स्टार्टअप और व्यवसायों के लिए iOS और Android एप्लिकेशन बनाता है। हम आपको सलाह देंगे और सर्वोत्तम समाधान प्रस्तावित करेंगे।
यह भी पढ़ें