FCM (Firebase Cloud Messaging) Google द्वारा एक क्रॉस-प्लेटफ़ॉर्म सेवा है जो पुश सूचनाएं वितरित करने और सर्वर और मोबाइल ऐप्लिकेशन के बीच डेटा स्थानांतरित करने के लिए है। यह एकल API के माध्यम से Android, iOS और वेब प्लेटफ़ॉर्म का समर्थन करता है। Firebase दस्तावेज़ीकरण के अनुसार, FCM दुनिया भर में प्रतिदिन 1 अरब से अधिक संदेशों को संसाधित करता है।
मुख्य बिंदु
Firebase Cloud Messaging (FCM) Google की एक क्लाउड सेवा है जो मोबाइल उपकरणों पर पुश सूचनाओं और डेटा संदेशों की विश्वसनीय डिलीवरी सुनिश्चित करती है। पहले Google Cloud Messaging (GCM) के रूप में जाना जाने वाला, FCM Firebase इकोसिस्टम में क्रॉस-प्लेटफ़ॉर्म सूचनाओं के लिए प्राथमिक उपकरण बन गया है।
FCM स्वचालित रूप से प्लेटफ़ॉर्म के आधार पर इष्टतम डिलीवरी चैनल चुनता है: Android पर यह अपने स्वयं के FCM कनेक्शन का उपयोग करता है; iOS पर यह APNS (FCM गेटवे के माध्यम से) का उपयोग करता है। डेवलपर को दो अलग-अलग एकीकरण लागू करने की आवश्यकता नहीं है — FCM रूटिंग को संभालता है।
सेवा संदेश भेजने के लिए एक एकीकृत REST API और Admin SDK प्रदान करती है। यह किसी विशिष्ट प्राप्तकर्ता प्लेटफ़ॉर्म से बंधे बिना सर्वर पक्ष से सूचनाएं भेजने की अनुमति देता है।
FCM कई डिलीवरी मोड का समर्थन करता है: किसी विशिष्ट डिवाइस पर एकल संदेश, विषय के अनुसार समूह प्रसारण, और शर्तों के अनुसार खंडित भेजना। शेड्यूल भेजना और सूचना सामग्री का A/B परीक्षण भी उपलब्ध है।
FCM आर्किटेक्चर तीन घटकों पर आधारित है: क्लाइंट ऐप्लिकेशन, Firebase Connection Server, और ऐप सर्वर। क्लाइंट स्टार्टअप पर FCM में रजिस्टर होता है और एक अद्वितीय रजिस्ट्रेशन टोकन प्राप्त करता है — एक स्ट्रिंग जो दिए गए ऐप्लिकेशन के लिए डिवाइस की पहचान करती है।
ऐप सर्वर FCM REST API को एक अनुरोध भेजता है, जिसमें प्राप्तकर्ता टोकन या विषय निर्दिष्ट होता है। Firebase Connection Server स्थायी XMPP कनेक्शन या HTTP अनुरोध का उपयोग करके संदेश वितरित करता है। यदि डिवाइस ऑफ़लाइन है, तो संदेश कतारबद्ध हो जाता है और कनेक्शन बहाल होने पर वितरित किया जाता है।
FCM प्राथमिकता कतारों और स्वीकृति तंत्र का उपयोग करके डिलीवरी की गारंटी देता है। Android पर, संदेश कतार में 28 दिनों तक संग्रहीत रहता है; iOS पर, 4 सप्ताह तक (APNS के माध्यम से)। समाप्ति तिथि के बाद, संदेश बिना सूचना के हटा दिया जाता है।
रजिस्ट्रेशन टोकन कई मामलों में बदल सकता है: ऐप डेटा पुनर्स्थापित करते समय, नए संस्करण में अपडेट करते समय, या कैश साफ़ करते समय। ऐप को टोकन अपडेट को संभालने और सर्वर के साथ सिंक्रनाइज़ करने के लिए FirebaseMessagingService.onNewToken लागू करना होगा।
FCM दो प्रकार के पेलोड का समर्थन करता है: notification और data। प्रत्येक प्रकार यह निर्धारित करता है कि प्राप्तकर्ता डिवाइस पर संदेश कैसे और कब संसाधित होता है।
| पैरामीटर | Notification | Data |
|---|---|---|
| स्वचालित प्रदर्शन | हाँ, यदि ऐप बैकग्राउंड में है | नहीं, केवल ऐप में |
| प्रसंस्करण | सिस्टम/NOS — बैकग्राउंड में; ऐप — फ़ोरग्राउंड में | हमेशा ऐप में (onMessageReceived) |
| अधिकतम आकार | 4 KB | 4 KB |
| कस्टम कुंजियां | पूर्वनिर्धारित फ़ील्ड तक सीमित | कोई भी कुंजी-मान जोड़े |
| CollapseKey आवश्यक | वैकल्पिक | समूहीकरण के लिए वैकल्पिक |
व्यवहार में, यह अनुशंसित है कि जब ऐप को onMessageReceived में पूर्ण सूचना प्रसंस्करण की आवश्यकता हो तो data संदेशों का उपयोग करें। Notification संदेश सरल परिदृश्यों के लिए उपयुक्त हैं जहां सिस्टम प्रदर्शन पर्याप्त है।
FCM और APNS दो मुख्य पुश डिलीवरी सेवाएं हैं। FCM एक क्रॉस-प्लेटफ़ॉर्म गेटवे के रूप में काम करता है, जबकि APNS केवल Apple इकोसिस्टम के लिए है। उनके मुख्य अंतर आर्किटेक्चर, प्रमाणपत्र आवश्यकताओं और रूटिंग तंत्र में हैं।
FCM और सीधे APNS के बीच चुनाव प्रोजेक्ट आर्किटेक्चर पर निर्भर करता है। क्रॉस-प्लेटफ़ॉर्म ऐप्लिकेशन के लिए, FCM सबसे अच्छा विकल्प है। केवल iOS प्रोजेक्ट के लिए, HTTP/2 API के माध्यम से APNS के साथ सीधा काम स्वीकार्य है।
FCM उचित है जब प्रोजेक्ट एक साथ Android और iOS दोनों का उपयोग करता है, साथ ही जब Firebase analytics, सूचनाओं का A/B परीक्षण, या सर्वर लॉजिक के बिना विषयों की आवश्यकता होती है। सीधा APNS न्यूनतम निर्भरता और सख्त डिलीवरी विलंबता आवश्यकताओं वाले केवल iOS ऐप्लिकेशन के लिए बेहतर है।
FCM को Android ऐप्लिकेशन से जोड़ने के लिए, आपको Firebase SDK जोड़ना होगा और प्रोजेक्ट रूट में google-services.json कॉन्फ़िगर करना होगा। टोकन रजिस्ट्रेशन के बाद, ऐप्लिकेशन FirebaseMessagingService के माध्यम से संदेश प्राप्त करने के लिए तैयार है।
// build.gradle (Module)
dependencies {
implementation("com.google.firebase:firebase-messaging:24.1.0")
}
// AndroidManifest.xml
<service android:name=".MyFirebaseMessagingService"
android:exported="false">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT"/>
</intent-filter>
</service>
class MyFirebaseMessagingService :
FirebaseMessagingService() {
override fun onNewToken(token: String) {
sendTokenToServer(token)
}
override fun onMessageReceived(message: RemoteMessage) {
message.notification?.let {
showNotification(it.title, it.body)
}
}
}
सेटअप के बाद, ऐप्लिकेशन पहले लॉन्च पर स्वचालित रूप से एक FCM टोकन प्राप्त करता है। इस डिवाइस पर बाद में सूचना वितरण के लिए टोकन को ऐप सर्वर पर भेजा जाना चाहिए।
Android 8+ पर, स्वचालित प्रदर्शन के साथ FCM सूचना भेजने से पहले, एक NotificationChannel बनाना होगा। FCM notification संदेश डिफ़ॉल्ट चैनल ID का उपयोग करते हैं, लेकिन पहला संदेश प्राप्त करते समय FirebaseMessagingService के माध्यम से एक कस्टम चैनल बनाने की अनुशंसा की जाती है। Data संदेशों को चैनल की आवश्यकता नहीं है — ऐप स्वयं तय करता है कि सूचना कैसे और कब दिखानी है।
iOS पर, FCM ऐप सर्वर और APNS के बीच एक मध्यस्थ के रूप में कार्य करता है। Firebase सर्वर से संदेश प्राप्त करता है, इसे APNS प्रारूप में लपेटता है, और Apple गेटवे के माध्यम से भेजता है। डेवलपर को Firebase कंसोल में APNS कुंजी या प्रमाणपत्र कॉन्फ़िगर करने की आवश्यकता है।
import FirebaseMessaging
import UserNotifications
class AppDelegate: UIResponder, UIApplicationDelegate {
func application(
_ application: UIApplication,
didFinishLaunchingWithOptions options: [UIApplication.LaunchOptionsKey: Any]?
) -> Bool {
FirebaseApp.configure()
UNUserNotificationCenter.current().delegate = self
Messaging.messaging().delegate = self
return true
}
}
extension AppDelegate: MessagingDelegate {
func messaging(
_ messaging: Messaging,
didReceiveRegistrationToken fcmToken: String?
) {
UserDefaults.standard.set(fcmToken, forKey: "fcm_token")
}
}
iOS पर, APNS रजिस्ट्रेशन एसिंक्रोनस रूप से होता है। FCM SDK स्वचालित रूप से APNS टोकन प्राप्त करता है और इसे Firebase सर्वर को भेजता है। didReceiveRegistrationToken नया FCM टोकन प्राप्त होने पर सक्रिय होता है, जो APNS टोकन को प्रोजेक्ट पहचानकर्ता के साथ जोड़ता है।
FCM डिलीवरी की निगरानी के लिए Firebase कंसोल प्रदान करता है: भेजी गई, प्राप्त और प्रदर्शित सूचनाओं की संख्या। सर्वर पक्ष पर डिलीवरी त्रुटियों को ट्रैक करने के लिए Firebase Cloud Functions के माध्यम से एक स्थिति कॉलबैक भी उपलब्ध है। प्रमुख मीट्रिक: सूचनाओं के इंप्रेशन और खोलना।
FCM के साथ काम करते समय, प्रत्येक परिदृश्य के लिए सही संदेश प्रकार चुनना महत्वपूर्ण है। स्वचालित प्रदर्शन वाली सरल सूचनाओं के लिए, notification संदेशों का उपयोग करें। ऐसे मामलों में जहां ऐप को प्रदर्शित करने से पहले डेटा संसाधित करने की आवश्यकता है, data संदेशों का उपयोग करें। मिश्रित प्रकार (notification + data) केवल तभी अनुशंसित है जब डेटा analytics के लिए आवश्यक हो न कि सूचना सामग्री बदलने के लिए।
टोकन केंद्रीय रूप से प्रबंधित करें। वर्तमान टोकन को उपयोगकर्ता और प्लेटफ़ॉर्म से जुड़ी तालिका में सर्वर पर संग्रहीत करें। एक पुराने टोकन सफाई तंत्र लागू करें: NotRegistered या InvalidRegistration त्रुटि मिलने पर, टोकन को डेटाबेस से हटा दें। टोकन शायद ही कभी बदलते हैं, लेकिन उनकी सफाई FCM समर्थन का एक अनिवार्य तत्व है।
संदेशों को समूहीकृत करने के लिए कोलैप्स कुंजियों (collapseKey) का उपयोग करें। यदि आप एक ही प्रकार की कई सूचनाएं भेज रहे हैं (जैसे, "मुद्रा दर अपडेट"), तो समान collapseKey सेट करें। FCM समूह से केवल अंतिम संदेश वितरित करेगा, जिससे डिवाइस लोड कम होगा और उपयोगकर्ता को सूचनाओं के ढेर से बचाया जा सकेगा।
Firebase Console और Cloud Functions के माध्यम से डिलीवरी की निगरानी करें। FCM analytics भेजी गई, प्राप्त और प्रदर्शित सूचनाओं की संख्या दिखाता है। यदि प्रदर्शन दर 70% से कम है, तो Android पर चैनल सेटिंग्स और iOS पर अनुमति सेटिंग्स जांचें। कम डिलीवरी अक्सर अक्षम चैनलों या सूचना प्रतिबंधों से संबंधित होती है। पांचवां: सूचना पाठ और भेजने के समय को अनुकूलित करने के लिए Firebase A/B परीक्षण का उपयोग करें — यह Firebase डेटा के अनुसार खोलने की दर को 15–25% तक बढ़ाता है।
अक्सर पूछे जाने वाले प्रश्न
FCM, GCM (Google Cloud Messaging) का विकासवादी अपडेट है। FCM Firebase Console के माध्यम से सरलीकृत सेटअप, अंतर्निहित analytics, विषय और Web Push समर्थन प्रदान करता है। GCM को अप्रैल 2019 में आधिकारिक रूप से बंद कर दिया गया था, और सभी प्रोजेक्ट को FCM में माइग्रेट किया जाना चाहिए।
Firebase Cloud Messaging एक मुफ्त सेवा है जिसमें संदेशों की संख्या पर कोई सीमा नहीं है। भुगतान केवल अन्य Firebase सेवाओं जैसे Cloud Functions या Firestore के उपयोग के लिए लिया जाता है। बुनियादी सूचना वितरण के लिए FCM को Spark या Blaze सदस्यता की आवश्यकता नहीं है।
FCM टोकन तब बदलता है जब: ऐप को बैकअप से पुनर्स्थापित करना, ऐप डेटा साफ़ करना, पुनः इंस्टॉल करना, बदले हुए Sender ID के साथ नए संस्करण में अपडेट करना। नया टोकन सर्वर को भेजने के लिए हमेशा FirebaseMessagingService में onNewToken को संभालें।
Google FCM चीन में अवरुद्ध है। चीन में सूचना वितरण के लिए वैकल्पिक सेवाओं का उपयोग किया जाता है: Huawei Push Kit, MiPush (Xiaomi), Oppo Push, Vivo Push। क्रॉस-प्लेटफ़ॉर्म वितरण के लिए, Getui जैसी बहु-प्रदाता सेवाओं का उपयोग किया जाता है।
अंतर्निहित Firebase कंसोल का उपयोग करें: "Cloud Messaging" — "Send Test Message" चुनें। एक परीक्षण टोकन दर्ज करें और एक notification संदेश भेजें। सूचना डिवाइस पर दिखाई देनी चाहिए। आप FirebaseMessagingService.onMessageReceived लॉग भी देख सकते हैं।
सारांश
हम एक मोबाइल एप्लिकेशन टर्नकी विकसित करेंगे
IT Sectr 2017 से स्टार्टअप और व्यवसायों के लिए iOS और Android एप्लिकेशन बनाता है। हम आपको सलाह देंगे और सर्वोत्तम समाधान प्रस्तावित करेंगे।
यह भी पढ़ें