2016-07-02 24 views
7

मुझे एक बहुत ही अजीब समस्या का सामना करना पड़ता है; मेरे पास जीसीएम 8.4.0 का उपयोग करके प्रकाशित मेरे आवेदन का पिछला संस्करण था जो ठीक काम करता था। मैंने जीसीएम के बारे में कुछ भी बदले बिना कुछ कोड अपडेट किए और मुझे एहसास हुआ कि जब संदेश पृष्ठभूमि में था तब संदेश अब प्राप्त नहीं हुए थे। यह कई अलग-अलग उपकरणों पर है।एंड्रॉइड में एफसीएम डेटा संदेश प्राप्त नहीं होता है जब एप्लिकेशन पृष्ठभूमि में होता है

क्योंकि मुझे कोई स्पष्टीकरण नहीं मिला, मैं एफसीएम में स्थानांतरित हो गया। मैंने कुछ असफल प्रयास किए और यह काम करना शुरू कर दिया! तब मैं कुछ भी बदले बिना सफलतापूर्वक कई अलग-अलग संदेश भेज सकता था! Houra !!!!

मेरे हस्ताक्षरित एपीके उत्पन्न करने से ठीक पहले, मैंने अंतिम परीक्षण किया! Arrggghhhhh .... आवेदन पृष्ठभूमि में था जब संदेश अब और प्राप्त नहीं किया गया !!!!

मैंने एडवांस आरईएसटी अनुरोध के साथ अपने सर्वर के साथ परीक्षण किया, जैसा कि मैंने सफल प्रयासों के लिए उपयोग किया था और किसी भी तरह से, यह तब काम करता है जब एप्लिकेशन अग्रभूमि में होता है लेकिन एप्लिकेशन पृष्ठभूमि में नहीं होता है !!!

क्या आपने ऐसी समस्या का बहिष्कार किया ???

मैं सटीक कि जब मैं अग्रभूमि में आवेदन के साथ एक संदेश प्राप्त होता है और मैं इसे से एक अधिसूचना उत्पन्न करते हैं, वहाँ 2 अलग व्यवहार कर रहे हैं:

  • जब अनुप्रयोग पृष्ठभूमि में इसे प्राप्त करने में सक्षम है, अधिसूचना तब बनी हुई है जब मैं हालिया ऐप्स सूची से ऐप को स्वाइप करता हूं।

  • जब एप्लिकेशन पृष्ठभूमि में इसे प्राप्त करने में सक्षम नहीं होता है, जैसा कि मेरे वर्तमान मामले में, जब मैं एप्लिकेशन को स्वाइप करता हूं तो जेनरेट की गई सूचना हटा दी जाती है।

क्या इसका मतलब कुछ उपयोगी है?

संपादित करें
मैंने 9.2.0 को अद्यतन किया लेकिन समस्या बनी हुई है।

+0

संदेश भेजने के साथ-साथ संदेशों को प्राप्त करने के लिए उपयोग किए जा रहे कोड भेजने के लिए यह उपयोगी होगा। एफसीएम डेटा संदेशों के परिणामस्वरूप कॉलबैक पर मैसेज प्राप्त किया जाना चाहिए कि ऐप अग्रभूमि या पृष्ठभूमि में है या नहीं। –

उत्तर

4

काम कर प्राप्त कर सकते हैं तो मैं कुछ सप्ताह पहले काम कर रहा है, लेकिन कई अद्यतन, स्टूडियो, एसडीके, जावा के साथ इस परियोजना के पुनर्निर्माण, मैं समझ गया अब वही प्रोजेक्ट नहीं मिल रहा है जो अब काम कर रहा है।

मैंने वेब का पता लगाने के लिए कुछ घंटे बिताए, विशेष रूप से इस समस्या के बारे में स्टैकओवरफ्लो और जवाब जो मैं कर सकता था वह है "यह निर्भर करता है ...." मुझे व्यक्तिगत रूप से यह काम मिल गया है, यह अब काम नहीं करता है, आप में से कुछ के लिए यह, काम करता है कुछ अन्य लोगों के लिए यह नहीं है ...

तो मैं FireBase quickstart-android project से शुरू किया और मैं क्या कह सकता है:

नहीं है, डेटा संदेश प्राप्त नहीं कर रहे हैं जब अनुप्रयोग पृष्ठभूमि में है। या शायद मैं कहूंगा: जब एप्लिकेशन पृष्ठभूमि में होता है तो डेटा-संदेश अब प्राप्त नहीं होते हैं।

