Firebase Remote Config を使用して、アプリでパラメーターを定義し、クラウドでその値を更新して、アプリの更新を配布せずにアプリの外観と動作を変更できます。このガイドでは、作業を開始する手順を順を追って説明し、いくつかのサンプル コードを提供します。
ステップ 1: アプリに Firebase と Remote Config SDK を追加する
Remote Config の場合、ユーザー プロパティとオーディエンスに対するアプリ インスタンスの条件付きターゲティングには、Google アナリティクスが必要です。プロジェクトでGoogle アナリティクスが有効になっていることを確認してください。
Flutter プロジェクトのルート ディレクトリから、次のコマンドを実行して Remote Config プラグインをインストールします。
flutter pub add firebase_remote_config
また、Remote Config の設定の一環として、Google アナリティクス用の Firebase SDK をアプリに追加する必要があります。
flutter pub add firebase_analytics
プロジェクトを再構築します。
flutter run
ステップ 2: Remote Config シングルトン オブジェクトを取得する
Remote Config オブジェクト インスタンスを取得し、頻繁な更新を可能にする最小フェッチ間隔を設定します。
final remoteConfig = FirebaseRemoteConfig.instance;
await remoteConfig.setConfigSettings(RemoteConfigSettings(
fetchTimeout: const Duration(minutes: 1),
minimumFetchInterval: const Duration(hours: 1),
));
シングルトン オブジェクトは、アプリ内の既定のパラメーター値を保存し、更新されたパラメーター値をバックエンドから取得し、取得した値をアプリでいつ利用できるようにするかを制御するために使用されます。
開発中は、最小フェッチ間隔を比較的低く設定することをお勧めします。詳細については、スロットリングを参照してください。
ステップ 3: アプリ内のデフォルト パラメータ値を設定する
Remote Config オブジェクトでアプリ内の既定のパラメーター値を設定して、Remote Config バックエンドに接続する前にアプリが意図したとおりに動作し、バックエンドで何も設定されていない場合に既定値を使用できるようにすることができます。
await remoteConfig.setDefaults(const {
"example_param_1": 42,
"example_param_2": 3.14159,
"example_param_3": true,
"example_param_4": "Hello, world!",
});
ステップ 4: アプリで使用するパラメーター値を取得する
これで、Remote Config オブジェクトからパラメーター値を取得できます。バックエンドで値を設定し、フェッチしてアクティブ化すると、それらの値をアプリで使用できます。それ以外の場合は、 setDefaults()
を使用して構成されたアプリ内パラメーター値を取得します。
これらの値を取得するには、パラメーター キーを引数として指定して、アプリが期待するデータ型にマップする以下のメソッドを呼び出します。
-
getBool()
-
getDouble()
-
getInt()
-
getString()
ステップ 5: Remote Config バックエンドでパラメーター値を設定する
Firebase コンソールまたはRemote Config バックエンド APIを使用して、目的の条件付きロジックまたはユーザー ターゲティングに従って、アプリ内の値をオーバーライドする新しいサーバー側のデフォルト値を作成できます。このセクションでは、これらの値を作成する Firebase コンソールの手順について説明します。
- Firebase コンソールで、プロジェクトを開きます。
- メニューから [ Remote Config ] を選択して、Remote Config ダッシュボードを表示します。
- アプリで定義したパラメーターと同じ名前のパラメーターを定義します。パラメータごとに、デフォルト値を設定できます (対応するアプリ内デフォルト値を最終的にオーバーライドします)。また、条件値も設定できます。詳細については、 Remote Config のパラメーターと条件を参照してください。
ステップ 6: 値を取得してアクティブ化する
Remote Config バックエンドからパラメータ値をフェッチするには、
fetch()
メソッドを呼び出します。バックエンドで設定した値はすべて取得され、Remote Config オブジェクトに保存されます。取得したパラメーター値をアプリで使用できるようにするには、
activate()
メソッドを呼び出します。1 回の呼び出しで値を取得して有効化したい場合は、
fetchAndActivate()
リクエストを使用して Remote Config バックエンドから値を取得し、アプリで利用できるようにすることができます。await remoteConfig.fetchAndActivate();
これらの更新されたパラメーター値はアプリの動作と外観に影響を与えるため、ユーザーが次にアプリを開いたときなど、ユーザーのスムーズなエクスペリエンスを保証する時点でフェッチされた値をアクティブ化する必要があります。詳細と例については、 Remote Config の読み込み方法をご覧ください。
スロットリング
アプリが短期間にフェッチする回数が多すぎると、フェッチ呼び出しが調整され、 FirebaseRemoteConfig
のlastFetchStatus
プロパティの値がRemoteConfigFetchStatus.throttle
になります。
Remote Config のデフォルトの最小取得間隔は 12 時間です。これは、実際に行われた取得呼び出しの数に関係なく、12 時間のウィンドウ内で複数回バックエンドから構成が取得されることはないことを意味します。
アプリの開発中は、構成を非常に頻繁に (1 時間に何回も) フェッチしてアクティブ化し、アプリの開発とテストを迅速に繰り返すことができます。最大 10 人の開発者がいるプロジェクトでの迅速なイテレーションに対応するために、 setConfigSettings()
を使用して最小フェッチ間隔を一時的に低く設定できます。
final remoteConfig = FirebaseRemoteConfig.instance;
await remoteConfig.setConfigSettings(RemoteConfigSettings(
fetchTimeout: const Duration(minutes: 1),
minimumFetchInterval: const Duration(minutes: 5),
));
次のステップ
If you haven't already, explore the Remote Config use cases , and take a look at some of the key concepts and advanced strategies documentation, including: