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. डिवाइस लंबे समय से कनेक्ट नहीं हुआ हो और ऐप्लिकेशन के सर्वर ने हाल ही में (पिछले चार हफ़्तों में) उस डिवाइस पर मौजूद ऐप्लिकेशन को एक मैसेज भेजा हो.

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