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

Firebase RemoteConfigを使い始める

コレクションでコンテンツを整理 必要に応じて、コンテンツの保存と分類を行います。


Firebase Remote Config を使用して、アプリでパラメーターを定義し、クラウドでその値を更新して、アプリの更新を配布せずにアプリの外観と動作を変更できます。このガイドでは、開始するための手順を順を追って説明し、いくつかのサンプル コードを提供します。これらはすべて、 firebase/quickstart-ios GitHub リポジトリから複製またはダウンロードできます。

ステップ 1: アプリに Remote Config を追加する

  1. Apple プラットフォーム用の Firebase SDK をインストールします。

  2. 次の例に示すように、シングルトン Remote Config オブジェクトを作成します。

    迅速

    remoteConfig = RemoteConfig.remoteConfig()
    let settings = RemoteConfigSettings()
    settings.minimumFetchInterval = 0
    remoteConfig.configSettings = settings

    Objective-C

    self.remoteConfig = [FIRRemoteConfig remoteConfig];
    FIRRemoteConfigSettings *remoteConfigSettings = [[FIRRemoteConfigSettings alloc] init];
    remoteConfigSettings.minimumFetchInterval = 0;
    self.remoteConfig.configSettings = remoteConfigSettings;

このオブジェクトは、アプリ内のデフォルト パラメータ値を保存し、Remote Config バックエンドから更新されたパラメータ値を取得し、取得した値をアプリでいつ利用できるようにするかを制御するために使用されます。

開発中は、最小フェッチ間隔を比較的低く設定することをお勧めします。詳細については、スロットリングを参照してください。

ステップ 2: アプリ内のデフォルト パラメータ値を設定する

Remote Config オブジェクトでアプリ内の既定のパラメーター値を設定して、Remote Config バックエンドに接続する前にアプリが意図したとおりに動作し、バックエンドで何も設定されていない場合に既定値を使用できるようにすることができます。

  1. NSDictionaryオブジェクトまたはplist ファイルを使用して、一連のパラメーター名と既定のパラメーター値を定義します。

    Remote Config バックエンド パラメータ値をすでに設定している場合は、すべてのデフォルト値を含む生成されたplistファイルをダウンロードして、Xcode プロジェクトに保存できます。

    休み

    curl --compressed -D headers -H "Authorization: Bearer token -X GET https://firebaseremoteconfig.googleapis.com/v1/projects/my-project-id/remoteConfig:downloadDefaults?format=PLIST -o RemoteConfigDefaults.plist
    

    Firebase コンソール

    1. [パラメーター] タブで、[ メニュー] を開き、[既定値のダウンロード] を選択します。

    2. プロンプトが表示されたら、 iOS 用の .plist を有効にし、[ファイルのダウンロード] をクリックします。

  2. setDefaults:を使用して、これらの値を Remote Config オブジェクトに追加します。次の例では、plist ファイルからアプリ内の既定値を設定します。

    迅速

    remoteConfig.setDefaults(fromPlist: "RemoteConfigDefaults")

    Objective-C

    [self.remoteConfig setDefaultsFromPlistFileName:@"RemoteConfigDefaults"];

ステップ 3: アプリで使用するパラメーター値を取得する

これで、Remote Config オブジェクトからパラメーター値を取得できます。後で Remote Config バックエンドで値を設定し、フェッチしてからアクティブ化すると、それらの値がアプリで使用できるようになります。それ以外の場合は、 setDefaults:を使用して構成されたアプリ内パラメーター値を取得します。これらの値を取得するには、 configValueForKey:メソッドを呼び出して、パラメータ キーを引数として指定します。

ステップ 4: パラメータ値を設定する

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

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

ステップ 5: 値を取得してアクティブ化する

Remote Config からパラメーター値をフェッチするには、 fetchWithCompletionHandler:またはfetchWithExpirationDuration:completionHandler:メソッドを呼び出します。バックエンドで設定した値はすべて取得され、Remote Config オブジェクトにキャッシュされます。

1 回の呼び出しで値をフェッチしてアクティブ化したい場合は、 fetchAndActivateWithCompletionHandler:を使用します。

この例では、(キャッシュされた値ではなく) Remote Config バックエンドから値を取得し、 activateWithCompletionHandler:を呼び出してアプリで使用できるようにします。

迅速

remoteConfig.fetch { (status, error) -> Void in
  if status == .success {
    print("Config fetched!")
    self.remoteConfig.activate { changed, error in
      // ...
    }
  } else {
    print("Config not fetched")
    print("Error: \(error?.localizedDescription ?? "No error available.")")
  }
  self.displayWelcome()
}

Objective-C

[self.remoteConfig fetchWithCompletionHandler:^(FIRRemoteConfigFetchStatus status, NSError *error) {
    if (status == FIRRemoteConfigFetchStatusSuccess) {
        NSLog(@"Config fetched!");
      [self.remoteConfig activateWithCompletion:^(BOOL changed, NSError * _Nullable error) {
        if (error != nil) {
          NSLog(@"Activate error: %@", error.localizedDescription);
        } else {
          dispatch_async(dispatch_get_main_queue(), ^{
            [self displayWelcome];
          });
        }
      }];
    } else {
        NSLog(@"Config not fetched");
        NSLog(@"Error %@", error.localizedDescription);
    }
}];

これらの更新されたパラメーター値はアプリの動作と外観に影響を与えるため、ユーザーが次にアプリを開いたときなど、ユーザーのスムーズなエクスペリエンスを保証する時点でフェッチされた値をアクティブ化する必要があります。詳細と例については、 Remote Config の読み込み方法をご覧ください。

スロットリング

アプリが短期間にフェッチする回数が多すぎると、フェッチ呼び出しが調整され、SDK はFIRRemoteConfigFetchStatusThrottledを返します。 SDK バージョン 6.3.0 より前では、制限は 60 分のウィンドウで 5 つのフェッチ リクエストでした (新しいバージョンではより寛容な制限があります)。

アプリの開発中は、キャッシュを非常に頻繁に (1 時間に何回も) 更新して、アプリの開発とテストを迅速に反復できるようにすることができます。 To accommodate rapid iteration on a project with numerous developers, you can temporarily add a FIRRemoteConfigSettings property with a low minimum fetch interval ( MinimumFetchInterval ) in your app.

The default and recommended production fetch interval for Remote Config is 12 hours, which means that configs won't be fetched from the backend more than once in a 12 hour window, regardless of how many fetch calls are actually made. Specifically, the minimum fetch interval is determined in this following order:

  1. The parameter in fetch(long)
  2. The parameter in FIRRemoteConfigSettings.MinimumFetchInterval
  3. The default value of 12 hours

Next steps

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: