पुश सूचना प्रौद्योगिकी Android पर कैसे काम करती है?


218

Google ने अपनी पुश सूचना सुविधा कैसे लागू की है? क्या यह पृष्ठभूमि में या किसी अन्य तरीके से चल रही सेवा द्वारा किए गए मतदान के माध्यम से काम करता है?


24
मेरे लिए एक वास्तविक प्रश्न की तरह लगता है। मैं इसका जवाब सोच रहा था और Google मुझे यहां लाया। एक बार फिर एक और गुणवत्ता का सवाल बंद हो गया।
टीनो म्लेकरन

1
मैं यह भी जानना चाहता हूं और एक प्रश्न लिखने की योजना बना रहा था, लेकिन यह पहले से ही है इसलिए यह निश्चित रूप से एक अच्छा प्रश्न है।
इगोर :07ordaš

जवाबों:


170

मैंने इज़राइल में एक एंड्रॉइड डेवलपर्स सम्मेलन के दौरान जो सुना है, उससे:

क्लाउड Google सर्वर पर केवल एक टीसीपी सॉकेट प्रतीक्षा मोड में है। टीसीपी कनेक्शन Google Play एप्लिकेशन द्वारा शुरू किया गया था। इसलिए Google Play को Google क्लाउड मैसेजिंग (GCM) (पूर्व में एंड्रॉइड क्लाउड टू डिवाइस मैसेजिंग सर्विस - C2DM ) कार्य करने के लिए डिवाइस पर इंस्टॉल किया जाना चाहिए ।

जब यह टीसीपी क्लाइंट सॉकेट कुछ संदेश प्राप्त करता है, तो संदेश में जानकारी होती है जैसे कि एप्लिकेशन का पैकेज नाम जिसे इसे संबोधित किया जाना चाहिए और निश्चित रूप से - डेटा ही। इस डेटा को पार्स किया जाता है और एक आशय में पैक किया जाता है जिसे प्रसारण और अंततः एप्लिकेशन द्वारा प्राप्त किया जाता है।

जब डिवाइस की रेडियो स्थिति "निष्क्रिय" मोड में बदल जाती है, तब भी टीसीपी सॉकेट खुला रहता है। आवेदन पत्र प्राप्त करने के लिए चल रहा है नहीं है।

अधिक जानकारी के लिए http://developer.android.com/google/gcm/gcm.html


1
लेकिन मुझे लगता है कि यह एमुलेटर पर भी काम करता है। मेरे दिमाग में आने वाली बात यह है कि डिवाइस अपने वर्तमान पथ (आईपी) के साथ सर्वर को अपडेट रखता है। जब Google सर्वर को अधिसूचना भेजने की आवश्यकता होती है, तो वह अपना वर्तमान पथ और आगे का संदेश उस पथ पर ले जाता है। क्या मैं कुछ हद तक सही हूं?
खरवार रजा

2
@ कंवर रज़ा: जब डिवाइस का आईपी किसी कारण से बदल जाता है, तो डिवाइस सर्वर से डिस्कनेक्ट हो जाता है। जब ऐसा होता है - डिवाइस के नए आईपी के आधार पर इसके बजाय नया कनेक्शन एस्टेब्लिश।
ताल कनाल

1
@ कंवर रज़ा: एमुलेटर गूगल प्ले के बिना भी काम करता है। मुझे लगता है कि यह गूगल प्ले के बजाय आंतरिक रूप से निर्मित इस सॉकेट को शुरू करता है
ताल कनाल

2
समझा। यह वास्तव में काफी दिलचस्प होगा, मुझे आश्चर्य है कि अगर यह सच है।
you786

2
इसलिए यह अभी भी मतदान कर रहा है, लेकिन अच्छा पक्ष यह है कि मतदान Google Play द्वारा केंद्रीकृत है।
Accollativo

143

एंड्रॉइड Google के सर्वरों के लिए एक सक्रिय कनेक्शन रखता है, लेकिन यह बहुत अधिक बिजली या डेटा का उपयोग नहीं करता है, क्योंकि इसके साथ कोई ट्रैफ़िक नहीं भेजा जाता है जब तक कि कोई चीज़ आपके फ़ोन पर Google क्लाउड मैसेजिंग (GCM) संदेश नहीं भेजती है। फोन पर केवल एक ही कनेक्शन है, जिसका उपयोग सभी ऐप द्वारा किया जाता है: एक नया ऐप इंस्टॉल करना जो GCM का उपयोग करता है, कोई अतिरिक्त लोड नहीं जोड़ता है।

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

