2017-09-17 1 views
5

저는 앱을 만들고 있는데, Firebase의 데이터베이스 및 인증 서비스에 문제가 있습니다.Firebase 인증을받는 동안 잠시 후에 데이터베이스 리스너가 실행되지 않습니다.

잠시 후 (Firebase Auth를 사용하여) 인증되었고 내 앱을 사용하는 동안 이 데이터베이스의 데이터인데도 내 데이터베이스 ValueEventListeners가 호출되지 않는 것 같습니다.

내 청취자 추가 해요 방법 :

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) 
      { 

      } 
     }); 

물건 나는 시도했다 :

  • 가 다시 로그인 독서 후 데이터베이스 규칙 (확인하는 것은 괜찮습니다 - 인증 동안 만도 통과 읽기 시뮬레이션을 & unauthenticated)
  • DatabaseReferences에서 keepSynced (true)
  • 활동의 onCreate 인스턴스에 리스너 추가 응용 프로그램의에서 onCreate
  • 의 EAD가/제거 많이 주시면 감사하겠습니다

어떤 도움을 재부팅 동기화

  • 를 트리거하기 위해 데이터베이스에 데이터를 업데이트/추가.

  • +0

    오류가 있습니까? –

    +0

    전혀 logcat 출력이 없습니다. 나는 리스너의 가능한 모든 줄에 중단 점을 넣었으며 전혀 실행하지 않습니다. 재부팅 할 때마다 일어납니다. 정말 이상합니다. – Ilan321

    +0

    firebase 데이터베이스 구조를 보여줄 수 있습니까 – Salman500

    답변

    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) { 
     
    
     
          } 
     
         });

    그래서, 분명히 문제는 "토큰 서비스"라는 API가 내 Google API를 대시 보드에서 활성화되지 않은 것이 었습니다. 중포 기지 지원에서 도움 이메일
    감사 (! 감사들), 내가 FirebaseDatabase.getInstance().setLogLevel(Logger.Level.DEBUG);

    소호를 호출 보라에 의해 디버그 로깅을 설정 한 : 그래서 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를 가능하게함으로써, 고정 된 것 같습니다 오류!

    1

    하위 데이터베이스에 대한 참조를 생성하여 필요에 따라 (기본적으로 Firebase에 표시되는 내용) 사용자 정의 Chat 클래스를 만듭니다. addChildEventListener는 my_child에서 발생하는 모든 변경 사항을 제공해야합니다. 희망이 당신을 도와줍니다.

    관련 문제