Catch up on highlights from Firebase at Google I/O 2023. Learn more

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 अनुरोध के लिए, सर्वर एक अद्वितीय एन्कोडेड स्ट्रिंग लौटाता है। हालांकि प्रत्येक स्ट्रिंग एक अलग कुंजी प्रतीत हो सकती है, यह वास्तव में एक वैध `सूचना_की` मान है।

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

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

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
}

डिवाइस समूह XMPP संदेश

<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 प्रतिक्रिया

जब समूह में किसी एक डिवाइस को संदेश सफलतापूर्वक भेजा जाता है, तो XMPP कनेक्शन सर्वर ACK के साथ प्रतिक्रिया करता है। यदि समूह में सभी उपकरणों को भेजे गए सभी संदेश विफल हो जाते हैं, तो 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 के लिए संदर्भ जानकारी देखें।