पुश नोटिफिकेशन का उपयोग करने का लाभ यह है कि नए डेटा की जांच के लिए ऐप्स को नियमित अंतराल पर नहीं चलना पड़ता है, जिससे बिजली और डेटा दोनों की बचत होती है। GCM की तरह एक केंद्रीकृत तंत्र होने का लाभ यह है कि डिवाइस को केवल एक खुले नेटवर्क कनेक्शन की आवश्यकता होती है और Android GCM सिस्टम केवल एक चीज है जिसे चलाने की आवश्यकता होती है, बल्कि प्रत्येक ऐप के बजाय अपने नेटवर्क को बनाए रखने के लिए पृष्ठभूमि में चलते रहना चाहिए। अपने स्वयं के सर्वर से कनेक्शन।

से ले लिया: स्रोत भी देखें यहाँ


1
जीसीएम कनेक्शन के बारे में सिर्फ एक टिप्पणी। वह एकल कनेक्शन एक पोलिंग कनेक्शन है।
wmac

1
मेरे लिए महत्वपूर्ण हिस्सा यह था कि एक ई-मेल सर्वर जैसे एक तृतीय-पक्ष सर्वर वास्तव में Google GCM सर्वरों को एक सूचना संदेश भेजता है। यह एक ऐसी सेवा है जो Google नि: शुल्क प्रदान करता है और ऐसे किसी भी तृतीय-पक्ष को अपने GCN प्रोटोकॉल का उपयोग करके Google सर्वर के साथ संचार चैनल लागू करना पड़ता है। वैसे, प्रोटोकॉल बहुत ज्यादा सिर्फ JSON-स्वरूपित HTTP प्रतिक्रिया है। विस्तृत जानकारी के लिए Developers.google.com/cloud-messaging देखें ।
Kyselejsyreček

10

आप Android पर पुश सूचना को लंबे मतदान tcp कनेक्शन के साथ लागू कर सकते हैं। लेकिन इसमें एक अतिरिक्त सॉकेट => बैटरी नाली बनाए रखना शामिल होगा। या आप अलार्म मैनेजर का उपयोग करके नियमित अंतराल पर एक कनेक्शन खोल सकते हैं।

Google संभवतः सभी C2DM पुश सूचनाओं के लिए एक सॉकेट खोलता है, इसलिए इसकी अधिक बैटरी कुशल है।


तो इसकी पुष्टि की ग्राहक एक tcp कनेक्शन के साथ मतदान सही है? क्या आप जानते हैं कि यह डेटा के लिए कितनी बार मतदान करता है? क्या यह उदाहरण के लिए हर 5 सेकंड है। या यह तेजी से दिल की धड़कन की तरह है?
j2emanue

3

10 अप्रैल, 2018 तक, Google ने GCM को हटा दिया है। GCM सर्वर और क्लाइंट API को हटा दिया जाता है और इसे 11 अप्रैल, 2019 को हटा दिया जाएगा। GCM ऐप्स को Firebase Cloud Messaging (FCM) में माइग्रेट करें, जो विश्वसनीय और स्केलेबल GCM इन्फ्रास्ट्रक्चर, और अन्य नए फीचर्स को विरासत में देता है।

https://firebase.google.com/docs/cloud-messaging/


1

हाँ तुम सही हो। Google के पास एक सेवा (GTalk Service) थी और इस सेवा ने कुछ समय में Google सर्वर से पूछा।


मुझे नहीं पता। मैंने अभी पढ़ा है कि C2DM कैसे काम कर रहा था। अब कुछ बदल सकता है।
यूरी

-3

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


यह पृष्ठभूमि पर एक लंबे समय से चल रहे टीसीपी कनेक्शन है, यह उत्तर पर नहीं समझाया गया है, कृपया प्रश्न के लिए क्या पूछें :)
निश्चल गौतम
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.