तो मैं सवाल पूछता हूं कि Firebase-support एक अच्छा उत्तर की उम्मीद है। मैं वास्तव में निराश था, जवाब है:

हैलो ... टीम,

आप हमसे संपर्क करने के लिए धन्यवाद।

असल में डेटा पेलोड पृष्ठभूमि में प्राप्त नहीं होना चाहिए। डेटा संदेश उद्देश्यों को एप्लिकेशन में वितरित किया जाता है और मैसेज रिसीव() विधि (जो पृष्ठभूमि में आग नहीं आता है) के अंदर प्राप्त होता है। ऐप पृष्ठभूमि में होने पर केवल संदेश/अधिसूचनाएं वितरित की जाती हैं।

...

निष्ठा से

, कश्मीर ...

मैं आपको लगता है कि बारे में क्या सोचते है लेकिन मेरे लिए यह एक वास्तविक आपदा नहीं जानता!

मुझे नहीं पता कि यह एक अस्थायी स्थिति है या नहीं, शायद किसी के पास अधिक सटीक जानकारी हो सकती है क्योंकि मुझे विश्वास नहीं है कि पृष्ठभूमि संदेश स्वागत अब समर्थित नहीं है। या कम से कम हमारे लिए अपने लॉग के अनुसार, इस उपकरण पृष्ठभूमि संदेशों निम्न संदेश प्रदर्शित प्राप्त है क्योंकि:

07-18 15:28:34.371 3068-3068/? W/GCM-DMM: broadcast intent callback: result=CANCELLED forIntent { act=com.google.android.c2dm.intent.RECEIVE flg=0x10000000 pkg=com.google.firebase.quickstart.fcm (has extras) } 

लेकिन onMessageReceive() कॉलबैक लागू नहीं है!

महत्वपूर्ण संपादित
परियोजना के इस प्रकार का निर्माण, कमांड लाइन उपकरण से उदाहरण FireBase quickstart-android project के लिए पूरी तरह से काम करता है लेकिन जब आप आईडीई डिबग बटन से इसे बनाने नहीं। यदि आप आईडीई डीबग बटन से अपनी परियोजना बनाना चाहते हैं, तो Android Studio 1.5 अजीब लेकिन पूरी तरह से काम करें) का उपयोग करें।

पूर्ण परीक्षण केस here उपलब्ध है।

+0

बहुत दिलचस्प है। और वे कैसे उम्मीद करते हैं कि उपयोगकर्ताओं के समूह को अलग-अलग भाषा में एक ही संदेश प्राप्त होगा? किसी को भी कोई विचार मिला है? – Anfet

+0

@ एन्फेट। मेरे मामले में, जब कोई डिवाइस मेरे सर्वर पर पंजीकृत होता है, तो मैं डिवाइस भाषा रिकॉर्ड करता हूं। तो मुझे पता है कि प्रत्येक उपयोगकर्ता के लिए कौन सी भाषा का उपयोग करना है। – 2ndGAB

+0

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

3

क्षमा करें, मैंने ध्यान नहीं दिया कि delay_while_idle गलती से सच साबित हुआ था। क्योंकि भले delay_while_idle= true साथ, मेरे पहले प्रकाशित GCM 8.4.0 और 1.5.2 स्टूडियो के साथ बनाया का उपयोग कर आवेदन, संदेश प्राप्त करते समय पृष्ठभूमि में

संपादित
व्यवहार वैसे भी अजीब है।
स्टूडियो 2.1.2 के साथ उसी प्रोजेक्ट का पुनर्निर्माण किया गया। (2.1.2 को क्रमबद्ध करने के लिए पूछे गए अपडेट को छोड़कर परियोजना में कुछ भी नहीं बदला गया) पृष्ठभूमि में रहते हुए संदेश प्राप्त नहीं करता है, जो अपेक्षित व्यवहार है।
लेकिन यह अग्रभूमि में आने के दौरान इसे प्राप्त नहीं करता है!
एफसीएम 9.2.0 को अपडेट करना इसी प्रकार काम करता है, यानी पृष्ठभूमि में संदेश प्राप्त नहीं होता है, ठीक है, लेकिन यह अग्रभूमि में आने पर इसे प्राप्त नहीं करता है, जो सही नहीं लगता है।

** संपादित 2 **

मैं निश्चित नहीं इसे अब और

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