Chapter 24

[v0.14.0以下版] RemoteConfigを使用した強制アップデート機能 前編「Remote ConfigのProvider」

村松龍之介
村松龍之介
2023.02.12に更新

アプリにパッケージの追加

Firebase RemoteConfigの機能を使用するのでパッケージのインストールが必要です。

pubspec.yaml
# バージョンの指定は一例です。最新バージョンの使用を推奨します。
dependencies:
  firebase_core: ^1.1.0
  firebase_remote_config: ^0.10.0+2

Firebase で RemoteConfigの利用をスタートする。

詳しい説明は割愛しますが、

  • Firebaseにてプロジェクト作成
  • iOS, Android(実際に必要な方のみでもOK)アプリをプロジェクトに追加
  • メニューからRemote Configを選択する(Engagement / エンゲージメント下にあります)
  • アップデート情報用のパラメータ(パラメータキーと値)を追加

という手順を行いましょう。

例として、この解説では

パラメータキー: update_info
デフォルト値:(JSON)

{
  "requiredVersion": "2.0.0",
  "canCancel": true,
  "enabledAt": "2020-07-12T12:00+09:00"
}

を追加したとします。

3つのパラメータを1つにまとめるためにJSONで値を記述しました。

Remote Configパラメータの条件とは

今回の解説では省略しましたが、「パラメータキー」、「値」の他に「条件」を設定できます。

指定することで、以下の条件で値を出し分けすることが可能になります。

  • Androidと iOSなど、アプリやプラットフォーム
  • アプリのバージョン
  • 言語や国・地域
  • アナリティクスと連携したユーザーオーディエンス情報
  • ランダム(50%のユーザー、など)

RemoteConfigをアプリで使用するためのProviderを作成

Flutterアプリ内でRemote Configの初期設定とインスタンスを提供するProviderを実装しましょう。

remote_config_provider.dart
/// Firebase Remote Config Provider
final remoteConfigProvider = Provider<RemoteConfig>((ref) {
  final rc = RemoteConfig.instance;

  // 本番環境ではFetch間隔を12分に設定、開発環境では0
  final flavor = ref.watch(flavorProvider);
  final interval =
      flavor == Flavor.production ? const Duration(minutes: 12) : Duration.zero;
  // タイムアウトとフェッチのインターバル時間を設定する
  rc.setConfigSettings(RemoteConfigSettings(
    fetchTimeout: const Duration(minutes: 1),
    minimumFetchInterval: interval,
  ));
  return rc;
});

これで、初期設定を済ませたRemoteConfigのインスタンスを remoteConfigProvider 経由で使用できるようになりました🎉

サンプルリポジトリでのコード全容はこちら

https://github.com/Riscait/flutter_fire_playground/blob/main/lib/src/top_level_providers/remote_config_provider.dart


後編では、バージョンアップ情報の取得を解説します。


参考リンク

https://firebase.google.com/docs/remote-config