6

AndroidプロジェクトにFirebaseを統合して、異なるアプリケーションユーザの異なるパラメータ値を取得しました。 私は次のようでした:enter image description hereのUIDはAAAAAAA ...、およびBBBBBBBた...:私のFirebaseプロジェクトenter image description hereユーザーに合わせて、観客を作成し ユーザベースのFirebaseリモートコンフィグレーション条件

    1. セットアップユーザーそれに応じて。このパラメータのenter image description here
    2. 追加された条件:条件に対するenter image description hereと設定値:enter image description here
    3. は、アプリケーションからユーザにログインするために、次のコードを入力:

      リモート構成セクションのパラメータを作成
    4. Task resultTask = 
          firebaseAuth.signInWithEmailAndPassword("[email protected]", password);
    5. ログインが成功したことを確認しました。
    6. は、それから私は、リモートの設定パラメータを取得しようとした:
      firebaseRemoteConfig.fetch() 
             .addOnCompleteListener(new OnCompleteListener() { 
              @Override 
              public void onComplete(@NonNull Task task) { 
               if (task.isSuccessful()) { 
                // Once the config is successfully fetched it must be activated before newly fetched 
                // values are returned. 
                firebaseRemoteConfig.activateFetched(); 
                Log.d(TAG, firebaseRemoteConfig.getString("MyParameter")); 
               } else { 
                Log.d(TAG, "fetch firebase remote config failed. Reason = " + task.getException()); 
               } 
              } 
             });

    結果、私は常にデフォルト値だということでした。のDefaultValueを

    私が間違ってやったのか?私は何を取りこぼしたか?

  • 答えて

    6

    私は、Firebase AnalyticsとFirebase Authenticationが自動的に相互接続しない2つのモジュールであると考えました。

    Firebaseを使用すると、特定のオーディエンスの一部としてユーザーを自動的に識別することはできませんでした。

    Firebase Analyticsに、現在のユーザが特定のユーザIDを持っていることを伝える必要がありました。そのため、関連するオーディエンスに一致させることができます。

    Task<AuthResult> resultTask = 
        firebaseAuth.signInWithEmailAndPassword("[email protected]", password); 
    resultTask.addOnCompleteListener(new OnCompleteListener<AuthResult>() { 
         @Override 
         public void onComplete(@NonNull Task<AuthResult> task) { 
          // Task completed successfully 
          if (task.isSuccessful()) { 
           firebaseAnalytics.setUserId(task.getResult().getUser().getUid()); 
          } else { 
           Log.d(TAG, "signInWithEmail firebase failed"); 
          } 
         } 
        }); 
    

    重要な行は、次のとおりです:

    firebaseAnalytics.setUserId(task.getResult().getUser().getUid());

    いくつかの点に注意する:

    1. ユーザーはそれができる聴衆になると私はonCompleteのサインインコールバックに次のコードを追加しましたつまり、同じデバイスからアプリ内のユーザーを変更すると、2人の視聴者(新しい視聴者と前の視聴者)に一致することになります。
    2. これをテストしている間に、私はリモート設定パラメータを非常に頻繁にフェッチしなければなりませんでした。キャッシュの有効期限を0に設定しましたが、私は別の問題がありました。Firebaseサーバーはスロットル例外で応答しました。だから、テストはサーバーを絞らないようにするか、テストの間に長い時間待たなければなりません。
    3. 私はよく分かりませんが、Firebase Analyticsは、Firebase認証で定義されたものとは異なるIDを持つアプリケーションユーザを追跡しています。これは、同じデバイスからFirebase認証で異なるユーザーIDでサインインすると、FirebaseユーザーIDより前のユーザーに設定されていたユーザーと一致してしまうからです。
    +0

    アナリティクスが固有のIDを認識するためにログインする必要はありますか? –

    +1

    @IgorGanapolsky:はい、ログインする必要があるため、Firebaseは一意のIDを記録します。 – noti