你可以检查android代码中的firebase服务器问题吗?

Posted

技术标签:

【中文标题】你可以检查android代码中的firebase服务器问题吗?【英文标题】:Can you check for firebase server problems in android code? 【发布时间】:2021-10-04 03:40:47 【问题描述】:

在我的应用程序中,我已经有一种方法可以检查用户是否有互联网连接问题,因此我已经处理了这些情况(我正在使用实时数据库、身份验证和云功能)。但是有没有办法事先知道服务器本身是否有问题(如中断、停机等),而不是当我在 onComplete 回调中检查失败的任务时?我记得在某处读到如果这个声明

FirebaseApp.getInstance()

抛出 IllegalStateException 基本上意味着 Firebase 不可用,但我不确定这是真的还是我需要的。

【问题讨论】:

你能分享完整的错误日志吗? @Dharmaraj 没有错误日志。它还没有发生在我身上,我只是想为这种情况做准备(如果服务器出现中断、停机等) 我怀疑你尝试的任何东西对你有用或相关,如果没有你可以观察的值,那么服务器总是有可能出现故障在您检查的时间和您的请求执行的时间之间 你检查过detecting network state吗?您可以使用实时数据库来检查用户是否连接到互联网。 @Dharmaraj 是的,我有,但正如我所说,我已经有办法检查用户是否连接到互联网。 【参考方案1】:

在我的应用中,我已经有办法检查用户是否有互联网连接问题

如果您的解决方案与此类似:

How to verify if user has network access and show a pop-up alert when there isn't

那么你应该继续它。

但是有没有办法预先知道服务器本身是否有问题(如中断、停机等)

如上例所示,要知道您是否有互联网连接,您只需 ping Google 服务器,这些服务器不太可能出现故障。由于 Firebase 服务器与 Google 不同,因此您可以类似地使用该解决方案。

如果您想要更高级的内容,您可以创建一个 HTTP 请求,并根据您的 Firebase 项目网址检查状态。要了解服务器响应,请通过检查状态代码的错误消息来处理错误。请参阅以下所有可用 HTTP 响应状态代码的列表:

https://developer.mozilla.org/en-US/docs/Web/HTTP/Status

而不是当我在 onComplete 回调中检查失败的任务时。

如果您的 onComplete 被触发,则意味着 Firebase 服务器根据 Task 对象的状态接受或拒绝了您的请求。这可以成功也可以不成功。如果不是,这并不意味着 Firebase 服务器已关闭。这意味着请求被拒绝很可能是由于 Firebase Security Rule 问题。

【讨论】:

我认为当出现服务器问题时,请求会立即被拒绝(显然不是)。所以感谢你的澄清。我关于检查用户是否有互联网连接的解决方案与您提出的解决方案不同,但这样做是有意义的,所以我将尝试实现它。抱歉,如果下一个问题有点傻,但是如果我正在 ping Google 服务器,它将能够检测到 Firebase 服务器的问题,或者“您可以类似地使用该解决方案”到底是什么意思。如果问题很愚蠢,再次抱歉。 我的意思是,与您 ping Google 服务器 (google.com) 的方式相同,您也可以 ping Firebase 服务器,看看您是否得到响应。如果您没有收到响应,则很可能服务器已关闭。我使用了那个解决方案,但我从来没有得到这样的回应。但是,检查互联网可用性是一个很好的做法。 另一个问题:因为我不熟悉 pinging(我理解这个概念但我从来没有做过),我可以通过它的 url 直接 ping 我的实时数据库吗? 您很可能应该 ping 托管网站的服务器 IP。 好的,谢谢您的帮助。我真的很感激。

以上是关于你可以检查android代码中的firebase服务器问题吗?的主要内容,如果未能解决你的问题,请参考以下文章

Android/Firebase - 检查您是不是订阅了主题

Flutter 中来自 Firebase 的应用检查不起作用

检查 Firebase/实时数据库的内容

在firebase中设置管理员规则

Android Clean Architecture中的登录流程

如何检查 Firebase 数据库中的唯一用户名(swift)