2016-06-08 11 views
9

जब मेरा एप्लिकेशन शुरू होता है, तो मैं अपने फ़ायरबेस डेटाबेस में वर्तमान उपयोगकर्ता के विवरण की जांच करता हूं (मैं इसके लिए यह यूआईडी संग्रहीत कर रहा हूं)।फायरबेस एंड्रॉइड ऐडलिस्टरफोरसिंगलेवैल्यूवेन्ट कभी-कभी डेटा नहीं लौटाता

मैं addListenerForSingleValueEvent को अपने डेटा को पढ़ने के लिए उपयोगकर्ता के रेफरी को जोड़ रहा हूं।

मेरी समस्या यह है कि कभी-कभी, यह कोई मूल्य, न तो सफलता और न ही विफलता वापस नहीं करता है।

केवल समाशोधन एप्लिकेशन का डेटा हल करता है, लेकिन निश्चित रूप से उपयोगकर्ता को फिर से लॉगिन करने के लिए मजबूर करता है।

मैंने SO पर कुछ पोस्ट पढ़ी हैं, लेकिन कोई समाधान नहीं मिला।

DatabaseReference newUser =  
FirebaseDatabase.getInstance().getReference("users/"+uid); 
newUser.addListenerForSingleValueEvent(new ValueEventListener()  
    @Override 
    public void onDataChange(DataSnapshot snapshot) {} 

    @Override 
    public void onCancelled(DatabaseError databaseError) {} 
}); 
+0

त्वरित प्रश्न: क्या आप प्रमाणीकरण का उपयोग कर रहे हैं? क्या आप एक ही ऐप में एकाधिक डेटाबेस एक्सेस कर रहे हैं (या आपने पहले एक अलग ऐप का उपयोग करने के लिए एक ही ऐप का उपयोग किया है)? –

+0

हां मैं प्रमाणीकरण का उपयोग कर रहा हूँ। मैं केवल एक डेटाबेस तक पहुंच रहा हूं। बीटीडब्ल्यू, डिवाइस को पुनरारंभ करने से भी इसे हल नहीं किया गया। – Adi

+0

यह समस्या तब शुरू हुई है जब मैंने नए एसडीके का उपयोग करना शुरू कर दिया है। – Adi

उत्तर

5

सिफारिश मैं इस के लिए देखा है Query वस्तु पर keepSynced(true) कॉल करने के लिए है:

यहाँ कोड के अपने टुकड़ा है।

+0

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

+0

लेकिन तथ्य यह है कि नए एसडीके के साथ समस्या है –

0

मेरा अनुमान user/:id मौजूद नहीं है। अपने त्रुटि आउटपुट को दोबारा जांचें:

DatabaseReference newUser = FirebaseDatabase.getInstance() 
    .getReference("users") 
    .child(uid) 
    .addListenerForSingleValueEvent(new ValueEventListener()  
     @Override 
     public void onDataChange(DataSnapshot snapshot) { 
      if (snapshot.exists()) { 
       Log.i(TAG, snapshot.val()); 
      } else { 
       Log.e(TAG, "Not found: " + uid); 
      } 
     } 

     @Override 
     public void onCancelled(DatabaseError databaseError) { 
      Log.e(TAG, databaseError.toString(); 
     } 
    }); 
-1

मुझे दिनों के लिए एक ही समस्या है और अंत में मैंने इसे ठीक कर दिया है।

ऐसा लगता है कि मेरी एपी कुंजी बदल गई थी! और यह लौटने से addListenerForSingleValueEvent() को रोक रहा था!
Firebase Console पर जाएं, अपनी प्रोजेक्ट खोलें, सेटिंग्स आइकन gear icon पर क्लिक करें और पर जाएं परियोजना सेटिंग्स। वहां आप Web API Key देखेंगे। इसे लें और इसे अपनी प्रोजेक्ट की निर्देशिका में अपनी google-services.json फ़ाइल पर कॉपी करें। यहां उस फ़ाइल से एक स्निपेट है:

... 
    ], 
    "api_key": [ 
    { 
     "current_key": "<COPY Web Api Key HERE>" 
    } 
    ], 
    ... 

यही है। फायरबेस से कुंजी के साथ "current_key" के मान को बदलने के बाद, यह काम पर लौट आया (पहले इसमें कुछ अन्य कुंजी थी जो मुझे लगता है कि मैंने Google Console पर उत्पन्न किया था और यह महीनों के लिए काम करता था। बस कुछ दिन पहले यह काम करना बंद कर दिया था)

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