【问题标题】:write firebase data when user is not connected to internet当用户未连接到互联网时写入 Firebase 数据
【发布时间】:2019-05-27 10:21:35
【问题描述】:

我想在用户未连接到互联网时更新 Firebase 数据库。就像您在应用程序中一样,现在您关闭了互联网连接,您关闭了应用程序。所以我使用LifeCycleObserver 来检测应用程序是在前台还是在后台。我想在我的应用程序类中调用 onStop 时将用户状态设置为离线。当互联网连接打开时,它可以正常工作。

我已经尝试过 OnDisconnect().setValue(-) 但它不起作用。谁能帮我解决这个问题?

userDatabase.child(AppConstants.USER_IS_ONLINE).onDisconnect().setValue(status,object :  DatabaseReference.CompletionListener{
            override fun onComplete(p0: DatabaseError?, p1: DatabaseReference) {
                Log.d("Success","YES")
            }

        })

【问题讨论】:

  • 你什么时候打电话给onDisconnect()?请记住,您必须在用户连接到服务器时调用它,否则客户端无法将该指令发送到服务器。
  • 当应用程序同时处于前台和后台时,我正在调用 onDisconnect()。当我的互联网连接正常时,一切正常。
  • 感谢您的帮助@Frank van Puffelen 和 Alex Mamo。我解决了那个问题。再次感谢 Frank van Puffelen 你的这一点“当用户连接到服务器时你必须调用它”点击了我的脑海。现在它工作得很好。当我们的应用程序连接到服务器时调用 OnDisconnect。我面临的下一个问题是,当我使用工作计划恢复互联网时,如何让用户恢复在线。现在它工作正常谢谢你们

标签: java android firebase


【解决方案1】:

我想在用户未连接到互联网时更新 firebase 数据库。

您无法做到这一点。由于用户设备和 Firebase 服务器之间没有互联网连接,因此您无法更新任何内容。要访问 Firebase 后端,必须连接互联网。

用户可以通过两种方式断开与 Firebase 数据库的连接。为此,请参阅以下帖子中 Frank van Puffelen 的回答:

【讨论】:

  • 在上面的帖子中,他提到“在完全断开连接的情况下,您的 onDisconnect 处理程序将立即触发,因此您的数据库将立即更新。”但我正在使用 onDisconnect()。还是不行??
  • 是的,如果完全断开连接,onDisconnect 处理程序将触发。如果处理程序不会触发,这意味着您没有完全断开连接,对吧?
猜你喜欢
  • 1970-01-01
  • 2020-11-26
  • 2021-09-09
  • 1970-01-01
  • 1970-01-01
  • 2021-12-15
  • 1970-01-01
  • 2011-11-25
  • 1970-01-01
相关资源
最近更新 更多