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

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

要件

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

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

    implementation 'com.google.firebase:firebase-config:16.1.3'

クイックスタート サンプル用の 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 オブジェクトのインスタンスを取得し、デベロッパー モードを有効にしてキャッシュ更新の頻度を増やせるようにします。

Java
Android

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

Kotlin
Android

remoteConfig = FirebaseRemoteConfig.getInstance()
val configSettings = FirebaseRemoteConfigSettings.Builder()
        .setDeveloperModeEnabled(BuildConfig.DEBUG)
        .build()
remoteConfig.setConfigSettings(configSettings)

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

Java
Android

mFirebaseRemoteConfig.setDefaults(R.xml.remote_config_defaults);

Kotlin
Android

remoteConfig.setDefaults(R.xml.remote_config_defaults)

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

Java
Android

// 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();
            }
        });

Kotlin
Android

// 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.
remoteConfig.fetch(cacheExpiration)
        .addOnCompleteListener(this) { task ->
            if (task.isSuccessful) {
                Toast.makeText(this, "Fetch Succeeded",
                        Toast.LENGTH_SHORT).show()

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

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

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

Java
Android

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);
}

Kotlin
Android

private fun displayWelcomeMessage() {
    val welcomeMessage = remoteConfig.getString(WELCOME_MESSAGE_KEY)
    welcomeTextView.isAllCaps = remoteConfig.getBoolean(WELCOME_MESSAGE_CAPS_KEY)
    welcomeTextView.text = welcomeMessage
}

companion object {

    private const val TAG = "MainActivity"

    // Remote Config keys
    private const val LOADING_PHRASE_CONFIG_KEY = "loading_phrase"
    private const val WELCOME_MESSAGE_KEY = "welcome_message"
    private const val WELCOME_MESSAGE_CAPS_KEY = "welcome_message_caps"
}

キャッシュと制限

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

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

次のステップ

クイックスタート サンプルを試して API の仕組みを理解したら、Remote Config の更新をリアルタイムで伝播する方法や REST API の使用方法など、Remote Config に関する高度なトピックを参照できます。次のリソースをご覧ください。

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

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