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:10.0.1'

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

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

Firebase console で [新規プロジェクトを作成] をクリックし、Firebase Remote Config プロジェクトの設定手順に従って操作します。

次のパラメータを使用します。

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

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

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

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

仕組み

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

 verbatim 349d995b91686308abbd55577d812bad mFirebaseRemoteConfig = FirebaseRemoteConfig.getInstance(); endverbatim 349d995b91686308abbd55577d812bad 
 verbatim 2551ef9edfe86471c08daf61b8c968d3 FirebaseRemoteConfigSettings configSettings = new FirebaseRemoteConfigSettings.Builder()
        .setDeveloperModeEnabled(BuildConfig.DEBUG)
        .build();
mFirebaseRemoteConfig.setConfigSettings(configSettings); endverbatim 2551ef9edfe86471c08daf61b8c968d3 

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

 verbatim 42f0a27ad44c2de9274586c742ab7809 mFirebaseRemoteConfig.setDefaults(R.xml.remote_config_defaults); endverbatim 42f0a27ad44c2de9274586c742ab7809 

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

 verbatim f73bc3f13a1471d72d97f3d983784101 // cacheExpirationSeconds is set to cacheExpiration here, indicating that any previously
// fetched and cached config would be considered expired because it would have been fetched
// more than cacheExpiration seconds ago. Thus the next fetch would go to the server unless
// throttling is in progress. The default expiration duration is 43200 (12 hours).
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();

                    // Once the config 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();
            }
        }); endverbatim f73bc3f13a1471d72d97f3d983784101 

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

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

 verbatim d4d80468f3c8f4d5f696de30f75ec1a0 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);
} endverbatim d4d80468f3c8f4d5f696de30f75ec1a0 

キャッシュ

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

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

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