22

मैं वेब, एंड्रॉइड और आईओएस के लिए चैट सिस्टम विकसित कर रहा हूं। मेरे शोध में मुझे अंतर मिला है कि कैसे जीसीएम और एपीएनएस पुश अधिसूचनाओं को संभालते हैं।पुश अधिसूचनाएं या सॉकेट.ओ ?, या दोनों?

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

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

वेब तरफ, इसे सॉकेट.io के साथ काम करना चाहिए, इसलिए यह कोई समस्या नहीं है।

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

धन्यवाद पढ़ने के लिए अपना समय लेने के लिए बहुत कुछ और जवाब देने के लिए और भी बहुत कुछ।

+2

यह एक अच्छा सवाल है क्योंकि यहां संतुलन होना चाहिए। मैं वास्तव में इसे पढ़ने के बाद प्रेरित हूं क्योंकि मैं अभी ऐप पर अधिसूचनाएं बना रहा हूं। मैं पहले पता लगाने के लिए node.js socket.io का उपयोग करूंगा कि वे ऑनलाइन हैं या नहीं। यदि ऐसा है, तो सूचित करने के लिए socket.io का उपयोग करें, अन्यथा एंड्रॉइड/आईओएस के लिए नोटिफिकेशन का उपयोग करें। धन्यवाद! –

+0

@ पीडीके क्या आप दोनों का उपयोग कर समाप्त हो गए? – ralphgabb

+1

@ralphspoon मुझे दोनों का उपयोग करना था, अगर आप सही काम करना चाहते हैं तो सबसे अच्छा तरीका है। लेकिन अंत में, यह सिस्टम को संभालने के लिए एक गड़बड़ थी इसलिए मैं फायरबेस में आगे बढ़ता हूं। – PDK

उत्तर

8

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

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

+0

आपके उत्तर के लिए धन्यवाद, यह सुनकर अच्छा लगा कि मैं सही दिशा का नेतृत्व कर रहा हूं। – PDK

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