swift - Firebase 存储与游戏数据数据库

标签 swift firebase firebase-realtime-database firebase-storage

我开发了多个游戏,简单的游戏,所有游戏都有本地存储。当用户启动应用程序时,我在文档目录中创建一个 local_user.dat 文件,并在用户获得更多货币、购买皮肤等时更新它。

如果用户删除该应用程序并稍后再次安装,他将丢失所有进度。有点明显。所以,为了避免这种情况,我想在线存储数据。万一他删除了该应用程序,我会在服务器上有一个备份。当用户重新安装应用程序时,我将下载备份文件,而不是从零开始

经过一番搜索,我发现 Firebase 可以为我处理这个问题。我的问题是这两种方法中哪一种对我来说更有效以及为什么。

这是我的 local_user.dat 的一部分:

  "song_1_cost" : 100,
  "quote_2_owned" : false,
  "sound_on" : true,
  "song_11_owned" : false,
  "song_3_cost" : 250,
  "skin_2_cost" : 200,
  "song_5_cost" : 100,
  "song_equipped" : 0,
  "skin_4_cost" : 500,
  "song_7_cost" : 250,
  "quote_1_cost" : 100,
  "quote_4_cost" : 200,
  "song_9_cost" : 100,
  "quotes_equipped" : 1,
  "shuffle_enabled" : false,
  "song_12_cost" : 250,
  "tutorial" : true,
  "game_center_enabled" : false,
  "zen_level" : 1, etc

我的 local_user.dat 可能有所不同,从包含 30 个 key 到 100 个 key ,其平均大小为 1.5 kb。

这 2 个功能中哪一个最适合我的游戏?

  • 存储 - 将我的 local_user.dat 保存到 Firebase 存储并不断用更新版本替换它

  • 数据库 - 使用用户数据创建 json 和:

    1. 更新整个 json
    2. 更新已修改的 json 键

最佳答案

实时数据库和云存储都可以适合您的场景。将其存储在数据库中的优点是您可以查询/访问用户游戏数据中的特定元素,例如它们的 zen_level 值。

如果您的用例不需要(似乎不需要),我可能会选择更便宜或更简单的选项(根据您的非功能需求)。云存储肯定更便宜,正是因为它不提供与数据库相同的功能。

关于swift - Firebase 存储与游戏数据数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53867448/

相关文章:

ios - 仅在信息不存在时才将数据写入 firebase - Swift iOS

Android - Firebase ServerValue.TIMESTAMP 返回 "{.sv=timestamp}"

使用泛型进行 Swift 重构 : how can I imply runtime values from the generic type?

ios - 问题 : Transferring View Controllers through segue depending on what button is pushed

angular - Firebase 复制数据

java - 如何从firebase中child的引用中获取key

ios - 控制台中的 Firebase Xcode 输出

android - 在检测到仅子节点值发生变化时访问父对象

ios - Swift:如何增加数组中的元素

swift - 如何在 SwiftUI 中显示字符串数组