Firebase Remote Config を使用して、アプリでパラメーターを定義し、クラウドでその値を更新して、アプリの更新を配布せずにアプリの外観と動作を変更できます。このガイドでは、開始するための手順を順を追って説明し、いくつかのサンプル コードを提供します。これらはすべて、 firebase/quickstart-ios GitHub リポジトリから複製またはダウンロードできます。
ステップ 1: アプリに Remote Config を追加する
Apple プラットフォーム用の Firebase SDK をインストールします。
次の例に示すように、シングルトン 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 バックエンドに接続する前にアプリが意図したとおりに動作し、バックエンドで何も設定されていない場合に既定値を使用できるようにすることができます。
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 コンソール
[パラメーター] タブで、[ メニュー] を開き、[既定値のダウンロード] を選択します。
プロンプトが表示されたら、 iOS 用の .plist を有効にし、[ファイルのダウンロード] をクリックします。
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 コンソールの手順に従ってこれらの値を作成します。
- Firebase コンソールで、プロジェクトを開きます。
- メニューから [ Remote Config ] を選択して、Remote Config ダッシュボードを表示します。
- アプリで定義したパラメーターと同じ名前のパラメーターを定義します。パラメータごとに、デフォルト値 (最終的にはアプリ内のデフォルト値をオーバーライドします) を設定でき、条件値も設定できます。詳細については、 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 時間に何回も) 更新して、アプリの開発とテストを迅速に反復できるようにすることができます。多数の開発者がいるプロジェクトでの迅速なイテレーションに対応するために、最小フェッチ間隔 ( MinimumFetchInterval
) が低いFIRRemoteConfigSettings
プロパティをアプリに一時的に追加できます。
Remote Config のデフォルトで推奨される運用フェッチ間隔は 12 時間です。これは、実際にフェッチ呼び出しが行われた回数に関係なく、構成が 12 時間のウィンドウ内で複数回バックエンドからフェッチされることはないことを意味します。具体的には、最小フェッチ間隔は次の順序で決定されます。
-
fetch(long)
のパラメータ FIRRemoteConfigSettings.MinimumFetchInterval
のパラメーター- デフォルト値の 12 時間
次のステップ
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: