1

現在、私のiOS 10アプリは、特定の成果と経験値(StackOverflowと似たシステム)を保持するユーザープロファイルで構築しています。私はすでにFacebook Login、FIRAuthなどを構築しています。現時点ではFirebaseのDBのデータ構造について考えています。私はFirebase Guide for flat data structuresと、一般的なFirebaseのデータガイド(Ray Wenderlichのようなもの)を読みました。プロファイルと基本的なゲーム化機能を備えたiOSアプリのFirebaseデータ構造

これは、ユーザーがすでに何ができるかである:これは、

  • (すでにFIRAuthを介して処理)訪問プロフィールページをなどをFacebookの(...)と

    • ログインをして画像を取得し、名前を付けます

      :自分の名前とプロフィール写真は、これは私ののto-doリストある

    (すでにProfileViewControllerで取り扱わ)を示します0

    • StackExchange/StackOverflowと同様のバッジ/タイトルによる基本的な成果。ユーザーはアクションXYを20回行いました=>アクションXYのための20回のバッジ;私はどちらかを考えていた:

      a)のそれぞれについて、単一のブールのVARを持つ)文字列として集められたバッジ()の全部または

      Bを保持しているユーザーのプロファイル、のそれぞれの配列/リストを持ちますDB

    • の面ですべてのプロファイルに対してこれだけのInt値経験値を持つRPGゲームでレベリングシステムのようなもの - ユーザー内の成果は、アプリの一般的な使用状況を追跡

    • 秒成果トラッカーを、プロファイル

    私の質問:

    どのようにして、前述のバッジ(アップに50-60の成果かもしれない)と、ユーザーの個別のレベル/ XPのポイントを保持するデータベースとFIRAuthプロファイルを組み合わせたでしょうか?

    JSON DBのモデリングには新しくなっています。私は、問題の機能のためのコード等の点でソリューションを求めています - ユーザープロファイルのデータ構造の援助の手助け。

    私は今後もユーザープロファイルの拡張機能(メッセージングなど)を検討しており、今後一定のレベル/業績を持つすべてのユーザーに通知を送信できるはずです(これにより、 b)に向かって) - あまりにも多くのネスティングが既に問題になっていません。

  • 答えて

    2

    以下の構造を使用すると、ユーザーの業績パスの子を観察することで特定のユーザーの業績を取得できます。しかし、これはあなただけの成果の鍵です。

    ユーザーがuid 1j6Ft1BT30TFG403obvGfjOHE4thである場合、各子のuser-achievements/1j6Ft1BT30TFG403obvGfjOHE4thには、achievements/-KQpsPExLsKdnVHMliiPの各達成度の値を確認するための子キーを使用できます。

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

    ありがとうございました!私はそれが可能だと思います、私は "ユーザー"にXPのものを追加するだろうか?特定の業績を持つすべてのユーザーに通知を送信する場合は、「ユーザーの業績」を解析する必要があります。>次に、達成度のある子を各自uidします(インデックスがわからない場合は適切なキーのすべてを解析する必要があります)。これを平らにする方法はありますか、これは帯域幅の点で高価ではないと考えられますか?私はそれぞれの成果について50のヴァースで多くのユーザーを話しています。しかし、私が正しい業績の指標を知っていれば、それはかなり簡単だろうと思う。 – tech4242

    +1

    @ tech4242あなたは確かにユーザーにXPを追加することができます。例えばXPでユーザーをソートするには、 '/ users'パスを子キー' XP'で指定する必要があります。特定の業績を持つユーザーに通知を送信する場合は、FCMトピックを使用できます。ユーザーが達成を受け取ると、このユーザーを '/ topics/achievements_-KQpsPExLsKdnVHMliiP'に登録することができます。コンソールで、このトピックへの通知を送信するか、FCM [link](http://fcm.googleapis.com/fcm/send)を使用してもう少し自動化された通知を送信することができます。 – Callam

    +0

    ありがとうございます!私はあなたの答えを明らかに受け入れています – tech4242

    関連する問題