C++ क्लाइंट ऐप पर संदेश प्राप्त करें

सरल डाउनस्ट्रीम संदेश प्राप्त करने के लिए, प्रत्येक क्लाइंट ऐप को firebase::messaging::Listener एपीआई पर विधियों को लागू करने की आवश्यकता होती है।

एफसीएम प्रारंभ करें

इससे पहले कि आप अपने पंजीकरण टोकन तक पहुंच प्राप्त करने या संदेश प्राप्त करने के लिए एफसीएम का उपयोग कर सकें, इसे आरंभीकृत किया जाना चाहिए।

एफसीएम को आरंभ करने के लिए, ::firebase::messaging::Initialize कॉल करें और इसे अपने ::firebase::App ऑब्जेक्ट के साथ-साथ ::firebase::messaging::Listener वर्ग के कार्यान्वयन के साथ प्रदान करें।

MyListener my_listener_implementation;
::firebase::messaging::Initialize(app, &my_listener_implementation);

पंजीकरण टोकन तक पहुंचें

आपके ऐप के प्रारंभिक स्टार्टअप पर, एफसीएम एसडीके क्लाइंट ऐप इंस्टेंस के लिए एक पंजीकरण टोकन उत्पन्न करता है। यदि आप एकल डिवाइस को लक्षित करना चाहते हैं, या एफसीएम के लिए डिवाइस समूह बनाना चाहते हैं, तो आपको इस टोकन तक पहुंचने की आवश्यकता होगी।

आप ::firebase::messaging::Listener::OnTokenReceived वर्चुअल फ़ंक्शन के माध्यम से टोकन के मूल्य तक पहुंच सकते हैं।

void OnTokenReceived(const char* token) {
  LogMessage("The registration token is `%s`", token);

  // TODO: If necessary send token to application server.
}

संदेश प्राप्त करें और संभालें

संदेश प्राप्त करने के लिए, आपके श्रोता वर्ग को 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. एफसीएम सर्वर पर बहुत सारे संदेश संग्रहीत हैं।

    ऐसा तब हो सकता है जब किसी ऐप के सर्वर डिवाइस ऑफ़लाइन होने पर एफसीएम सर्वर को गैर-बंधनेवाला संदेशों का एक समूह भेजते हैं।

  2. डिवाइस लंबे समय से कनेक्ट नहीं हुआ है और ऐप सर्वर ने हाल ही में (पिछले 4 सप्ताह के भीतर) उस डिवाइस पर ऐप को एक संदेश भेजा है।

    यह अनुशंसा की जाती है कि ऐप इस कॉल को प्राप्त करने के बाद ऐप सर्वर के साथ पूर्ण सिंक करे।