【问题标题】:Firebase - Offline behaviour for UnityFirebase - Unity 的离线行为
【发布时间】:2017-04-06 10:34:25
【问题描述】:

我最近开始使用 Firebase 开发我的游戏,并且考虑到 Firebase 提供的功能几乎就是我所需要的,在一个地方。但现在我面临一些限制/实施问题,因此我们将不胜感激。

我正在开发一款半在线游戏,只要没有可用的网络,用户就可以玩它,并在连接后立即与 Firebase 同步。对于第一次启动连接是强制性的,因为我必须从 Firebase 中提取配置数据,以后用户可以使用离线保存状态,稍后在连接时推送。

我对 Firebase 很陌生,所以如果我误解了任何实现,请原谅我。我查看了不同的答案,主要是针对原生 Android/iOS,而不是针对 Unity。所以要么我找不到我的答案,要么几年前有人问过但仍然没有回答。谢谢!

【问题讨论】:

  • 我相信 Firebase 仍然不支持 Unity 的离线模式。我可能错了
  • @StuckBetweenTrees 感谢您的支持,我相信您是对的。因为我一直在寻找可能的解决方案,但仍然找不到。也许在 Firebase 已经完成了这么多工作和对 Firebase 的期望之后,我最终不得不离开。
  • 但我不明白你为什么需要一个。您是说人们将能够离线玩,一旦他们获得在线数据将被同步。为什么不能手动操作?看看这里stackoverflow.com/questions/27536480/…
  • 我曾想过我可能需要手动执行此操作,但随后出现的问题是维护大量数据(用户状态、元数据等)会有点麻烦。保存和检索不是问题,但我必须手动检查更新了哪个版本的数据,并且必须根据需要推送 OR pull。我确实相信我最终必须这样做,但如果 Firebase 人员已经提供了我正在寻找快速解决方法。感谢您的帮助(:非常感谢。

标签: firebase unity3d firebase-realtime-database offline


【解决方案1】:

自 Firebase SDK for Unity 版本 5.4.0 起,实时数据库的磁盘持久性现在可用。请参阅 FirebaseDatabase. SetPersistenceEnabled()release notes for that version 的文档。

【讨论】:

  • Firestore 是否支持 Unity 中的离线模式,或者仅支持实时数据库。 Firebase 建议在新项目中使用 Firestore 而不是实时数据库。
  • “Firebase 建议在新项目中使用 Firestore 而不是实时数据库。”不,它没有(检查我的凭据以了解为什么我可以如此肯定地说)。每个数据库都有自己的优势和劣势,使用哪一个取决于您的项目。文档中的database recommender 通常是最好的strt 位置。
  • 我知道您的凭据 :-) 我指的是 firebase.google.com/products 的实时数据库部分:“实时数据库是 Firebase 的原始数据库。它是一种高效、低延迟的移动应用解决方案,需要跨客户端实时同步状态。对于大多数开始新项目的开发人员,我们建议使用 Cloud Firestore 而不是实时数据库。”
  • 感谢您的关注。我已经提交了一个错误来更新它,因为它不再是真的了。我们发现这两个数据库都有自己的优势,并且已经更新了大多数文档,并更新了数据库推荐器以涵盖最常见的用例/
  • 我以为是的,但是当我看到您的评论时找不到它的文档链接。不过,我建议为它打开一个新问题,因为除了我之外,任何人都不太可能很快在这里看到评论。
【解决方案2】:

老问题,但仍然很难找到正确答案。 Firebase 文档绝对是模棱两可的:在此页面上: https://firebase.google.com/docs/database/unity/start 第一行: “Firebase 实时数据库存储数据并与我们的 NoSQL 云数据库同步。数据在所有客户端之间实时同步,并且在您的应用离线时仍然可用。”

Unity Firebase 不支持真正的离线功能。 仅当您的游戏在网络开启的情况下才有效,并且在玩游戏时,如果玩家的网络关闭,它会正确地继续只要您在停止游戏之前打开网络!所以它可以同步..否则所有更改都会丢失!

这是来自 Firebase 支持的答案:

目前,Unity 不支持离线功能。对此表示歉意。这确实是我们正在研究的东西,但是,我不能保证它很快就会可用。我们会继续考虑您的反馈意见。

文档说明您的应用将在离线时继续保存您的数据。写入数据时,首先将其写入此本地版本,并在重新建立连接后将该数据同步到服务器。查看here 了解更多详情。对于其他上下文,Firebase 的网络弹性将适用于 Unity。因此,只要应用程序保持活动状态,如果网络连接断开,Firebase 就会继续运行。在这种情况下,它会为缓存中的任何读取提供服务,并保留待处理的写入队列。但目前不支持磁盘持久化,这将允许缓存和队列在应用重启期间继续存在。

【讨论】:

    【解决方案3】:

    我激活了

    FirebaseDatabase.DefaultInstance.SetPersistenceEnabled(true); 
    

    在我的游戏初始化期间。 它在 iOS 中运行良好,但在 Android 中无法运行。

    【讨论】:

      猜你喜欢
      • 2017-04-05
      • 1970-01-01
      • 2023-03-03
      • 1970-01-01
      • 2017-10-08
      • 2014-11-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多