5
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Firebase Remote ConfigのiOSへの導入

Last updated at Posted at 2018-02-20

#何ができるか
FirebaseスイートにはRealtime DBやCloud Messaging、Analyticsなど便利な機能が用意されていますが、Firebase Remote Configもその一つで、無料でアプリのABテストが実施できるパワフルなサービスですよね。(QiitaのタグにRealtimeDatabaseやCloudMessagingがあるのに、RemoteConfigがないのが残念だったので、作りました。)

Firebase Remote Configを使うと、無料で、サーバレスで、アプリのABテストを(プロダクション環境でも)行うことができます。iOS/ Androidの両方で利用可能です。

考え方

デフォルトの設定値をアプリに内蔵させておき、一方で、Firebaseサーバ上の値をフェッチして反映できればその値を使って設定値を動的に書き換えてくれます。
Firebaseサーバ上の値は、比較的フレンドリーなwebコンソールから操作できます。

基本的な実装手順

おおむね、この公式日本語記事が全てです。この通りにやれば終わります。

ただし、現時点(FirebaseRemoteConfig 2.1.1)では、日本語版の説明が若干古いので、英語記事で最新仕様を確認する必要があります。

読み替えが必要だった点

日本語ドキュメントのAPIのサンプルが古い。置き換えは以下のとおり。

old.swift
self.remoteConfig = FIRRemoteConfig.remoteConfig()
new.swift
self.remoteConfig = RemoteConfig.remoteConfig()

クラス名の接頭辞がなくなったというだけですね。リファレンスの通りにやって解決できないと焦りますが、英語リファレンスを確認しましょう。

そのうち、日本版リファレンスも刷新されると思います。

キャッシュ

Firebaseはアプリ側で値をキャッシュすることが原則で、 fetch(completionHandler: RemoteConfigFetchCompletion? = nil)を使うと、12時間はキャッシュされた値が利用されるようです。その間はFirebaseサーバ値を変更しても即時反映されません。通常、それほど機動的に設定値の切り替えをする必要がないと思うので、こちらで問題ないはずです。

即時反映を行うには、fetch(withExpirationDuration expirationDuration: TimeInterval, completionHandler: RemoteConfigFetchCompletion? = nil)のほうを使います。 expirationDuration: 0 にすれば、即時に切り替えが反映できます。ただし、1時間に5回までです。

関連記事:
Firebase Remote Configのキャッシュにおけるキモ

5
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?