Firebase Summit で発表されたすべての情報をご覧ください。Firebase を使用してアプリ開発を加速し、自信を持ってアプリを実行する方法を紹介しています。詳細

Firebase RemoteConfigの読み込み戦略

Firebase Remote Config は、サーバーから新しい値をフェッチしてアプリでアクティブ化する方法とタイミングについて多くの柔軟性を提供します。これにより、目に見える構成変更のタイミングを制御することで、高品質のエンド ユーザー エクスペリエンスを確保できます。このガイドでは、いくつかの読み込み戦略を見て、アプリに最適なオプションを選択するための重要な考慮事項について説明します。

戦略 1: ロード時にフェッチしてアクティブ化する

この戦略では、アプリの最初の起動時にfetchAndActivate()を呼び出して、Remote Config から新しい値を取得し、読み込みが完了するとすぐにそれらをアクティブ化します。この単純なアプローチは、UI の視覚的な劇的な変化を引き起こさない構成の変更に適しています。ユーザーが UI を使用している間に UI が著しく変化する可能性がある状況では、これを避ける必要があります。

戦略 2: ロード画面の後ろでアクティブにする

戦略 1 で発生する可能性のある UI の問題の解決策として、ロード画面に頼ることができます。アプリをすぐに起動する代わりに、読み込み画面を表示し、完了ハンドラでfetchAndActivateを呼び出します。その直後に — 再びコールバックまたは通知を使用して — ローディング画面を閉じ、ユーザーがアプリの操作を開始できるようにします。

この戦略を使用する場合は、読み込み画面にタイムアウトを追加することをお勧めします。 Remote Config の 1 分間のタイムアウトは、高品質のアプリ起動エクスペリエンスをユーザーに提供するには長すぎる可能性があります。

戦略 3: 次の起動のために新しい値を読み込む

効果的な戦略は、新しい構成値を読み込んで、アプリの次の起動時に有効にすることです。この戦略では、アプリは起動時に取得した値を有効にしてから新しい値を取得しようとし、新しい構成値を既に取得しているが、まだ有効になっていない可能性があるという前提で動作します。この戦略の操作の順序は次のとおりです。

  1. 起動時に、以前に取得した値をすぐに有効にします。これは、以前のセッションでサーバーからダウンロードした値を適用し、ほぼ瞬時に行われます。
  2. ユーザーがアプリを操作している間に、非同期呼び出しを開始して、デフォルトの最小フェッチ間隔に従って新しい値をフェッチします。
  3. fetch 呼び出しの完了ハンドラーまたはコールバックでは、何もしません。ダウンロードした値は、アプリの次回起動時にアクティブ化するまで保持されます。

この戦略により、ユーザーの待機時間が大幅に短縮されます。ただし、ユーザーは、最新の構成を表示するためにアプリを 2 回実行する必要があります。これらの考慮事項と、ビジネスおよびアプリのロジックとのバランスを取る必要があります。

反戦略を読み込んでいます

上記の読み込みの長所と短所の説明から理解できるように、避けるべき使用パターンがいくつかあります。

  • ユーザーが UI を表示または操作している間は、UI の側面を更新したり切り替えたりしないでください。終了したばかりのプロモーションに関連するオプションを削除するなど、アプリまたはビジネス上の強い理由がある場合を除きます。
  • サーバーがアプリをスロットリングする可能性があるため、大量の同時フェッチ リクエストを送信しないでください。これが発生するリスクは、ほとんどの運用シナリオでは低いですが、アクティブな開発中には問題になる可能性があります。 AndroidおよびApple プラットフォームのスロットリング ガイダンスを確認してください。
  • Remote Config の値を取得するためにネットワーク接続に依存しないでください。アプリが常に期待どおりに動作するように、アプリ内の既定のパラメーター値を設定してくださいダウンロードしたテンプレートのデフォルトを使用して、アプリと Remote Config バックエンドのデフォルト値を定期的に同期できます。

次のステップ

これら 3 つの基本的な戦略は、構成値をロードする方法の完全なリストを構成するものでは決してありません。必要に応じて、更新をリアルタイムで伝播する で説明されている関数駆動型のバックグラウンド更新など、より高度な戦略を考案できます。

プラットフォームの API リファレンスを確認して、構成値を取得およびアクティブ化するための特定の呼び出しについて学習してください。