Firebase Remote Config の Android 向けサンプルアプリのチュートリアル

このガイドでは、Remote Config を Android アプリに統合する手順を説明します。Remote Config API for Android について詳しくは、com.google.firebase.remoteconfig をご覧ください。

要件

Firebase を Android プロジェクトに追加する方法で説明されている手順に沿ってプロジェクトを設定します。

次に、アプリ モジュールの build.gradle に以下の依存関係を追加します。

    compile 'com.google.firebase:firebase-config:11.4.0'

クイックスタート サンプル用の Remote Config プロジェクトを作成する

クイックスタート サンプルを使うと、サンプルアプリのウェルカム メッセージを、Remote Config を使って定義する方法を試すことができます。クイックスタート サンプルを実行するには、まず Remote Config プロジェクトを設定する必要があります。

Firebase コンソールで [新規プロジェクトを作成] をクリックし、次のパラメータを使用して Firebase Remote Config プロジェクトを設定します。

パラメータキー デフォルト値 注:
welcome_message Welcome to this sample app 別のウェルカム メッセージを使用するように変更します。
welcome_message_caps false ウェルカム メッセージをすべて大文字で表示する場合は true に設定します。

プロジェクトの設定後、クイックスタート サンプルを実行すると Firebase コンソールで定義したウェルカム メッセージが表示されます。プロジェクトの上記のパラメータの値を変更してクイックスタート サンプルの [Remote Config のフェッチ] をタップすると、Remote Config によってアプリをどのように更新できるかを確認できます。

クイックスタート サンプルをビルドして実行する

  1. クイックスタート サンプルのコードをダウンロードして解凍します。
  2. Android Studio を開きます。
  3. [File] > [Open] を選択し、サンプルコードを抽出した場所まで移動して [Config] フォルダを開きます。
  4. サンプルをビルドして実行します。

仕組み

サンプルはまず Remote Config オブジェクトのインスタンスを取得し、デベロッパー モードを有効にしてキャッシュ更新の頻度を増やせるようにします。

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

次に、サンプルはアプリ内デフォルト値を XML ファイルから取得します。

mFirebaseRemoteConfig.setDefaults(R.xml.remote_config_defaults);

サンプルは fetch() リクエストを作成して Remote Config サーバーから値をフェッチし、それらの値をアプリで使用できるようにするため activateFetched() を呼び出します。

// cacheExpirationSeconds is set to cacheExpiration here, indicating the next fetch request
// will use fetch data from the Remote Config service, rather than cached parameter values,
// if cached parameter values are more than cacheExpiration seconds old.
// See Best Practices in the README for more information.
mFirebaseRemoteConfig.fetch(cacheExpiration)
        .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();

                    // After config data is successfully fetched, it must be activated before newly fetched
                    // values are returned.
                    mFirebaseRemoteConfig.activateFetched();
                } else {
                    Toast.makeText(MainActivity.this, "Fetch Failed",
                            Toast.LENGTH_SHORT).show();
                }
                displayWelcomeMessage();
            }
        });

設定値にアクセスするには、コールバックに渡された FirebaseRemoteConfig オブジェクトで、使用可能な get<type> メソッド(getLong など)のいずれかを呼び出します。

ウェルカム メッセージが更新されると、更新されたウェルカム メッセージをアプリに表示できるようになります。

private void displayWelcomeMessage() {
    String welcomeMessage = mFirebaseRemoteConfig.getString(WELCOME_MESSAGE_KEY);
    if (mFirebaseRemoteConfig.getBoolean(WELCOME_MESSAGE_CAPS_KEY)) {
        mWelcomeTextView.setAllCaps(true);
    } else {
        mWelcomeTextView.setAllCaps(false);
    }
    mWelcomeTextView.setText(welcomeMessage);
}

キャッシュ

Remote Config は、フェッチが初めて成功した後で、値をローカルでキャッシュします。デフォルトではキャッシュは 12 時間で有効期限切れになりますが、希望するキャッシュ有効期限を fetch メソッドに渡すことによって、特定のリクエストのキャッシュの有効期限を変更することもできます。キャッシュにある値が希望するキャッシュ有効期限より古い場合、Remote Config はサービスに新しい設定値をリクエストします。アプリが fetch を使って新しい値を数回リクエストすると、リクエストが制限されてアプリにはキャッシュされた値が提供されます。

アプリの開発中は、開発とテストを繰り返すための反復処理がすばやくできるように、頻繁なキャッシュの更新(1 時間に何度も)が必要となることがあります。最大 10 人までのデベロッパーがかかわるプロジェクトで反復処理をすばやく行えるようにするには、isDeveloperModeEnabled の値を true に設定した FirebaseRemoteConfigSettings オブジェクトを一時的にアプリに追加し、FirebaseRemoteConfig オブジェクトのキャッシュ設定を変更します。

フィードバックを送信...

ご不明な点がありましたら、Google のサポートページをご覧ください。