आसान डाउनस्ट्रीम मैसेज पाने के लिए, हर क्लाइंट ऐप्लिकेशन को firebase::messaging::Listener
एपीआई पर मौजूद तरीकों को लागू करना होगा.
FCM शुरू करें
रजिस्ट्रेशन टोकन का ऐक्सेस पाने या मैसेज पाने के लिए, FCM का इस्तेमाल करने से पहले, इसे शुरू करना ज़रूरी है.
FCM को शुरू करने के लिए, ::firebase::messaging::Initialize
को कॉल करें और इसे अपने ::firebase::App
ऑब्जेक्ट के साथ-साथ ::firebase::messaging::Listener
क्लास का एक उदाहरण दें.
MyListener my_listener_implementation; ::firebase::messaging::Initialize(app, &my_listener_implementation);
रजिस्ट्रेशन टोकन ऐक्सेस करना
आपके ऐप्लिकेशन के पहली बार शुरू होने पर, FCM SDK, क्लाइंट ऐप्लिकेशन इंस्टेंस के लिए रजिस्ट्रेशन टोकन जनरेट करता है. अगर आपको किसी एक डिवाइस को टारगेट करना है या FCM के लिए डिवाइस ग्रुप बनाने हैं, तो आपको इस टोकन को ऐक्सेस करना होगा.
::firebase::messaging::Listener::OnTokenReceived
वर्चुअल फ़ंक्शन के ज़रिए, टोकन की वैल्यू को ऐक्सेस किया जा सकता है.
void OnTokenReceived(const char* token) { LogMessage("The registration token is `%s`", token); // TODO: If necessary send token to application server. }
मैसेज पाना और उन्हें मैनेज करना
मैसेज पाने के लिए, आपकी Listener क्लास को OnMessage
वर्चुअल फ़ंक्शन लागू करना होगा.
OnMessage
को बदलें
::firebase::messaging::Listener::OnMessage
तरीके को बदलकर, आपको मिले मैसेज के आधार पर कार्रवाइयां की जा सकती हैं और मैसेज का डेटा पाया जा सकता है:
void OnMessage(const ::firebase::messaging::Message& message) { LogMessage(TAG, "From: %s", message.from.c_str()); LogMessage(TAG, "Message ID: %s", message.message_id.c_str()); }
मैसेज, अलग-अलग तरह के इनकमिंग डेटा को दिखा सकते हैं. आम तौर पर, डेवलपर की ओर से शुरू किए जाने के बाद, ऐप्लिकेशन को मैसेज भेजे जाते हैं. आपको ऐप्लिकेशन पर भी मैसेज भेजे जाते हैं. इनमें मैसेज भेजने के इवेंट, मैसेज भेजने से जुड़ी गड़बड़ी के इवेंट, और मैसेज मिटाने के इवेंट शामिल होते हैं. इन खास इवेंट को Message::message_type
फ़ील्ड की वैल्यू देखकर अलग-अलग किया जा सकता है.
मैसेज मिटाए गए
FCM सर्वर से लंबित मैसेज मिटाने पर, यह सूचना आपके ऐप्लिकेशन को भेजी जाती है.
Message::message_type
"deleted_messages"
होगा. इन वजहों से मैसेज मिटाए जा सकते हैं:
FCM सर्वर पर बहुत ज़्यादा मैसेज सेव किए गए हैं.
ऐसा तब हो सकता है, जब कोई ऐप्लिकेशन ऑफ़लाइन होने पर, FCM के सर्वर को कई ऐसे मैसेज भेजता है जिन्हें छोटा नहीं किया जा सकता.
डिवाइस लंबे समय से कनेक्ट नहीं हुआ है और ऐप्लिकेशन सर्वर ने हाल ही में (पिछले चार हफ़्तों में) उस डिवाइस पर ऐप्लिकेशन को मैसेज भेजा है.
हमारा सुझाव है कि यह कॉल मिलने के बाद, ऐप्लिकेशन को ऐप्लिकेशन सर्वर के साथ पूरी तरह से सिंक करना चाहिए.