2014-04-10 6 views
5

मैं (बाकी ढांचे django)जीसीएम कैसे काम करता है? (Android के लिए google क्लाउड संदेश)

यहाँ एक परिदृश्य है (और शायद मेरी योजना) जो मैं बाकी एपीआई का उपयोग कर अपने सर्वर से कनेक्ट एक Android एप्लिकेशन है:

  • डेटा जेएसन
  • के रूप में आगे भेज दिया गया है मेरे पास एक उपयोगकर्ता मॉडल और एक कार्य मॉडल है जहां उपयोगकर्ता कुछ कार्य के मालिक हैं।
  • उपयोगकर्ता सामान्य रूप से किसी अन्य उपयोगकर्ता को एक कार्य भेजता है (जेसन के साथ इस तरह: {"मालिक": "exampleuser", "from": "otheruser", "content": "example" ...} POST विधि का उपयोग करके) - कार्यों में एक बुलियन फ़ील्ड "पूरा" होता है और कार्य पूरा होने के बाद हटा दिया जाता है (PUT या पैच विधि का उपयोग करके: पूरा = सत्य,)
  • POST विधि का उपयोग करके एक नया कार्य बनने के बाद, एकमात्र तरीका उपयोगकर्ता देख सकते हैं किसी भी उनके कार्यों के विषय में गतिविधियों GET विधि का उपयोग करता है सभी उपयोगकर्ता के स्वामित्व कार्यों की एक सूची प्राप्त करने के लिए एक Android गतिविधि के माध्यम से है,

प्रयोक्ता के सभी वस्तुओं को देख कर तो मेरी प्रश्न हैं:

  1. उपयोगकर्ता को हर बार ऐप की जांच करने के बजाय। उपयोगकर्ता को सूचित करने के लिए मैं जीसीएम का उपयोग कैसे कर सकता हूं?
  2. यह कैसे बताएगा कि कौन सा उपयोगकर्ता या डिवाइस पुश अधिसूचना भेजना है?
  3. जीसीएम कैसे जानता है कि कार्यों में कोई बदलाव आया है या जब कोई उपयोगकर्ता कोई कार्य पोस्ट करता है?

उत्तर

7

प्रति GCM कार्यान्वयन रूप में, यह आवश्यकता है कि आप जो सभी अनुरोधों, दोनों आवक और जावक का प्रबंधन करेगा एक दूरस्थ सर्वर को लागू। आप बस वेब सर्वर के रूप में कार्यरत वेब सर्वर के साथ ऐसा कर सकते हैं, जो HTTP POST अनुरोध के साथ ग्राहकों से अनुरोध (उदाहरण के लिए) प्राप्त करेगा, और परिणामस्वरूप कार्यवाही करेगा।

इसके बजाय एप्लिकेशन हर जाँच करने के लिए उपयोगकर्ता होने के

। उपयोगकर्ता को सूचित करने के लिए मैं जीसीएम का उपयोग कैसे कर सकता हूं?

यह सर्वर द्वारा प्रबंधित किया जाएगा जिसे मैंने अभी वर्णित किया है। यह पता चलेगा कि किसने सदस्यता ली है और अधिसूचनाएं कौन प्राप्त करनी चाहिए।

यह कैसे बताएगा कि कौन सा उपयोगकर्ता या डिवाइस पुश अधिसूचना भेजना है?

वही यहां जाता है। सर्वर, सब्सक्रिप्शन पर, उपयोगकर्ताओं को किसी प्रकार के स्टोरेज (उदाहरण के लिए एक एसक्यूएल डेटाबेस) में स्टोर करना चाहिए, और इस तरह यह पता चलेगा कि नोटिफिकेशन कौन भेजना है। इसका तात्पर्य है कि आपको कुछ टाइमआउट तंत्र को लागू करना होगा। मेरे मामले में, मैं ग्राहकों को हर 30 सेकंड में dummy HTTP पोस्ट भेजता हूं। अगर मुझे उचित अनुरोध से यह अनुरोध नहीं मिलता है, तो मैं क्लाइंट टाइम-आउट पर विचार करता हूं और इसलिए मैं उन्हें डेटाबेस से हटा देता हूं।

कैसे GCM जानता है जब वहाँ एक उपयोगकर्ता पोस्ट एक कार्य कार्य या जब करने के लिए एक परिवर्तन किया गया है?

वही कहानी, यह सब सर्वर द्वारा संभाला जाता है। आप किसी भी अनुरोध पर क्या होना चाहिए इसके तर्क को लागू करें।

आप इस पढ़ने के लिए चाहते हो सकता है: How to send location of the device on server when needed

और यह भी इस संदर्भ:

+3

जीसीएम सर्वर से एक संदेश को एक इरादे में कैसे बदलता है, जब एप्लिकेशन नहीं चल रहा है? एंड्रॉइड पर क्या चल रहा है जिसे मार नहीं किया जा सकता है (यानी जब भी कोई संदेश आ सकता है) हमेशा चल रहा है) जो इस महत्वपूर्ण कदम को पूरा करता है, इसलिए मेरा ऐप एक इरादे से शुरू हो जाता है? – Michael

27

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

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

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

+0

जानकारी के लिए धन्यवाद। [मेरे प्रश्न] के अनुसार (http://stackoverflow.com/questions/33117827/parse-api-push-notifications-parse-com-gcm-urls-ips-protocols-and-or-ports), क्या आप जानते हैं कि क्या एक खुली सॉकेट का यूआरएल है? (उपकरण से जीसीएम सर्वर से कनेक्शन का यूआरएल खोला गया है और अधिसूचना डेटा के लिए उपयोग किया जाता है) –

संबंधित मुद्दे