मेरे पास एक एंड्रॉइड एप्लिकेशन है जिसमें चैट क्लाइंट की सुविधाओं में से एक है। चैट क्लाइंट पृष्ठभूमि में XMPP सर्वर के रूप में Smack लाइब्रेरी के आधार पर XMPP का उपयोग करता है और Openfire को पृष्ठभूमि में चलाता है। कनेक्शन BOSH का उपयोग करके स्थापित किया गया है पूरे एक्सएमपीपी कनेक्शन हैंडलिंग को आने वाले संदेशों के लिए पृष्ठभूमि में चलाने और सुनने के लिए एक सेवा के रूप में लागू किया गया है, भले ही ऐप की गतिविधि अग्रभूमि में न हो। अब तक, सबकुछ ठीक से काम करता है।एंड्रॉइड/स्मैक: एक्सएमपीपी कनेक्शन को नींद मोड में जिंदा रखें
एकमात्र समस्या नींद मोड प्रतीत होती है। एम्यूलेटर में (जब "जागृत रहें" पर सेट किया जाता है) या फोन के उपयोग के साथ, एक्सएमपीपी कनेक्शन हो रहा है और ऐप संदेश भेज और प्राप्त कर सकता है। हालांकि, एक बार फोन नींद मोड में जाता है, तो एक्सएमपीपी कनेक्शन टूट जाता है - मैं इसे ओपनफायर सर्वर के एडमिन कंसोल में देख सकता हूं कि उपयोगकर्ता ऑफ़लाइन है। सहजता से, मैं हर समय संदेश प्राप्त करना चाहता हूं, उदाहरण के लिए, व्हाट्सएप।
बेशक, मैंने स्टैक ओवरफ्लो सहित ऑनलाइन खोज की है, लेकिन मुझे एक निश्चित उत्तर नहीं मिला। अक्सर उपयोग का मामला यह प्रतीत होता है कि एक कार्य समय-समय पर किया जाना चाहिए, हर घंटे एक बार कहें। लेकिन चैट क्लाइंट के मामले में यह फ़िर नहीं लगता है। के बाद से मुझे लगता है कि यह एक आम उपयोग है - सब के बाद, वहाँ एक बहुत से चैट ऐप्स या ऐप्लिकेशन चैट के साथ वहाँ की सुविधा है - इन मेरे सवाल कर रहे हैं:
मैं कैसे करने के लिए बदलने के लिए/का विस्तार ऐप है कि फोन सो रहा है, जबकि मैं चैट संदेश प्राप्त कर सकते हैं?
मैंने
WakeLock
पर ठोकर खाई है। क्या यह जाने का तरीका है या ये मेरे उपयोग के मामले के लिए उपयुक्त नहीं हैं?लॉलीपॉप के बाद,
JobScheduler
एपीआई भी है जो स्वयंWakeLock
का उपयोग करता है। इससे बेहतर नहीं हो सकता?उदाहरण के लिए, व्हाट्सएप इस मामले को कैसे संभालता है?
एक तरफ ध्यान दें: मुझे डिबगिंग के लिए एमुलेटर का उपयोग करके नींद मोड में समस्याएं हैं। जब मैं एमुलेटर में "सावधान रहें" बंद करता हूं, तो स्क्रीन 1+ मिनट के बाद काला हो जाती है और एक्सएमपीपी कनेक्शन टूट जाता है। लेकिन मुझे किसी भी तरह का पता नहीं है कि काला होने के बाद एमुलेटर को कैसे जगाया/स्विच करना है। एंड्रॉइड स्टूडियो वास्तव में मुझे किसी बिंदु पर बताता है कि डिवाइस या कुछ चला गया है, और मुझे फिर से एमुलेटर को पुनरारंभ करना होगा।
आपको पुश अधिसूचनाओं की आवश्यकता नहीं है, न ही यह "निर्दिष्ट निष्क्रिय अंतराल के बाद डिस्कनेक्ट होने के लिए एक्सएमपीपी कनेक्शन का प्राकृतिक व्यवहार" है। – Flow