C++ पर डिवाइस समूहों को संदेश भेजें

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

आप अपने ऐप सर्वर पर लीगेसी XMPP या HTTP प्रोटोकॉल के माध्यम से डिवाइस समूह संदेश सेवा का उपयोग कर सकते हैं। Node.js के लिए Firebase Admin SDK के पुराने संस्करण लीगेसी प्रोटोकॉल पर आधारित हैं और डिवाइस समूह संदेश सेवा क्षमताएं भी प्रदान करते हैं। अधिसूचना कुंजी के लिए अनुमत सदस्यों की अधिकतम संख्या 20 है।

डिवाइस समूहों का प्रबंधन

डिवाइस समूह को संदेश भेजने से पहले, आपको यह करना होगा:

  1. प्रत्येक डिवाइस के लिए पंजीकरण टोकन प्राप्त करें जिसे आप समूह में जोड़ना चाहते हैं।

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

डिवाइस समूहों का मूल प्रबंधन - समूह बनाना और निकालना, और डिवाइस जोड़ना या निकालना - ऐप सर्वर के माध्यम से किया जाता है। समर्थित कुंजियों की सूची के लिए लीगेसी HTTP प्रोटोकॉल संदर्भ देखें।

ऐप सर्वर पर डिवाइस समूह प्रबंधित करना

डिवाइस समूह बनाना

एक उपकरण समूह बनाने के लिए, एक POST अनुरोध भेजें जो समूह के लिए एक नाम और उपकरणों के लिए पंजीकरण टोकन की एक सूची प्रदान करता है। FCM एक नया notification_key लौटाता है जो डिवाइस समूह का प्रतिनिधित्व करता है।

HTTP पोस्ट अनुरोध

https://fcm.googleapis.com/fcm/notification पर निम्न जैसा अनुरोध भेजें:

https://fcm.googleapis.com/fcm/notification
Content-Type:application/json
Authorization:key=API_KEY
project_id:SENDER_ID

{
   "operation": "create",
   "notification_key_name": "appUser-Chris",
   "registration_ids": ["bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...",
                        "cR1rjyj4_Kc:APA91bGusqbypSuMdsh7jSNrW4nzsM...",
                        ... ]

notification_key_name एक नाम या पहचानकर्ता है (उदाहरण के लिए, यह एक उपयोगकर्ता नाम हो सकता है) जो किसी दिए गए समूह के लिए अद्वितीय है। notification_key_name और notification_key पंजीकरण टोकन के समूह के लिए अद्वितीय हैं। यह महत्वपूर्ण है कि यदि आपके पास एक ही प्रेषक आईडी के लिए एकाधिक क्लाइंट ऐप्स हैं, तो प्रत्येक क्लाइंट ऐप के लिए notification_key_name अद्वितीय है। यह सुनिश्चित करता है कि संदेश केवल इच्छित लक्ष्य ऐप पर जाएं।

प्रतिक्रिया प्रारूप

एक सफल अनुरोध निम्नलिखित की तरह एक notification_key लौटाता है:

{
   "notification_key": "APA91bGHXQBB...9QgnYOEURwm0I3lmyqzk2TXQ"
}

बाद के संचालन में उपयोग करने के लिए notification_key और संबंधित notification_key_name सहेजें।

अधिसूचना कुंजी पुनर्प्राप्त करना

यदि आपको मौजूदा अधिसूचना कुंजी प्राप्त करने की आवश्यकता है, तो GET अनुरोध में notification_key_name का उपयोग करें जैसा कि दिखाया गया है:

https://fcm.googleapis.com/fcm/notification?notification_key_name=appUser-Chris
Content-Type:application/json
Authorization:key=API_KEY
project_id:SENDER_ID
{}

किसी दिए गए अधिसूचना कुंजी नाम के लिए प्रत्येक GET अनुरोध के लिए, सर्वर एक अद्वितीय एन्कोडेड स्ट्रिंग देता है। हालांकि प्रत्येक स्ट्रिंग एक अलग कुंजी प्रतीत हो सकती है, यह वास्तव में एक मान्य `notification_key` मान है।

डिवाइस समूह से डिवाइस जोड़ना और निकालना

किसी मौजूदा समूह से उपकरणों को जोड़ने या हटाने के लिए, जोड़ने या हटाने के लिए सेट operation पैरामीटर के साथ एक POST अनुरोध भेजें, और add या remove के लिए पंजीकरण टोकन प्रदान करें।

HTTP पोस्ट अनुरोध

उदाहरण के लिए, पंजीकरण टोकन के साथ एक उपकरण जोड़ने के लिए bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1... appUser-Chris पर, आप यह अनुरोध भेजेंगे:

{
   "operation": "add",
   "notification_key_name": "appUser-Chris",
   "notification_key": "APA91bGHXQBB...9QgnYOEURwm0I3lmyqzk2TXQ",
   "registration_ids": ["bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1..."]
}

प्रतिक्रिया प्रारूप

डिवाइस को जोड़ने या हटाने का एक सफल अनुरोध निम्न की तरह एक notification_key देता है:

{
   "notification_key": "APA91bGHXQBB...9QgnYOEURwm0I3lmyqzk2TXQ"
}

डिवाइस समूहों को डाउनस्ट्रीम संदेश भेजना

किसी डिवाइस समूह को संदेश भेजना एक व्यक्तिगत डिवाइस पर संदेश भेजने के समान है। डिवाइस समूह के लिए अद्वितीय अधिसूचना कुंजी के to पैरामीटर सेट करें। पेलोड समर्थन के विवरण के लिए संदेश प्रकार देखें। इस पृष्ठ के उदाहरण दिखाते हैं कि लीगेसी HTTP और XMPP प्रोटोकॉल में डिवाइस समूहों को डेटा संदेश कैसे भेजें।

डिवाइस समूह HTTP पोस्ट अनुरोध

https://fcm.googleapis.com/fcm/send
Content-Type:application/json
Authorization:key=AIzaSyZ-1u...0GBYzPu7Udno5aA

{
  "to": "aUniqueKey",
  "data": {
    "hello": "This is a Firebase Cloud Messaging Device Group Message!",
   }
}

डिवाइस समूह HTTP प्रतिक्रिया

यहां "सफलता" का एक उदाहरण दिया गया है - notification_key में इसके साथ जुड़े 2 पंजीकरण टोकन हैं, और संदेश उन दोनों को सफलतापूर्वक भेजा गया था:

{
  "success": 2,
  "failure": 0
}

यहां "आंशिक सफलता" का एक उदाहरण दिया गया है - notification_key में इसके साथ जुड़े 3 पंजीकरण टोकन हैं। संदेश सफलतापूर्वक केवल 1 पंजीकरण टोकन को भेजा गया था। प्रतिक्रिया संदेश पंजीकरण टोकन ( registration_ids ) को सूचीबद्ध करता है जो संदेश प्राप्त करने में विफल रहे:

{
  "success":1,
  "failure":2,
  "failed_registration_ids":[
     "regId1",
     "regId2"
  ]
}

जब कोई संदेश एक या एक से अधिक पंजीकरण टोकन को एक notification_key से संबद्ध करने में विफल रहता है, तो ऐप सर्वर को पुनर्प्रयासों के बीच बैकऑफ़ के साथ पुनः प्रयास करना चाहिए।

यदि सर्वर किसी ऐसे उपकरण समूह को संदेश भेजने का प्रयास करता है जिसमें कोई सदस्य नहीं है, तो प्रतिक्रिया निम्न की तरह दिखती है, 0 सफलता और 0 विफलता के साथ:

{
  "success": 0,
  "failure": 0
}

डिवाइस समूह एक्सएमपीपी संदेश

<message id="">
  <gcm xmlns="google:mobile:data">
  {
      "to": "aUniqueKey",
      "message_id": "m-1366082849205" ,
      "data": {
          "hello":"This is a Firebase Cloud Messaging Device Group Message!"
      }
  }
  </gcm>
</message>

डिवाइस समूह एक्सएमपीपी प्रतिक्रिया

जब संदेश समूह में किसी एक डिवाइस को सफलतापूर्वक भेजा जाता है, तो एक्सएमपीपी कनेक्शन सर्वर एसीके के साथ प्रतिक्रिया करता है। यदि समूह में सभी उपकरणों को भेजे गए सभी संदेश विफल हो जाते हैं, तो XMPP कनेक्शन सर्वर NACK के साथ प्रतिक्रिया करता है।

यहां "सफलता" का एक उदाहरण दिया गया है - notification_key में इसके साथ जुड़े 3 पंजीकरण टोकन हैं, और उन सभी को संदेश सफलतापूर्वक भेजा गया था:

{
  "from": "aUniqueKey",
  "message_type": "ack",
  "success": 3,
  "failure": 0,
  "message_id": "m-1366082849205"
}

यहां "आंशिक सफलता" का एक उदाहरण दिया गया है - notification_key में इसके साथ जुड़े 3 पंजीकरण टोकन हैं। संदेश सफलतापूर्वक केवल 1 पंजीकरण टोकन को भेजा गया था। प्रतिक्रिया संदेश पंजीकरण टोकन को सूचीबद्ध करता है जो संदेश प्राप्त करने में विफल रहे:

{
  "from": "aUniqueKey",
  "message_type": "ack",
  "success":1,
  "failure":2,
  "failed_registration_ids":[
     "regId1",
     "regId2"
  ]
}

जब FCM कनेक्शन सर्वर समूह के सभी उपकरणों को वितरित करने में विफल रहता है। ऐप सर्वर को नैक रिस्पॉन्स मिलेगा।

संदेश विकल्पों की पूरी सूची के लिए, अपने चुने हुए कनेक्शन सर्वर प्रोटोकॉल, HTTP या XMPP के लिए संदर्भ जानकारी देखें।