8
5

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.

iOSからFirebaseのRemote Configを利用する方法

Last updated at Posted at 2018-01-19

iOS環境からのFirebaseRemote Configを利用する方法です。
言語はSwiftです。

この記事はFirebaseのガイド参考しました。

Firebaseのプロジェクト生成

Firebaseのプロジェクト生成にはアプリバンドルidが要るため、まずXcodeから練習用シングルビューアプリのプロジェクトを生成してから進めます。
アプリプロジェクトが作られたらFirebaseのプロジェクトを生成します。

スクリーンショット 2018-01-19 14.27.55.png

この記事はiOS環境からFirebaseを利用する方法に対する内容なのでiOSを選択します。

スクリーンショット 2018-01-19 14.30.06.png

次へ進み設定ファイルをダウンロードします。案内通りにアプリのプロジェクトのルートに移動します。

スクリーンショット 2018-01-19 21.07.46.png

Remote Configに移動してパラメータのキー値を追加します。

loading_message    : Remote Configがフェッチされる前に表示されるメッセージです。
true_message       : show_event_messageがtrueの時のメッセージです。
false_message      : show_event_messageがfalseの時のメッセージです。
show_event_message : イベント状況を作動するかを決定するブールバリューです。

これでFirebaseの事前準備が終わりました。

アプリブロジェクトにFirebaseを実装

  • Podfileファイルに次の項目を追加します。
Podfile
pod 'Firebase/RemoteConfig'
  • pod installを実行します。
  • 設置された .xcworkspaceを実行し、GoogleService-Info.plistを入れます。

Firebaseをインポートして,
application:didFinishLaunchingWithOptions: メソッドにFirebaseApp公有インスタントを構成します。

appDelegate.swift
import Firebase

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
        // Override point for customization after application launch.
        FirebaseApp.configure()
        
        return true
    }

画面からRemote Configのパラメータを確認できるように簡単なラベルとボタンを追加します。

スクリーンショット 2018-01-19 21.42.30.png

そしてViewContorllerにRemote Configを実装しましょう。

ViewController.swift
//
//  ViewController.swift
//  practive
//
//  Created by jeonsangjun on 2018/01/19.
//  Copyright © 2018年 jeonsangjun. All rights reserved.
//

import UIKit
import Firebase

class ViewController: UIViewController {
    
    var remoteConfig: RemoteConfig!
    let loadingMessageConfigKey = "loading_message"
    let trueMessageConfigKey = "true_message"
    let falseMessageConfigKey = "false_message"
    let showEventMessageConfigKey = "show_event_message"
    
    @IBOutlet weak var testLabel: UILabel!
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        remoteConfig = RemoteConfig.remoteConfig()
        // 随時更新されるリモートの値をすぐ確認できるようにディベロッパーモーとに設定する。
        let remoteConfigSettings = RemoteConfigSettings(developerModeEnabled: true)
        remoteConfig.configSettings = remoteConfigSettings!
        
        fetchConfig()
    }
    
    
    @IBAction func showMessageAction(_ sender: Any) {
        fetchConfig()
    }
    
    func fetchConfig() {
        // フェッチが終わる前まで表示されるメッセージ
        testLabel.text = remoteConfig[loadingMessageConfigKey].stringValue
        
        // ディベロッパーモードの時、expirationDurationを0にして随時更新できるようにする。
        let expirationDuration = remoteConfig.configSettings.isDeveloperModeEnabled ? 0 : 3600
        remoteConfig.fetch(withExpirationDuration: TimeInterval(expirationDuration)) { (status, error) -> Void in
            if status == .success {
                print("Config fetched!")
                self.remoteConfig.activateFetched()
            } else {
                print("Config not fetched")
                print("Error: \(error?.localizedDescription ?? "No error available.")")
            }
            self.setDisplayLabel()
        }
    }
    
    func setDisplayLabel() {
        // show_event_messageがtrueの場合
        if remoteConfig[showEventMessageConfigKey].boolValue {
            testLabel.text = remoteConfig[trueMessageConfigKey].stringValue
        // show_event_messageがfalseの場合
        } else {
            testLabel.text = remoteConfig[falseMessageConfigKey].stringValue
        }
    }
    
}


シミュレーターを実行します。

Simulator Screen Shot - iPhone SE - 2018-01-19 at 22.11.05.png

show_event_messageがtrueなのでtrue_messageが表示されます。

スクリーンショット 2018-01-19 21.59.11.png

シミュレーターはそのままにしてまたFirebaseのRemote Configに移動します。
show_event_messageをフォルトに変更して変更を公開を押します。

Simulator Screen Shot - iPhone SE - 2018-01-19 at 22.13.00.png

そしてシミュレーターに戻ってShowボタンをタップすると、
loading_messageが少し表示されてからfalse_messageに変わって表示されます。

8
5
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
8
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?