2013-02-07 17 views
7

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

यह मान 3 पार्टी सर्वर से GCM सर्वर से भेजने के है (नेट सर्वर):

String postdata= "collapse_key=score_update&time_to_live=2419200&delay_while_idle=1&data.message=‌​" + 
message + "&data.time=" + System.DateTime.Now.ToString() + "&registration_id=" + deviceToken + "" 

धन्यवाद अग्रिम में

उत्तर

10

delay_while_idle=1 के विपरीत है Also I have given wakelock permission in manifest

delay_while_idle=1 इसका मतलब यह है कि संदेश निष्क्रिय नहीं होगा अगर यह निष्क्रिय है (ऑफ, ऑफलाइन, लॉक स्क्रीन, इत्यादि ...)। यदि आप अपनी वैकेलॉक को कोई फर्क नहीं पड़ता है तो इसे 0 पर बदलें।

बस स्पष्ट करने के लिए - संदेश निष्क्रिय होने से रोकने के बाद डिवाइस तक पहुंच जाना चाहिए (जब तक कि यह बहुत लंबा नहीं था, जहां "बहुत लंबा" निर्दिष्ट time_to_live द्वारा निर्धारित किया जाता है)।

यहाँ GCM प्रलेखन से प्रासंगिक उद्धरण है:

delay_while_idle

तो शामिल है, इंगित करता है कि संदेश तुरंत नहीं भेजा जाना चाहिए अगर डिवाइस निष्क्रिय है। सर्वर सक्रिय होने के लिए डिवाइस का इंतजार करेगा, और फिर प्रत्येक collapse_key मान के लिए केवल अंतिम संदेश भेजा जाएगा। वैकल्पिक। डिफ़ॉल्ट मान गलत है, और एक JSON बूलियन होना चाहिए।

time_to_live

कितना समय (सेकंड में) संदेश GCM भंडारण पर रखा जाना चाहिए अगर डिवाइस ऑफ़लाइन है । वैकल्पिक (डिफ़ॉल्ट समय-प्रति-लाइव 4 सप्ताह है, और को JSON संख्या के रूप में सेट किया जाना चाहिए)।

+0

क्या आप निश्चित हैं। क्योंकि प्रलेखन में मुझे पता चला कि delay_while_idle ध्वज सत्य होना चाहिए। तो सर्वर सर्वर में .net सर्वर का उपयोग कर मैं देरी_while_idle = 1 (सत्य) गुजर रहा हूं, क्योंकि 0 (झूठा)। अगर आपको पुष्टि हो तो कृपया मुझे बताएं ... – ARIJIT

+1

"निष्क्रिय होने में देरी" का अर्थ यह है कि यह वास्तव में क्या कहता है - डिवाइस निष्क्रिय होने पर संदेश वितरण में देरी करें। जब डिवाइस सक्रिय हो जाता है (ऑनलाइन, प्रदर्शन चालू है), संदेश प्राप्त किया जाना चाहिए। यदि आप डिवाइस को लॉक करना चाहते हैं और डिवाइस लॉक होने पर भी अधिसूचना प्रदर्शित करना चाहते हैं तो वाकेलॉक अनुमति प्रासंगिक है। यही कारण है कि 'delay_while_idle = 0' जब इसका उपयोग करना केवल समझ में आता है। – Eran

+0

बहुत बहुत धन्यवाद .... इसके अलावा इसे पतन कुंजी मान, यानी, score_update में वृद्धिशील मान जोड़ने की आवश्यकता है। – ARIJIT

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