首页 文章

适用于iOS应用的Firebase数据结构,包含配置文件和基本游戏化

提问于
浏览
1

我目前正在使用用户配置文件构建我的iOS 10应用程序,该应用程序应具有某些成就和经验值(与StackOverflow类似的系统) . 我已经 Build 了我的Facebook登录,FIRAuth等 . 目前我正在考虑Firebase数据库的数据结构 . 我已经阅读了Firebase Guide for flat data structures以及一些常规的Firebase数据指南,例如来自Ray Wenderlich的指南 .

这是用户可以做的事情: already

  • 登录Facebook(...)并获取图片,名称等(已通过FIRAuth处理)

  • 访问 Profiles 页面,其中显示了他们的姓名和 Profiles 图片(已在ProfileViewController中处理)

这是我的 to-do 清单:

与StackExchange / StackOverflow类似,通过徽章/ Headers

  • 基本成就,例如用户已完成动作XY 20次=>徽章20次动作XY;我在考虑:

a)在每个用户的配置文件中都有一个数组/列表,它包含所有收集的徽章(作为字符串)或

b)为用户配置文件中的每个成就提供单个布尔变量

  • 第二个成就跟踪器,它跟踪应用程序的一般用法 - 类似于具有经验值的RPG游戏中的调平系统,因此只是DB中每个配置文件的Int值

My question:

您如何将FIRAuth配置文件与数据库结合起来以保存上述徽章(可能达到50-60个成就)以及用户的单独级别/ xp点?

请记住,我是JSON DB建模的新手 . 对于所讨论的功能,我不想要代码等方面的解决方案 - 只需帮助用户配置文件的数据结构 .

我也将在未来调查用户配置文件的扩展(消息传递等),我应该能够向所有具有某些级别/成就的用户发送通知(这使我倾向于b)) - 所以太多的嵌套已经不可能了 .

1 回答

  • 2

    使用下面的结构,您可以通过观察用户的成就路径的子项来检索特定用户的成就 . 然而,这只是成就的关键 .

    假设您的用户使用了uid 1j6Ft1BT30TFG403obvGfjOHE4th ,则对于 user-achievements/1j6Ft1BT30TFG403obvGfjOHE4th 中的每个子项,您可以使用子键在 achievements/-KQpsPExLsKdnVHMliiP 处观察每个成就的值 .

    {
        "users": {
            "1j6Ft1BT30TFG403obvGfjOHE4th": {
                "username": "john"
            }
        },
        "user-achievements": {
            "1j6Ft1BT30TFG403obvGfjOHE4th": {
                "-KQpsPExLsKdnVHMliiP": true
            }
        },
        "achievements": {
            "-KQpsPExLsKdnVHMliiP": {
                //
            }
        }
    }
    

相关问题