डिवाइस ग्रुप मैसेजिंग से आप एक ही ग्रुप में कई डिवाइस जोड़ सकते हैं। यह विषय संदेश सेवा के समान है, लेकिन यह सुनिश्चित करने के लिए प्रमाणीकरण शामिल है कि समूह सदस्यता केवल आपके सर्वर द्वारा प्रबंधित की जाती है। उदाहरण के लिए, यदि आप अलग-अलग फोन मॉडल पर अलग-अलग संदेश भेजना चाहते हैं, तो आपके सर्वर उपयुक्त समूहों में पंजीकरण जोड़/हटा सकते हैं और प्रत्येक समूह को उपयुक्त संदेश भेज सकते हैं। डिवाइस ग्रुप मैसेजिंग विषय मैसेजिंग से अलग है क्योंकि इसमें सीधे आपके एप्लिकेशन के बजाय आपके सर्वर से डिवाइस ग्रुप को मैनेज करना शामिल है।
आप अपने ऐप सर्वर पर लीगेसी XMPP या HTTP प्रोटोकॉल के माध्यम से डिवाइस समूह संदेश सेवा का उपयोग कर सकते हैं। Node.js के लिए Firebase Admin SDK के पुराने संस्करण लीगेसी प्रोटोकॉल पर आधारित हैं और डिवाइस समूह संदेश सेवा क्षमताएं भी प्रदान करते हैं। अधिसूचना कुंजी के लिए अनुमत सदस्यों की अधिकतम संख्या 20 है।
डिवाइस समूहों का प्रबंधन
डिवाइस समूह को संदेश भेजने से पहले, आपको यह करना होगा:
प्रत्येक डिवाइस के लिए पंजीकरण टोकन प्राप्त करें जिसे आप समूह में जोड़ना चाहते हैं।
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 के लिए संदर्भ जानकारी देखें।
डिवाइस समूहों को अपस्ट्रीम संदेश भेजना
क्लाइंट ऐप्स, to
फ़ील्ड में उपयुक्त सूचना कुंजी पर संदेशों को लक्षित करके डिवाइस समूहों को अपस्ट्रीम संदेश भेज सकते हैं।
FCM को निम्न कॉल एक अधिसूचना कुंजी को एक अपस्ट्रीम संदेश भेजता है।
Firebase.Messaging.Message message; message.To = notification_key; message.MessageId = a_unique_message_id; message.Data["hello"] = "world"; Firebase.Messaging.FirebaseMessaging.Send(message);