Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/219.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android Firebase数据库侦听器在经过身份验证一段时间后未启动_Android_Firebase Realtime Database_Firebase Authentication - Fatal编程技术网

Android Firebase数据库侦听器在经过身份验证一段时间后未启动

Android Firebase数据库侦听器在经过身份验证一段时间后未启动,android,firebase-realtime-database,firebase-authentication,Android,Firebase Realtime Database,Firebase Authentication,我正在制作一个应用程序,但Firebase的数据库和身份验证服务出现了问题 过了一会儿,当我通过身份验证(使用Firebase Auth)并使用我的应用程序时,我的数据库值EventListeners似乎没有被调用,即使数据库中有数据 如何添加我的侦听器: FirebaseDatabase .getInstance() .getReference() .child("my_child") .addValueEventListener

我正在制作一个应用程序,但Firebase的数据库和身份验证服务出现了问题

过了一会儿,当我通过身份验证(使用Firebase Auth)并使用我的应用程序时,我的数据库值EventListeners似乎没有被调用,即使数据库中有数据

如何添加我的侦听器:

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

            }
        });
我试过的东西:

  • 检查数据库规则(在重新记录读取后可以,但即使经过身份验证和未经身份验证,模拟读取也会通过)
  • 在数据库引用上保持同步(true)
  • 在活动的onCreate而不是应用程序的onCreate中添加侦听器
  • 在数据库中添加/删除/更新数据以触发同步
  • 重新启动

任何帮助都将不胜感激。

创建对您孩子数据库的引用,根据您的要求创建自定义聊天类(基本上就是您在firebase中看到的内容)。 addChildEventListener应该为您提供my_孩子发生的所有更改。希望这对你有帮助

mFirebaseRef=新Firebase(“https://yourapp.firebaseio.com/)。孩子(“我的孩子”);
/**
*Firebase-接收消息
*/
mFirebaseRef.addChildEventListener(新的ChildEventListener(){
@凌驾
公共void onChildAdded(DataSnapshot DataSnapshot,字符串s){
if(dataSnapshot!=null&&dataSnapshot.getValue()!=null){
试一试{
Chat model=dataSnapshot.getValue(Chat.class);
添加(模型);
mRecyclerView.scrollToPosition(mChats.size()-1);
mAdapter.notifyItemInserted(mChats.size()-1);
}捕获(例外情况除外){
Log.e(标记,例如getMessage());
}
}
}
@凌驾
公共void onChildChanged(DataSnapshot DataSnapshot,字符串s){
}
@凌驾
ChildRemoved上的公共void(DataSnapshot DataSnapshot){
}
@凌驾
已移动ChildMoved上的公共void(DataSnapshot DataSnapshot,字符串s){
}
@凌驾
取消后的公共无效(FirebaseError FirebaseError){
}

});因此,问题显然是在我的Google API仪表板中没有启用名为“令牌服务”的API。
感谢Firebase支持部门的一封有用的电子邮件(谢谢大家!),我通过调用
FirebaseDatabase.getInstance().setLogLevel(Logger.Level.debug)打开了调试日志记录

瞧:
D/PersistentConnection:pc_0-获取令牌时出错:发生内部错误。[ �令牌服务API以前未在项目中使用过或已禁用。请通过访问来启用它https://console.developers.google.com/apis/api/securetoken.googleapis.com/overview?project= 然后重试。


因此,通过启用API,它似乎已经修复了错误!

有错误吗?根本没有logcat输出..我在侦听器中所有可能的行上都设置了断点,它们根本没有触发。每次重新启动都会发生这种情况,这真的非常奇怪。你能显示你的firebase数据库吗structure@Salman500真的有必要吗?我怀疑这里的问题是数据库结构(那么,为什么web客户端可以工作?)