13

アプリケーション ユーザーごとに異なるパラメーター値を取得するために、Firebase を Android プロジェクトに統合しました。私は次のことをしました:

  1. Firebase プロジェクトでユーザーを設定するここに画像の説明を入力
  2. ユーザーに一致するオーディエンスを作成しました: ここに画像の説明を入力UID はAAAAAAA...で、それに応じてBBBBBBB... です
  3. Remote Config セクションにパラメータを作成しました:ここに画像の説明を入力
  4. このパラメーターに条件を追加:ここに画像の説明を入力 および条件の値を設定:ここに画像の説明を入力
  5. 次のコードを入力して、アプリケーションからユーザーをサインインさせました:

    タスクの結果Task =   
        firebaseAuth.signInWithEmailAndPassword("test1@gmail.com", パスワード);
  6. サインインが成功したことを確認しました。
  7. 次に、リモート構成パラメーターを取得しようとしました:
    firebaseRemoteConfig.fetch()
                    .addOnCompleteListener(新しい OnCompleteListener() {
                        @オーバーライド
                        public void onComplete(@NonNull Task task) {
                            if (タスク.isSuccessful()) {
                                // 設定が正常に取得されたら、新しく取得する前にアクティブ化する必要があります
                                // 値が返されます。
                                firebaseRemoteConfig.activateFetched();
                                Log.d(TAG, firebaseRemoteConfig.getString("MyParameter"));
                            } そうしないと {
                                Log.d(TAG, "firebase リモート構成のフェッチに失敗しました。理由 = " + task.getException());
                            }
                        }
                    });

その結果、常にデフォルト値を取得しました: DefaultValue

私は何を間違えましたか?私は何を取りこぼしたか?

4

1 に答える 1

13

調査の結果、Firebase Analytics と Firebase Authentication は、自動的に相互接続しない 2 つの異なるモジュールであることがわかりました。

Firebase Authentication を使用しても、予想どおり、ユーザーが特定のオーディエンスの一部として自動的に識別されませんでした。

現在のユーザーが特定のユーザー ID を持っていることを Firebase Analytics に伝える必要があったため、関連するオーディエンスと一致させることができました。サインインの onComplete コールバックに次のコードを追加しました。

Task<AuthResult> resultTask =   
    firebaseAuth.signInWithEmailAndPassword("test1@gmail.com", 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. ユーザーがオーディエンスに入ると、オーディエンスを終了することはできません。つまり、同じデバイスからアプリ内のユーザーを変更すると、新しいオーディエンスと前のオーディエンスの 2 つのオーディエンスに一致します。
  2. これをテストしている間、リモート構成パラメーターを非常に頻繁に取得する必要がありました。キャッシュの有効期限を 0 に設定しましたが、別の問題がありました。Firebase サーバーがスロットリング例外で応答することがありました。そのため、テスト中はサーバーをスロットルしないようにしてください。そうしないと、テストの合間に長時間待たなければならなくなります。
  3. よくわかりませんが、Firebase Analytics は、Firebase Authentication で定義された ID とは異なる ID を持つアプリ ユーザーを追跡しているようです。これが、同じデバイスから Firebase Authentication で別のユーザー ID を使用してサインインした場合でも、以前の Firebase ユーザー ID 用に設定された対象者と一致する理由だと思います。
于 2016-08-18T09:01:35.763 に答える