リアルタイム Remote Config について


リアルタイム Remote Config を使用すると、サーバーで公開後すぐに、更新されたパラメータのキーと値を受信できます。これにより、Remote Config パラメータ値で制御しているあらゆるタイプのアプリ属性をすばやく更新できます。Remote Config のリアルタイム更新により、次のことが可能になります。

  • 対象ユーザーに機能を段階的にロールアウトし、必要に応じて緊急ロールバックを行うことでリスクを軽減できます。
  • アプリを使用する際のユーザー エクスペリエンスを迅速にカスタマイズし、ユーザー エンゲージメントを高めることができます。たとえば、特定の Google Analytics のユーザー プロパティに一致するユーザーに対して、バナーを更新してインセンティブを提供できます。また、プレーヤーのコホートのゲーム難易度を動的に調整することもできます。
  • ビルドの依存関係を減らしてデベロッパーの生産性を向上させることができます。Remote Config パラメータを機能フラグとして使用することで、開発チームとテストチームに機能を公開し、本番環境のユーザーには非公開にすることができます。

Remote Config の使用方法の詳細については、Remote Config でできることをご覧ください。

このガイドの内容:

  • リアルタイム更新をサポートするクライアントとサーバーの関係について説明します。
  • SDK のリアルタイム機能の仕組みについて説明します。
  • リアルタイム更新を使用してアプリの構成を最新の状態に保つ方法について説明します。

リアルタイムのクライアント サーバー接続

アプリにリアルタイム Remote Config を実装すると、Remote Config バックエンドへの HTTP 接続を開始するリアルタイム リスナーが作成されます。このリクエストには、現在デバイスにキャッシュされている構成ファイルのバージョンが含まれます。サーバー側の構成ファイルのバージョンのほうが新しく、フェッチする必要がある場合、リアルタイム Remote Config サーバーは、無効化メッセージを使用してアプリにシグナルを送信します。

サーバーに新しいバージョンがある場合は、直ちに無効化シグナルを送信します。新しいバージョンがない場合、接続を開いた状態で維持し、サーバーに新しいバージョンが公開されるまで待機します。クライアント SDK は無効化シグナルを受信すると、それを自動的にフェッチし、リスナー接続の開始時に登録されたリスナー コールバックを呼び出します。このフェッチは、SDK で行うフェッチ呼び出しと似ていますが、キャッシュ保存や minimumFetchInterval の設定はバイパスします。クライアント / サーバー接続は、アプリがフォアグラウンドで実行されている間、維持されます。

リアルタイム Remote Config クライアント / サーバー ワークフロー
リアルタイム Remote Config クライアント / サーバー ワークフロー

クライアント / サーバー接続は HTTP 経由で行われるため、他のライブラリへの依存関係は必要ありません。

更新をリッスンする

リアルタイム更新は Remote Config fetch 呼び出しを補完します。アプリの起動時(またはアプリのライフサイクル中)にフェッチを呼び出し、ユーザー セッション中にリアルタイム Remote Config の更新をリッスンして、サーバーに公開後すぐに最新の値を使用できるようにすることをおすすめします。

更新をリッスンするには、 addOnConfigUpdateListener を呼び出し、アプリで Remote Config の更新が利用可能になるたびに呼び出されるコールバックを実装します。この呼び出しは、Remote Config サーバーからの更新のリッスンをバックグラウンドで開始します。クライアントとサーバーの関係について詳しくは、前のセクションをご覧ください。

多くの場合、コールバックは、更新された構成パラメータをアプリで使用できるようにするために activate を使用する場合に適しています。リアルタイム Remote Config を使用している場合にパラメータ値を有効にするその他の方法については、Firebase Remote Config の読み込み方法をご覧ください。

パラメータ値を選択的に有効にする

addOnConfigUpdateListener を呼び出すときに、変更が有効になるまで待機できます。

onUpdate コールバックは、新しいバージョンのテンプレートが自動的にフェッチされたときと、アプリで現在有効になっているパラメータ値に変更があったときに呼び出されます。

これらのコールバックは、パラメータ configUpdate で呼び出されます。configUpdateupdatedKeys, を含みます。これは、リアルタイム更新を開始した変更済みのパラメータキーのセットで、以下が含まれます。

  • 追加または削除されたパラメータキー
  • 値が変更されたパラメータキー
  • メタデータが変更されたパラメータキー(Remote Config のパーソナライズ情報など)
  • 値のソースが変更されたパラメータキー(アプリ内デフォルト値がサーバー側の値に更新された場合など)

アプリ内の特定のビューでリアルタイム リスナーを使用している場合、そのビューに関連するパラメータが有効になる前に変更されているかどうか確認できます。

フェッチ(fetch メソッドの呼び出しまたはリアルタイム Remote Config によって開始)によってクライアントが更新されないことがあります。この場合、 onUpdate メソッドまたは完了は呼び出されません。

リスナーの追加と削除

addOnConfigUpdateListener はリアルタイム Remote Config のメインのエントリ ポイントです。アプリのライフサイクルで初めてこのリスナーを呼び出すと、バックエンドへの接続が開きます。以降の呼び出しでは同じ接続が再利用され、リアルタイムのクライアント / サーバー接続で説明されている無効化メッセージが多重化されます。

この呼び出しは「リスナー登録」を返します。これは remove というメソッドです。

リッスンを停止するには、リスナー登録への参照を保存します。この登録でリッスンを停止するには remove を呼び出します。登録済みのリスナーがほかにない場合、remove を呼び出すと、サーバーへのリアルタイム接続が終了します。

更新のリッスンは手動で停止することもできますが、必ずしも必要ではありません。リアルタイム Remote Config は、アプリがバックグラウンドに入ると更新のリッスンを自動的に停止し、アプリがフォアグラウンドになると再開します。

次のステップ

Firebase Remote Config を使ってみるを参照して、Remote Config を構成し、リアルタイムでの更新のリッスンを開始する。