Catch up on everthing we announced at this year's Firebase Summit. Learn more

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

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

आप लीगेसी के माध्यम से डिवाइस समूह संदेश का उपयोग कर सकते XMPP या HTTP प्रोटोकॉल अपने अनुप्रयोग सर्वर पर। Node.js के लिए Firebase नियंत्रक 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 बाद आपरेशनों में उपयोग करने के लिए।

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

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

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 करने के लिए पैरामीटर सेट 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 , अनुप्रयोग सर्वर पुनः के बीच backoff के साथ पुनः प्रयास करना चाहिए।

यदि सर्वर किसी ऐसे उपकरण समूह को संदेश भेजने का प्रयास करता है जिसमें कोई सदस्य नहीं है, तो प्रतिक्रिया निम्न की तरह दिखती है, 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