2017-09-17 85 views
5

Bir uygulama yapıyorum ve Firebase'in Veritabanı ve Kimlik Doğrulama hizmetlerinde bir sorunla karşılaşıyorum. Bir süre sonra Firebase Veritabanı dinleyicileri bir süre sonra doğrulanmadı

, ben doğrulanmış am süre (Firebase Auth kullanarak) ve benim uygulamayı kullanarak, benim veritabanı ValueEventListeners veritabanında veri olsa bile, çağrılacak görünmüyor.

benim dinleyicileri ekliyorum Nasıl:

FirebaseDatabase 
     .getInstance() 
     .getReference() 
     .child("my_child") 
     .addValueEventListener(new ValueEventListener() 
     { 
      @Override 
      public void onDataChange(DataSnapshot dataSnapshot) 
      { 
       Log.d("App", "onDataChange"); 
      } 

      @Override 
      public void onCancelled(DatabaseError databaseError) 
      { 

      } 
     }); 

Stuff denedim:

  • Bir relog okuma sonra veritabanı kurallarını (denetleniyor gayet - doğrulanmış ise ancak bu bile geçmesine okur simüle & unauthenticated)
  • keepSynced (true) DatabaseReferences üzerinde
  • Dinleyicileri Aktivitenin OnCreate ine ekleme Uygulamanın onCreate
  • ait ead/çıkarmadan çok takdir

Herhangi yardım Rebooting bir senkronizasyon

  • tetiklemek için veritabanındaki verilerin güncellenmesi/eklenmesi.

  • +0

    Hata var mı? –

    +0

    Hiç bir logcat çıkışı yok .. Dinleyicileri olası tüm satırlara dinleyicilere koydum ve hiç ateş etmiyorlar. Her yeniden başlatılıyor, bu gerçekten çok garip. – Ilan321

    +0

    Firebase veritabanı yapınızı – Salman500

    cevap

    3

    mFirebaseRef = new Firebase("https://yourapp.firebaseio.com/").child("my_child"); 
     
    
     
    /** 
     
         * Firebase - Receives message 
     
         */ 
     
         mFirebaseRef.addChildEventListener(new ChildEventListener() { 
     
          @Override 
     
          public void onChildAdded(DataSnapshot dataSnapshot, String s) { 
     
           if (dataSnapshot != null && dataSnapshot.getValue() != null) { 
     
            try{ 
     
    
     
             Chat model = dataSnapshot.getValue(Chat.class); 
     
    
     
    
     
             mChats.add(model); 
     
             mRecyclerView.scrollToPosition(mChats.size() - 1); 
     
             mAdapter.notifyItemInserted(mChats.size() - 1); 
     
            } catch (Exception ex) { 
     
             Log.e(TAG, ex.getMessage()); 
     
            } 
     
           } 
     
          } 
     
    
     
          @Override 
     
          public void onChildChanged(DataSnapshot dataSnapshot, String s) { 
     
    
     
          } 
     
    
     
          @Override 
     
          public void onChildRemoved(DataSnapshot dataSnapshot) { 
     
    
     
          } 
     
    
     
          @Override 
     
          public void onChildMoved(DataSnapshot dataSnapshot, String s) { 
     
    
     
          } 
     
    
     
          @Override 
     
          public void onCancelled(FirebaseError firebaseError) { 
     
    
     
          } 
     
         });

    Yani, görünüşe göre sorunun "Token Service" denilen bir API Google API'leri gösterge tablosunda etkin değil olmasıydı. Firebase Desteğinden yararlı bir e-postaya
    Teşekkürler (! Teşekkürler çocuklar), ben FirebaseDatabase.getInstance().setLogLevel(Logger.Level.DEBUG);

    Lo çağırarak beğenirsin tarafından hata ayıklama günlüğünü çevirdiğim: Yani D/PersistentConnection: pc_0 - Error fetching token: An internal error has occurred. [ �Token Service API has not been used in project <project-id> before or it is disabled. Enable it by visiting https://console.developers.google.com/apis/api/securetoken.googleapis.com/overview?project=<project-id> then retry.

    API sağlayarak, sabit gibi görünüyor hata!

    1

    Çocuğunuzun veritabanına bir başvuru oluşturun, gereksinimlerinize uygun olarak özel bir Chat sınıfı oluşturun (temelde konsolunuzda gördüğünüz). addChildEventListener, my_child'inizle ilgili tüm değişiklikleri size vermelidir. Umarım bu size yardımcı olur.