मैं सभी ऐप उपयोगकर्ताओं (एंड्रॉइड पर) के लिए एक अधिसूचना भेजने का प्रयास कर रहा हूं, अनिवार्य रूप से डुप्लिकेट को फायरबस व्यवस्थापक कंसोल के माध्यम से भेजे जाने पर क्या होता है। यहाँ CURL कमांड है जिसकी मैं शुरुआत करता हूं:
curl --insecure --header "प्राधिकरण: कुंजी = AIzaSyBidmyauthkeyisfineL-6NcJxj-1JUvEM" --header "सामग्री-प्रकार: आवेदन / json" -d "{\" अधिसूचना \ ": {\" शीर्षक \ ": \" नोट ”। -टाइटल \ ", \" बॉडी \ ": \" नोट-बॉडी \ "}}" https://fcm.googleapis.com/fcm/send
यहाँ बताया गया है कि JSON ने आपकी आँखों के लिए आसान होने का मार्ग प्रशस्त किया:
{
"notification":{
"title":"note-Title",
"body":"note-Body"
}
}
प्रतिक्रिया जो वापस आती है वह सिर्फ दो वर्ण है:
सेवा
यही है, शब्द "को"। (हेडर एक 400 की रिपोर्ट करते हैं) मुझे संदेह है कि यह मेरे JSON में "से" नहीं होने के साथ है। एक "भी" के लिए क्या रखा जाएगा? मेरे पास कोई विषय निर्धारित नहीं है, और उपकरणों ने किसी भी चीज़ के लिए खुद को पंजीकृत नहीं किया है। फिर भी, वे अभी भी फायरबेस व्यवस्थापक पैनल से सूचनाएं प्राप्त करने में सक्षम हैं।
मैं "डेटा केवल" JSON पैकेज का प्रयास करना चाहता हूं, क्योंकि फायरबेज़ नोटिफिकेशन प्रोसेसिंग की अद्भुत सीमा के कारण यदि आपका ऐप अग्रभूमि में है, तो सूचना आपके हैंडलर द्वारा संसाधित हो जाती है, लेकिन यदि आपका ऐप पृष्ठभूमि में है, तो यह हो जाता है फायरबेस सेवा द्वारा आंतरिक रूप से संसाधित किया गया और कभी भी आपके सूचना हैंडलर को नहीं दिया गया। यदि आप एपीआई के माध्यम से अपना अधिसूचना अनुरोध सबमिट करते हैं, तो केवल इसके आसपास ही काम किया जा सकता है, लेकिन केवल यदि आप इसे केवल डेटा के साथ करते हैं। (जो तब एक ही संदेश के साथ आईओएस और एंड्रॉइड को संभालने की क्षमता को तोड़ता है।) मेरे किसी भी JSON में "डेटा" के साथ "अधिसूचना" को बदलने का कोई प्रभाव नहीं है।
ठीक है, तो मैंने यहां समाधान का प्रयास किया: फायरबेस जावा सर्वर सभी डिवाइसों को पुश नोटिफिकेशन भेजने के लिए जो मुझे लगता है कि "ठीक है, भले ही व्यवस्थापक कंसोल के माध्यम से सभी को सूचनाएं संभव हैं ... यह वास्तव में एपीआई के माध्यम से संभव नहीं है। " वर्कअराउंड प्रत्येक क्लाइंट को किसी विषय की सदस्यता लेने के लिए है, और फिर उस विषय पर अधिसूचना को बाहर करें। तो पहले कोड onCreate में:
FirebaseMessaging.getInstance().subscribeToTopic("allDevices");
फिर नया JSON मैं भेजें:
{
"notification":{
"title":"note-Title",
"body":"note-Body"
},
"to":"allDevices"
}
इसलिए अब मुझे सर्वर से वास्तविक प्रतिक्रिया मिल रही है। JSON प्रतिक्रिया:
{
"multicast_id":463numbersnumbers42000,
"success":0,
"failure":1,
"canonical_ids":0,
"results":
[
{
"error":"InvalidRegistration"
}
]
}
और यह HTTP कोड 200 के साथ आता है। ठीक है ... https://firebase.google.com/docs/cloud-messaging/http-server-ref के अनुसार "InvalidRegademy" के साथ 200 कोड का मतलब पंजीकरण टोकन के साथ एक समस्या है । शायद? क्योंकि प्रलेखन का वह हिस्सा मैसेजिंग सर्वर के लिए है। क्या अधिसूचना सर्वर एक ही है? अस्पष्ट। मैं कहीं और देखता हूं कि सक्रिय होने से पहले घंटे लग सकते हैं। ऐसा लगता है कि नए चैट रूम बनाने के लिए यह बेकार हो जाएगा, इसलिए ऐसा लगता है कि यह भी बंद है।
जब मैं स्क्रैच से एक ऐप को कोड कर सकता था तो मैं बहुत उत्साहित था, जिसे कुछ ही घंटों में सूचनाएं मिलीं जब मैंने पहले कभी Firebase का उपयोग नहीं किया था। ऐसा लगता है कि स्ट्राइप.कॉम डॉक्यूमेंटेशन के लेवल पर पहुंचने से पहले इसे लंबा रास्ता तय करना है।
नीचे पंक्ति: क्या किसी को पता है कि एडमिन कंसोल की कार्यक्षमता को मिरर करने के लिए ऐप चलाने वाले सभी उपकरणों को संदेश भेजने के लिए JSON को क्या आपूर्ति करनी है?
FirebaseInstanceIdService