6
3

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 3 years have passed since last update.

FirebaseのRemoteConfigを使ってLabelの値を変更しよう![RemoteConfig初級編]

Last updated at Posted at 2020-01-19

##開発環境
Xcode: Version 11.3
実機iPhone: iOS 13.1
Firebase: Version 6.14.0
FirebaseRemoteConfig: Version 4.4.6

##やりたいこと
FirebaseのRemoteConfigを使ってLabelの値を変更したい。
初級編では、RemoteConfigを利用してViewControllerのLabelを変更してみようということで以下の画像のように、「Firebase 勉強中!!!」の文字を実際にRemoteConfigを利用して表示させていきます。

RemoteConfig応用編
応用編では、RemoteConfigを利用してモーダルの値を変更してモーダルで表示することをやります。
応用編はこちらをクリック!

完成形の画面はこんな感じだよ!

#実装の準備
それでは実際に開発してみよう!
今回は、タイトル通りFirebaseを利用するので、XcodeのプロジェクトファイルにFirebaseのライブラリーをインストールしておきましょう!サンプルコードでも、Cocoa Podを利用してFirebaseをインストールする必要があります。Firebaseの設定時に、「GoogleService-Info.plist」をプロジェクトファイルに追加する必要があります。

Firebaseの初期導入がわからない方は、以下の記事を参考にしてください。
Firebaseの初期導入はこちらを参考に!

##RemoteConfigの設定
画像を参考にしながら、FirebaseのRemoteConfigの画面から、任意のパラメータキー(この記事ではtitle_name)とLabelに表示する文字列を入力しよう。

##コーディング

RemoteConfigManagerを作ります。
ここでは、先ほど設定したパラメータキーの名前を変数として代入する

RemoteConfigManager.swift
import FirebaseRemoteConfig

class RemoteConfigManager {
    static let shared = RemoteConfigManager()
    private let remoteConfig = RemoteConfig.remoteConfig()
    //初期の値
    var titleString: String = "まだデータがありません。"
    //パラメータキー
    private let titleKey = "title_name"

取得したデータを変数に代入

RemoteConfigManager.swift
    private func updateVariables() {
        //RemoteConfigから取得したデータを入れる。
        titleString = remoteConfig[titleKey].stringValue ?? ""
    }

インスタンス生成時にRemoteConfigからのデータをfetchする処理

RemoteConfigManager.swift
    private init() {
        remoteConfig.configSettings = RemoteConfigSettings()
        updateVariables()
        //開発環境の場合は0、本番環境(App Storeに配布する場合)では、は3600(1時間)以上に設定してください。
        let expirationDuration = 0
        remoteConfig.fetch(withExpirationDuration: TimeInterval(expirationDuration)) {
            [weak self] (status, _) in
            switch status {
            case .success:
                self?.remoteConfig.activate(completionHandler: { error in
                    if let error = error {
                        print("error:\(error)")
                    }
                    self?.updateVariables()
                })
            case .failure:
                print("error: remote config fetch failure")
            default: break
            }
        }
    }

最後にViewControlleを開いたタイミングで値をLabelに代入

ViewController.swift
class ViewController: UIViewController {
    
    @IBOutlet weak var titileLabel: UILabel!
    override func viewDidLoad() {
        super.viewDidLoad()
        titileLabel.text = RemoteConfigManager.shared.titleString
    
    }

##⚠️実装におけるの問題点⚠️
今回の仕組みでは、アプリの初期起動時やRemoteConfigの値変更後のアプリ起動時には、変更した内容は次回起動時以降にUIに反映される仕様です。

##RemoteConfig応用編
応用編では、画像を加えてキャンペーンのようなモーダルを表示させることを紹介します。
応用編はこちらをクリック!

サンプルコードをダウンロードしたい方はGithubをクリックしよう!

6
3
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
6
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?