C++ क्लाइंट ऐप्लिकेशन पर मैसेज पाना

आसान डाउनस्ट्रीम मैसेज पाने के लिए, हर क्लाइंट ऐप्लिकेशन को 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" होगी. मैसेज इन वजहों से मिट सकते हैं:

  1. FCM सर्वर पर बहुत ज़्यादा मैसेज सेव किए गए हैं.

    ऐसा तब हो सकता है, जब डिवाइस के ऑफ़लाइन होने पर, ऐप्लिकेशन के सर्वर FCM सर्वर को ऐसे कई मैसेज भेजें जिन्हें छोटा नहीं किया जा सकता.

  2. डिवाइस लंबे समय से कनेक्ट नहीं है और ऐप्लिकेशन सर्वर ने हाल ही में (पिछले चार हफ़्तों में) उस डिवाइस पर ऐप्लिकेशन को मैसेज भेजा है.

    हमारा सुझाव है कि यह कॉल मिलने के बाद, ऐप्लिकेशन ऐप्लिकेशन सर्वर के साथ पूरी तरह से सिंक हो जाए.