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