web-dev-qa-db-ja.com

Firebase Remote Configフェッチはクラウドからの値を更新しません

プロジェクトにFirebase Remote Configを設定しようとしています。アシスタントを介してFirebaseを追加しました。 Google Cloud Consoleでサーバーの値に値を追加しました。

1

Res/xmlにデフォルト値xmlを作成しました

<defaultsMap>

<!-- Strings-->
<entry >
    <key>textView_send_text</key>
    <value >your phrase goes here.</value>
</entry>

</defaultsMap>

それは私のMainActivityです:

final private FirebaseRemoteConfig mFirebaseRemoteConfig = FirebaseRemoteConfig.getInstance();

protected void onCreate(Bundle savedInstanceState) {
    //..code..

    //fetch from Firebase
    fetchAll();
}

private void fetchAll(){
     final FirebaseRemoteConfig mFirebaseRemoteConfig = FirebaseRemoteConfig.getInstance();

    FirebaseRemoteConfigSettings configSettings = new FirebaseRemoteConfigSettings.Builder()
            .setDeveloperModeEnabled(BuildConfig.DEBUG)
            .build();
    mFirebaseRemoteConfig.setConfigSettings(configSettings);

    mFirebaseRemoteConfig.setDefaults(R.xml.defaults);

    mFirebaseRemoteConfig.fetch()
            .addOnCompleteListener(this, new OnCompleteListener<Void>() {
                @Override
                public void onComplete(@NonNull Task<Void> task) {
                    if(task.isSuccessful()){
                        Toast.makeText(MainActivity.this, "Fetch Succeeded",
                                Toast.LENGTH_SHORT).show();

                        mFirebaseRemoteConfig.activateFetched();
                    }else{
                        Toast.makeText(MainActivity.this, "Fetch Failed",
                                Toast.LENGTH_SHORT).show();
                    }

                    displayWelcomeMessage();

                }
            });





}

private void displayWelcomeMessage(){
    String welcomeMessage = mFirebaseRemoteConfig.getString("textView_send_text");

    Toast.makeText(this, welcomeMessage,
            Toast.LENGTH_SHORT).show();
}

トースト出力:

2

したがって、Toastはクラウドからではなくxml/defaultsから値を取得します。私が間違いを犯した場所を誰かが見つけたとしたら、それは非常にありがたいことです。

11
Furetur

開発テストでは、 キャッシュの有効期限 を0に指定して、即時フェッチを強制します。

mFirebaseRemoteConfig.fetch(0) // <- add the zero
        .addOnCompleteListener(this, new OnCompleteListener<Void>() {
            ...
        });
22
Bob Snyder

いくつかのヒントが私を助けました:

  • 値を更新するたびに、Firebaseコンソールで_"publish changes"_をクリックすることを忘れないでください。
  • 確認する前にアプリをアンインストールしてインストールします(Firebaseが同様に取得しない場合があります)
  • mFirebaseRemoteConfig.fetch(0)を使用します
8
Pavel Poley

何を試してもFirebaseのリモート構成がダウンロードされていないことがわかりました。通常、プロキシ(Charles Proxyなど)に接続しているときにデバッグを行っているため、Firebaseクラウドの更新が中断されていました。

プロキシされていないwifi接続に接続したら、アップデートを取得しました。

より頻繁に値を更新するデバッグビルドを実行する場合は、設定を開発者モードに設定することもできますが、プロキシが根本的な問題でした。

FirebaseRemoteConfigSettings configSettings = new FirebaseRemoteConfigSettings.Builder()
            .setDeveloperModeEnabled(BuildConfig.DEBUG)
            .build();
2
bsautner