【问题标题】:Firebase iOS data observers not responding periodically on iPhoneFirebase iOS 数据观察者在 iPhone 上没有定期响应
【发布时间】:2017-04-10 18:50:44
【问题描述】:

Firebase 我们 iOS 应用中的数据观察器停止响应几天。在模拟器上运行良好,但在真实设备上挂起。

自那以后,我们的应用中没有任何变化,我们对 Firebase 的行为方式一无所知。

我们的使用量在当前计划配额内。我们在上个月的最后一周看到了这个问题。奇怪的是,从 4 月 1 日起,所有设备都开始正常工作,正好一周到昨天为止。

谁能指导我们解决?我们尝试了社区针对同一问题的一些解决方法,例如禁用位码,但它们不起作用。

【问题讨论】:

  • 检查是否启用了持久性缓存。 Firebase.defaultConfig().persistenceEnabled = true。如果启用,它将从缓存中获取数据。数据不会刷新
  • 是的,我们已启用持久性。问题是在模拟器上一切正常,或者如果我们将设备直接连接到 XCode,但当我们通过 Testflight 或类似方式定期部署构建时就不行了。
  • 是的,主要是问题所在。尝试将其关闭并进行测试。如果您真的想一次使用持久性缓存,请使用 keepSyncing 属性
  • 当然,会尝试看看是否能解决问题。谢谢!
  • @Sivajee 禁用缓存并没有解决问题

标签: ios firebase firebase-realtime-database


【解决方案1】:

应用更新后您是否会遇到这种情况? - 我也有这种问题......在我的情况下,完成块没有被调用。 我正在写答案,因为我没有发表评论的声誉。

【讨论】:

  • 不能肯定。它偶尔发生;刚工作了一周就停止了。
  • “问题是在模拟器上一切正常,或者如果我们将设备直接连接到 XCode,但当我们通过 Testflight 或类似的方式定期部署构建时就不行了。”当我通过 TestFlight 交付时遇到同样的问题
  • @Ravi 你能在这里展示一个带有自动登录系统的sn-p吗?我认为那里存在令牌失效问题。
  • 没找到你。我们的实时数据库身份验证已关闭,应用程序现在无法自行获取一些通用(非帐户特定)数据。所以不确定令牌在我们的案例中是否有任何相关性。
  • 刚刚回答。请检查您的案件是否与我们的案件落入同一桶中。
【解决方案2】:

我们终于解决了这个问题。这与身份验证令牌问题有关。

通过在 Firebase 中启用登录,查看了有关实际问题的更多信息,通过

FIRDatabase.setLoggingEnabled(true) 

在日志中我们看到了消息:

获取令牌时出错:Error Domain=FIRAuthErrorDomain Code=17011 “没有与此标识符对应的用户记录。用户可能已被删除。” UserInfo={NSLocalizedDescription=没有与此标识符对应的用户记录。用户可能已被删除。error_name=ERROR_USER_NOT_FOUND}

在用户登录之前,我们从实时数据库中获取了一些有用的信息(“/metadata/*”)(基本上 auth 为空)。我们的数据库规则允许:

{
  "rules": {

    "metadata": {
      ".read": true,
      ".write": false
    }

    ".read": "auth != null",
    ".write": "auth != null"
}

虽然我们的数据库规则允许这种访问,但 Firebase 还是坚持使用 authToken,这可能是因为默认的“auth != null”规则保护了所有其他规则。

我们现在通过在登录后获取元数据来解决这个问题,一切都很好。

希望有人觉得这很有用。

【讨论】:

    猜你喜欢
    • 2021-07-26
    • 1970-01-01
    • 2014-06-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-16
    • 1970-01-01
    相关资源
    最近更新 更多