コンソールへ移動

iOS で Firebase Remote Config を使ってみる

Firebase Remote Config を使ってアプリ内パラメータを定義し、その値をクラウドで更新することができます。これにより、アプリのアップデートを配布しなくてもアプリの外観や動作を変更できます。

このガイドでは、作業を開始するための手順について説明し、サンプルコードを示します(すべてのサンプルコードは firebase/quickstart-ios GitHub リポジトリからクローンを作成またはダウンロードできます)。

Remote Config をアプリに追加する

  1. iOS 用の Firebase SDK をインストールします。

  2. 次の例のとおり Remote Config シングルトン オブジェクトを作成します。

    Swift

    Objective-C

このオブジェクトは、アプリ内デフォルト パラメータ値を格納すること、更新されたパラメータ値をサービスからフェッチすること、フェッチ済みの値をアプリで有効にするタイミングを制御することに使用されます。

開発時には、比較的短い最小フェッチ間隔を設定することをおすすめします。詳細については、スロットル処理をご覧ください。

アプリ内デフォルト パラメータ値を設定する

アプリ内デフォルト パラメータ値を Remote Config オブジェクトに設定することにより、Remote Config サービスに接続する前にアプリを意図したとおりに動作させることができ、サービス側に値が設定されていない場合にデフォルト値を使用することができます。

  1. NSDictionary オブジェクトまたは plist ファイルを使用して、一連のパラメータ名とデフォルト パラメータ値を定義します。
  2. setDefaults: を使用して、これらの値を Remote Config オブジェクトに追加します。次の例では、plist ファイルからアプリ内デフォルト値を設定します。

Swift

Objective-C

アプリ内で使うパラメータ値を取得する

ここまでの手順で、パラメータ値を Remote Config オブジェクトから取得できるようになりました。後で Remote Config サービスに値を設定し、フェッチして有効化すると、それらの値をアプリで使用できるようになります。または、setDefaults: を使用して、構成したアプリ内パラメータ値を取得します。アプリ内パラメータ値を取得するには、configValueForKey: メソッドを呼び出します。このとき、引数としてパラメータキーを指定します。

サービスでパラメータ値を設定する

Firebase コンソールまたは Remote Config REST API を使用して、新しいサービス側のデフォルト値を作成できます。このデフォルト値は、目的の条件付きロジックまたはユーザー ターゲティングに従って、アプリ内の値をオーバーライドします。このセクションでは、Firebase コンソールでこれらの値を作成するための手順を説明します。

  1. Firebase コンソールでプロジェクトを開きます。
  2. メニューから [Remote Config] を選択して Remote Config ダッシュボードを表示します。
  3. アプリで定義したパラメータと同じ名前のパラメータを定義します。それぞれのパラメータにデフォルト値を設定できます(最終的にはアプリ内デフォルト値をオーバーライドします)。また、条件値を設定することもできます。詳しくは Remote Config のパラメータと条件についての記事をご覧ください。

サービスから値をフェッチし、有効化する

  1. Remote Config サービスからパラメータ値をフェッチするには、fetchWithCompletionHandler: メソッドまたは fetchWithExpirationDuration:completionHandler: メソッドを呼び出します。Remote Config サービスに設定したすべての値がフェッチされ、Remote Config オブジェクトにキャッシュされます。
  2. フェッチ済みのパラメータ値をアプリで使用できるようにするには、activateFetched メソッドを呼び出します。

1 回の呼び出しで値をフェッチして有効化する場合は、fetchAndActivateWithCompletionHandler: を使用します。

この例では、キャッシュに保存された値の代わりに Remote Config サービスから値をフェッチし、それらの値をアプリで使用できるようにするために activateWithCompletionHandler: を呼び出します。

Swift

Objective-C

これらの更新されたパラメータ値はアプリの動作と外観に影響するので、スムーズなユーザー エクスペリエンスを邪魔しないタイミング(次にユーザーがアプリを開いたときなど)でフェッチ済みの値を有効化する必要があります。詳細と例については、Remote Config の読み込み方法をご覧ください。

スロットル処理

アプリが短期間に何度もフェッチすると、フェッチ呼び出しが抑制され、SDK から FIRRemoteConfigFetchStatusThrottled が返されます。バージョン 6.3.0 よりも前の SDK では、フェッチ リクエストは 60 分間に 5 回までと制限されていました(新しいバージョンでは制限が緩和されています)。

アプリの開発中は、開発とテストを繰り返すためのイテレーションがすばやくできるように、頻繁なキャッシュの更新(1 時間に何度も)が必要となることがあります。多数のデベロッパーがいるプロジェクトで迅速なイテレーションに対応するには、アプリ内で最小フェッチ間隔(MinimumFetchInterval)を小さく設定した FIRRemoteConfigSettings プロパティを一時的に追加します。

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

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

次のステップ

Remote Config のユースケースに関する詳細な情報が必要な方は、主要なコンセプトと高度な戦略に関する以下のドキュメントをご覧ください。