コンソールへ移動

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

English Context Link

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

要件

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

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

    implementation 'com.google.firebase:firebase-config:17.0.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 オブジェクトのインスタンスを取得し、最小フェッチ間隔を設定して更新の頻度を増やせるようにします。

Java

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

Kotlin

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

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

Java

mFirebaseRemoteConfig.setDefaults(R.xml.remote_config_defaults);

Kotlin

remoteConfig.setDefaults(R.xml.remote_config_defaults)

これで、サンプルにより Remote Config バックエンドから値がフェッチされ、それらをアプリで利用できるようにするための fetchAndActivate() リクエストが作成されます。

Java

mFirebaseRemoteConfig.fetchAndActivate()
        .addOnCompleteListener(this, new OnCompleteListener<Boolean>() {
            @Override
            public void onComplete(@NonNull Task<Boolean> task) {
                if (task.isSuccessful()) {
                    boolean updated = task.getResult();
                    Log.d(TAG, "Config params updated: " + updated);
                    Toast.makeText(MainActivity.this, "Fetch and activate succeeded",
                            Toast.LENGTH_SHORT).show();

                } else {
                    Toast.makeText(MainActivity.this, "Fetch failed",
                            Toast.LENGTH_SHORT).show();
                }
                displayWelcomeMessage();
            }
        });

Kotlin

remoteConfig.fetchAndActivate()
        .addOnCompleteListener(this) { task ->
            if (task.isSuccessful) {
                val updated = task.getResult()
                Log.d(TAG, "Config params updated: $updated")
                Toast.makeText(this, "Fetch and activate succeeded",
                        Toast.LENGTH_SHORT).show()
            } else {
                Toast.makeText(this, "Fetch failed",
                        Toast.LENGTH_SHORT).show()
            }
            displayWelcomeMessage()
        }

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

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

Java

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

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"
}

スロットル処理

アプリが短期間に何度もフェッチすると、フェッチ呼び出しが抑制される可能性があります。そのような場合、SDK は FirebaseRemoteConfigFetchThrottledException を返します。

アプリの開発中は、開発とテストの反復処理をすばやく行うために、構成を頻繁に(1 時間に何度も)フェッチして有効化する必要が生じる場合があります。10 人程度のデベロッパーがいるプロジェクトで迅速な反復処理に対応するには、アプリ内で FirebaseRemoteConfigSettings オブジェクトの最小フェッチ間隔(setMinimumFetchIntervalInSeconds)に小さな値を一時的に設定します。

Remote Config のデフォルトの最小フェッチ間隔は 12 時間です。つまり、実際にフェッチ呼び出しが行われた回数に関係なく、12 時間のウィンドウ内で構成がバックエンドから複数回フェッチされることはありません。具体的には、最小フェッチ間隔は次の順序で決定されます。

  1. fetch(long) のパラメータ
  2. FirebaseRemoteConfigSettings.setMinimumFetchIntervalInSeconds(long) のパラメータ
  3. 12 時間のデフォルト値

最小フェッチ間隔をカスタム値に設定するには、FirebaseRemoteConfigSettings.Builder.setMinimumFetchIntervalInSeconds(long) を使用します。

次のステップ

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