【Flutter】RemoteConfigを簡単に実装する方法を紹介【Firebase】
Flutterアプリに、FirebaseのRemoteConfigを導入したいが、方法がよくわからない。
今回はFlutterにFirebaseのRemoteConfigを導入してみたいと思います。
筆者も実装に手間取りましたが、無事に導入できたので、その方法を紹介します。
ステップは以下の通りです。
- RemoteConfigとは?
- なぜ必要?
- 実装方法
最後までご覧いただき、参考にしていただけると幸いです。
(宣伝)コミュニティのお知らせ
エンジニア初学者の方がゆるく楽しく学べる場所、リアル大学生コミュニティを紹介します!
以下のような活動を通じて、メンバー同士で交流しています。
- アプリ紹介:メンバーが自身の開発物を紹介できます(開発物がなくてもOK)。
- フィードバックやアドバイス:開発物に対するフィードバックを送り合うことができます。
- ヘルプ:わからないことがあればいつでも質問可能です。
- 雑談:エンジニア関連の話題から、それ以外のことまで自由に話せます。
学生以外やエンジニア初学者以外も大歓迎です!
興味のある方は、ぜひ以下のリンクからご参加ください。お待ちしております✨
👉コミュニティに参加する
RemoteConfigとは?
RemoteConfigは、アプリケーションの設定や機能をリモートから動的に変更できるサービスです。アプリを再度ビルド・リリースすることなく、特定の条件に基づいてアプリの動作を変えることが可能になります。
なぜ必要?
筆者は以前、「リアル大学生:モバイル」をリリースしましたが、初めてのiOSアプリリリースということもあり、かなり未完成な状態でのリリースとなりました。
アップデートを重ねる中でGoogle Analyticsを導入しましたが、もしユーザーがアプリをアップデートしなければ、Google Analyticsを導入した意味が全くなくなってしまいます。
「では、アップデートするようにダイアログを表示すればいいのでは?」と思いましたが、ここで問題が発生しました。
「どうやってダイアログを出すのか?」という点です。ダイアログを出すためにもアップデートが必要であれば、本末転倒です。
そこで活躍するのがRemoteConfigです。Firebaseのコンソールで少し設定を変更するだけで、アップデートを必要とせずにメンテナンスモードや強制アップデートのダイアログを表示することができます。
実装方法
今回は例として、メンテナンスモードにした際に「現在メンテナンス中です」というダイアログを表示する方法を紹介します。
この方法を応用して、強制アップデート機能も実装できるので、ぜひ参考にしてください。
Firebaseでプロジェクト作成
以下の記事を参考にして、Firebaseのプロジェクト作成と、Flutterへの導入を完了させてください。なお、Google Analyticsの導入はRemoteConfigには直接影響しませんが、併せて導入することをおすすめします。
RemoteConfigにメンテナンスモードの追加
FirebaseコンソールのサイドメニューからRemoteConfigを開き、ドロップダウンを「クライアント」に設定します。次に、以下のパラメータを追加します。
- パラメータ名(キー): maintenance
- Description: 「メンテナンスモード」(機能を識別できる内容であればOK)
- データ型: 「ブール値」
- Default value: false
依存関係の追加
次に、pubspec.yamlにRemoteConfigの依存関係を追加します。
dependencies:
firebase_core: ^2.24.2
firebase_remote_config: ^4.3.8
ロジックの記述
main.dartに以下のロジックを記述します。
import 'package:firebase_core/firebase_core.dart';
import 'package:firebase_remote_config/firebase_remote_config.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
await Firebase.initializeApp();
final FirebaseRemoteConfig remoteConfig = FirebaseRemoteConfig.instance;
await remoteConfig.setConfigSettings(RemoteConfigSettings(
// フェッチにかかる最大時間
fetchTimeout: const Duration(seconds: 10),
// キャッシュの最小間隔
minimumFetchInterval: Duration.zero,
));
// デフォルト値を設定
await remoteConfig.setDefaults(<String, dynamic>{
"maintenance": false,
});
// 設定をフェッチし、すぐに有効化
await remoteConfig.fetchAndActivate();
// メンテナンスの状態を取得
var maintenanceMode = remoteConfig.getBool("maintenance");
// メンテナンスが有効ならダイアログを表示
if (maintenanceMode) {
runApp(MaintenanceModeApp());
} else {
// 通常のアプリを表示
runApp(MyApp());
}
}
// メンテナンスダイアログ
class MaintenanceModeApp extends StatelessWidget {
//
}
// 通常のアプリ
class MyApp extends StatelessWidget {
//
}
これを組み込むことで、RemoteConfigの導入は完了です。Firebaseコンソールで設定した「maintenance」のブール値をfalseにすると通常のアプリが表示され、trueに設定するとメンテナンスダイアログが表示されます。
強制アップデート(応用)
強制アップデートのダイアログを表示する場合、Remote Configで以下のパラメータを設定します。
- パラメータ名(キー): update
- Description: 「強制アップデート」(機能を識別できる内容であればOK)
- データ型: 「文字列」
- Default value: 1.5.0
メンテナンスモードと同様に、Remote Configから値を取得し、package_info パッケージを利用して、Firebase上で設定したバージョンとインストールされているアプリのバージョンを比較し、バージョンが古い場合にダイアログを表示するロジックを実装すれば良いです。
最後に
ここまで、FirebaseのRemoteConfigの実装方法について紹介しました。
一見、難しそうに思える機能ですが、手順を押さえれば問題なく導入できます。Firebaseコンソールでの設定が完了すれば、あとは main.dart で完結するため、不明点があれば「ChatGPT」に聞けば解決すると思います。
ぜひ、この機能を実装してみてください。
ここまでお読みいただき、ありがとうございました。