Firebase Remote Config의 기능을 공통화한 구조체를 만들어 보았다(Swift)
Firebase Remote Config란?
웹에서 말하는 Google Analytics의 모바일 버전이 Firebase라는 느낌입니다. GoogleAnalytics만큼 다양한 분석은 현재는 아직 할 수 없지만, 분석 외에도 푸시 알림(Notification)이나 모바일 기기에서 가지고 있는 속성을 원격으로 조작(RemoteConfig)할 수 있습니다. 표시하고 있는 색등을 클라이언트에 의해 랜덤으로 변경한다고 하는 것도 RemoteConfig를 이용하면 간단하게 할 수 있습니다(AB 테스트군요).
하고 싶은 일
사용자가 표시하는 콘텐츠를 변경하고 싶습니다. 최신 버전의 사람과 그렇지 않은 사람과 콘텐츠를 변경해 봅니다.
환경
Xcode7.3, Swift2.2
실제로 Remote Config를 사용해 보았습니다.
1, 콘솔에서 설정
먼저 Firebase 콘솔 화면으로 이동하여 Remote Config를 설정합니다. 매개변수 추가를 클릭하여 필요한 매개변수를 작성하십시오. 여기에서는 최신 버젼을 갖고 있는 유저에게 다른 값을 건네주도록(듯이) 하기 위해(때문에), latestVersion 라고 하는 조건을 작성하고 있습니다.
2, 구현
Podfile에 pod 'Firebase/RemoteConfig'
를 입력하고 pod install
와 터미널에서 실행하여 FirebaseRemoteConfig를 설치합니다.
AppDelegate.swift
는 최저한 이하와 같습니다. ( github에서 발췌 )
import UIKit
import Firebase
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
// [START configure_firebase]
FIRApp.configure()
// [END configure_firebase]
return true
}
}
ViewController.swift
는 다음과 같습니다.
import UIKit
import Firebase
import FirebaseRemoteConfig
class ViewController: UIViewController {
var remoteConfig: FIRRemoteConfig!
var tabTitles: [String] = ["ヘアアレンジ", "メイク", "スキンケア"]
var tabTitlesEn: [String] = ["hair_arrange", "make", "skin_care"]
override func viewDidLoad() {
super.viewDidLoad()
setTabWithRemoteConfig()
}
...
func setTabWithRemoteConfig() {
// RemoteConfigのシングルトンインスタンス取得
remoteConfig = FIRRemoteConfig.remoteConfig()
// デバッグモードの設定
let remoteConfigSettings = FIRRemoteConfigSettings(developerModeEnabled: true)
remoteConfig.configSettings = remoteConfigSettings!
// 下でデフォルト値を設定しているからこれはなくても問題ない.
// remoteConfig.setDefaults(["tabTitles": "アイテム"])
// remoteConfig.setDefaults(["tabTitlesEn": "item"])
// キャッシュの有効期間
let expirationDuration = remoteConfig.configSettings.isDeveloperModeEnabled ? 0 : 3600
// Firebaseのコンソール画面で設定した値を持ってくる非同期処理
remoteConfig.fetchWithExpirationDuration(NSTimeInterval(expirationDuration)) { [weak self] (status, error) -> Void in
if (status == FIRRemoteConfigFetchStatus.Success) {
self?.remoteConfig.activateFetched()
} else {
print("Config not fetched")
print("Error \(error!.localizedDescription)")
}
// 値を取り出す. ここでデフォルト値も設定.
self?.tabTitles.append(self?.remoteConfig["tabTitles"].stringValue ?? "アイテム")
self?.tabTitlesEn.append(self?.remoteConfig["tabTitlesEn"].stringValue ?? "item")
// tableViewを扱っている時はここでreloadDataをする.
// 値をRemote Configで取得した後の処理を実装する.
}
}
...
}
이 처리를 어딘가에 정리하고 싶습니다.
Remote Config를 이용할 때, 매번 이것을 쓰면 같은 코드가 늘어나므로, FirebaseRemoteConfigManager를 만들어 같은 코드가 될 수 있는 곳은 한 곳에 정리하려고 생각합니다.
FirebaseRemoteConfigManager.swift 만들기
BrightFutures를 사용하여 비동기 처리를 구현합니다. Carthage 등으로 BrightFutures를 설치해 둡니다. 다음은 FirebaseRemoteConfigManager.swift
의 내용입니다.
import Foundation
import Firebase
import FirebaseRemoteConfig
import BrightFutures
struct FirebaseRemoteConfigManager {
private let remoteConfig: FIRRemoteConfig
private let expirationDuration: Int
init() {
// さっきfunctionの中で設定していたものをイニシャライザにまとめる.
self.remoteConfig = FIRRemoteConfig.remoteConfig()
let remoteConfigSettings = FIRRemoteConfigSettings(developerModeEnabled: true)
self.remoteConfig.configSettings = remoteConfigSettings!
self.expirationDuration = remoteConfig.configSettings.isDeveloperModeEnabled ? 0 : 3600
}
// 返り値はFutureでラップする.
func fetchRemoteConfig() -> Future<FIRRemoteConfig, NSError> {
let promise = Promise<FIRRemoteConfig, NSError>()
remoteConfig.fetchWithExpirationDuration(NSTimeInterval(expirationDuration)) { (status, error) -> Void in
if let error = error {
promise.failure(error)
// 処理に失敗したから早めにreturnさせる.
return
}
if status != FIRRemoteConfigFetchStatus.Success {
let error = NSError(domain: "hogehoge", code: 0, userInfo: [NSLocalizedDescriptionKey: "status is failed"])
promise.failure(error)
// 処理に失敗したから早めにreturnさせる.
return
}
self.remoteConfig.activateFetched()
// 通信が問題なく完了した時のみSuccessになる.
promise.success(self.remoteConfig)
}
return promise.future
}
}
ViewController 구현
import UIKit
import Firebase
import FirebaseRemoteConfig
class ViewController: UIViewController {
var tabTitles: [String] = ["ヘアアレンジ", "メイク", "スキンケア"]
var tabTitlesEn: [String] = ["hair_arrange", "make", "skin_care"]
// FirebaseRemoteConfigManagerをインスタンス化する.
private let remoteConfigManager = FirebaseRemoteConfigManager()
override func viewDidLoad() {
super.viewDidLoad()
setTabNameFromRemoteConfig()
}
...
private func setTabNameFromRemoteConfig() {
// .onSuccessに、非同期通信がうまく行った時の(Remote Configで設定した値を利用する)処理を書く.
// .onFailureに、非同期通信が失敗した時の処理を書く.
remoteConfigManager.fetchRemoteConfig()
.onSuccess { result in
print("Fetch succeeded.")
// ["key名"].stringValueで値を取り出せる.
self.tabTitles.append(result["tabTitles"].stringValue ?? "アイテム")
self.tabTitlesEn.append(result["tabTitlesEn"].stringValue ?? "item")
// tableViewを扱っている時はここでreloadDataをする.
// 値をRemote Configで取得した後の処理を実装する.
}
.onFailure { error in
print(error.localizedDescription)
}
}
...
}
ViewController의 기술량이 줄어들고, 콜백으로 쓰면 깊은 중첩이 되는 문제점도 회피할 수 있습니다. Remote Config를 사용하고 싶은 곳에서 private let remoteConfigManager = FirebaseRemoteConfigManager()
remoteConfigManager.fetchRemoteConfig()
.onSuccess { result in
// ["key名"].stringValueで値を取り出せる.
// result["key名"].stringValue ?? "デフォルト値など"を使った処理
// tableViewを扱っている時はここでreloadDataをする.
}
.onFailure { error in
print(error.localizedDescription)
}
Reference
이 문제에 관하여(Firebase Remote Config의 기능을 공통화한 구조체를 만들어 보았다(Swift)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/ngo275/items/2a27932c4e54e062de21
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
사용자가 표시하는 콘텐츠를 변경하고 싶습니다. 최신 버전의 사람과 그렇지 않은 사람과 콘텐츠를 변경해 봅니다.
환경
Xcode7.3, Swift2.2
실제로 Remote Config를 사용해 보았습니다.
1, 콘솔에서 설정
먼저 Firebase 콘솔 화면으로 이동하여 Remote Config를 설정합니다. 매개변수 추가를 클릭하여 필요한 매개변수를 작성하십시오. 여기에서는 최신 버젼을 갖고 있는 유저에게 다른 값을 건네주도록(듯이) 하기 위해(때문에), latestVersion 라고 하는 조건을 작성하고 있습니다.
2, 구현
Podfile에 pod 'Firebase/RemoteConfig'
를 입력하고 pod install
와 터미널에서 실행하여 FirebaseRemoteConfig를 설치합니다.
AppDelegate.swift
는 최저한 이하와 같습니다. ( github에서 발췌 )
import UIKit
import Firebase
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
// [START configure_firebase]
FIRApp.configure()
// [END configure_firebase]
return true
}
}
ViewController.swift
는 다음과 같습니다.
import UIKit
import Firebase
import FirebaseRemoteConfig
class ViewController: UIViewController {
var remoteConfig: FIRRemoteConfig!
var tabTitles: [String] = ["ヘアアレンジ", "メイク", "スキンケア"]
var tabTitlesEn: [String] = ["hair_arrange", "make", "skin_care"]
override func viewDidLoad() {
super.viewDidLoad()
setTabWithRemoteConfig()
}
...
func setTabWithRemoteConfig() {
// RemoteConfigのシングルトンインスタンス取得
remoteConfig = FIRRemoteConfig.remoteConfig()
// デバッグモードの設定
let remoteConfigSettings = FIRRemoteConfigSettings(developerModeEnabled: true)
remoteConfig.configSettings = remoteConfigSettings!
// 下でデフォルト値を設定しているからこれはなくても問題ない.
// remoteConfig.setDefaults(["tabTitles": "アイテム"])
// remoteConfig.setDefaults(["tabTitlesEn": "item"])
// キャッシュの有効期間
let expirationDuration = remoteConfig.configSettings.isDeveloperModeEnabled ? 0 : 3600
// Firebaseのコンソール画面で設定した値を持ってくる非同期処理
remoteConfig.fetchWithExpirationDuration(NSTimeInterval(expirationDuration)) { [weak self] (status, error) -> Void in
if (status == FIRRemoteConfigFetchStatus.Success) {
self?.remoteConfig.activateFetched()
} else {
print("Config not fetched")
print("Error \(error!.localizedDescription)")
}
// 値を取り出す. ここでデフォルト値も設定.
self?.tabTitles.append(self?.remoteConfig["tabTitles"].stringValue ?? "アイテム")
self?.tabTitlesEn.append(self?.remoteConfig["tabTitlesEn"].stringValue ?? "item")
// tableViewを扱っている時はここでreloadDataをする.
// 値をRemote Configで取得した後の処理を実装する.
}
}
...
}
이 처리를 어딘가에 정리하고 싶습니다.
Remote Config를 이용할 때, 매번 이것을 쓰면 같은 코드가 늘어나므로, FirebaseRemoteConfigManager를 만들어 같은 코드가 될 수 있는 곳은 한 곳에 정리하려고 생각합니다.
FirebaseRemoteConfigManager.swift 만들기
BrightFutures를 사용하여 비동기 처리를 구현합니다. Carthage 등으로 BrightFutures를 설치해 둡니다. 다음은 FirebaseRemoteConfigManager.swift
의 내용입니다.
import Foundation
import Firebase
import FirebaseRemoteConfig
import BrightFutures
struct FirebaseRemoteConfigManager {
private let remoteConfig: FIRRemoteConfig
private let expirationDuration: Int
init() {
// さっきfunctionの中で設定していたものをイニシャライザにまとめる.
self.remoteConfig = FIRRemoteConfig.remoteConfig()
let remoteConfigSettings = FIRRemoteConfigSettings(developerModeEnabled: true)
self.remoteConfig.configSettings = remoteConfigSettings!
self.expirationDuration = remoteConfig.configSettings.isDeveloperModeEnabled ? 0 : 3600
}
// 返り値はFutureでラップする.
func fetchRemoteConfig() -> Future<FIRRemoteConfig, NSError> {
let promise = Promise<FIRRemoteConfig, NSError>()
remoteConfig.fetchWithExpirationDuration(NSTimeInterval(expirationDuration)) { (status, error) -> Void in
if let error = error {
promise.failure(error)
// 処理に失敗したから早めにreturnさせる.
return
}
if status != FIRRemoteConfigFetchStatus.Success {
let error = NSError(domain: "hogehoge", code: 0, userInfo: [NSLocalizedDescriptionKey: "status is failed"])
promise.failure(error)
// 処理に失敗したから早めにreturnさせる.
return
}
self.remoteConfig.activateFetched()
// 通信が問題なく完了した時のみSuccessになる.
promise.success(self.remoteConfig)
}
return promise.future
}
}
ViewController 구현
import UIKit
import Firebase
import FirebaseRemoteConfig
class ViewController: UIViewController {
var tabTitles: [String] = ["ヘアアレンジ", "メイク", "スキンケア"]
var tabTitlesEn: [String] = ["hair_arrange", "make", "skin_care"]
// FirebaseRemoteConfigManagerをインスタンス化する.
private let remoteConfigManager = FirebaseRemoteConfigManager()
override func viewDidLoad() {
super.viewDidLoad()
setTabNameFromRemoteConfig()
}
...
private func setTabNameFromRemoteConfig() {
// .onSuccessに、非同期通信がうまく行った時の(Remote Configで設定した値を利用する)処理を書く.
// .onFailureに、非同期通信が失敗した時の処理を書く.
remoteConfigManager.fetchRemoteConfig()
.onSuccess { result in
print("Fetch succeeded.")
// ["key名"].stringValueで値を取り出せる.
self.tabTitles.append(result["tabTitles"].stringValue ?? "アイテム")
self.tabTitlesEn.append(result["tabTitlesEn"].stringValue ?? "item")
// tableViewを扱っている時はここでreloadDataをする.
// 値をRemote Configで取得した後の処理を実装する.
}
.onFailure { error in
print(error.localizedDescription)
}
}
...
}
ViewController의 기술량이 줄어들고, 콜백으로 쓰면 깊은 중첩이 되는 문제점도 회피할 수 있습니다. Remote Config를 사용하고 싶은 곳에서 private let remoteConfigManager = FirebaseRemoteConfigManager()
remoteConfigManager.fetchRemoteConfig()
.onSuccess { result in
// ["key名"].stringValueで値を取り出せる.
// result["key名"].stringValue ?? "デフォルト値など"を使った処理
// tableViewを扱っている時はここでreloadDataをする.
}
.onFailure { error in
print(error.localizedDescription)
}
Reference
이 문제에 관하여(Firebase Remote Config의 기능을 공통화한 구조체를 만들어 보았다(Swift)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/ngo275/items/2a27932c4e54e062de21
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
1, 콘솔에서 설정
먼저 Firebase 콘솔 화면으로 이동하여 Remote Config를 설정합니다. 매개변수 추가를 클릭하여 필요한 매개변수를 작성하십시오. 여기에서는 최신 버젼을 갖고 있는 유저에게 다른 값을 건네주도록(듯이) 하기 위해(때문에), latestVersion 라고 하는 조건을 작성하고 있습니다.
2, 구현
Podfile에
pod 'Firebase/RemoteConfig'
를 입력하고 pod install
와 터미널에서 실행하여 FirebaseRemoteConfig를 설치합니다.AppDelegate.swift
는 최저한 이하와 같습니다. ( github에서 발췌 )import UIKit
import Firebase
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
// [START configure_firebase]
FIRApp.configure()
// [END configure_firebase]
return true
}
}
ViewController.swift
는 다음과 같습니다.import UIKit
import Firebase
import FirebaseRemoteConfig
class ViewController: UIViewController {
var remoteConfig: FIRRemoteConfig!
var tabTitles: [String] = ["ヘアアレンジ", "メイク", "スキンケア"]
var tabTitlesEn: [String] = ["hair_arrange", "make", "skin_care"]
override func viewDidLoad() {
super.viewDidLoad()
setTabWithRemoteConfig()
}
...
func setTabWithRemoteConfig() {
// RemoteConfigのシングルトンインスタンス取得
remoteConfig = FIRRemoteConfig.remoteConfig()
// デバッグモードの設定
let remoteConfigSettings = FIRRemoteConfigSettings(developerModeEnabled: true)
remoteConfig.configSettings = remoteConfigSettings!
// 下でデフォルト値を設定しているからこれはなくても問題ない.
// remoteConfig.setDefaults(["tabTitles": "アイテム"])
// remoteConfig.setDefaults(["tabTitlesEn": "item"])
// キャッシュの有効期間
let expirationDuration = remoteConfig.configSettings.isDeveloperModeEnabled ? 0 : 3600
// Firebaseのコンソール画面で設定した値を持ってくる非同期処理
remoteConfig.fetchWithExpirationDuration(NSTimeInterval(expirationDuration)) { [weak self] (status, error) -> Void in
if (status == FIRRemoteConfigFetchStatus.Success) {
self?.remoteConfig.activateFetched()
} else {
print("Config not fetched")
print("Error \(error!.localizedDescription)")
}
// 値を取り出す. ここでデフォルト値も設定.
self?.tabTitles.append(self?.remoteConfig["tabTitles"].stringValue ?? "アイテム")
self?.tabTitlesEn.append(self?.remoteConfig["tabTitlesEn"].stringValue ?? "item")
// tableViewを扱っている時はここでreloadDataをする.
// 値をRemote Configで取得した後の処理を実装する.
}
}
...
}
이 처리를 어딘가에 정리하고 싶습니다.
Remote Config를 이용할 때, 매번 이것을 쓰면 같은 코드가 늘어나므로, FirebaseRemoteConfigManager를 만들어 같은 코드가 될 수 있는 곳은 한 곳에 정리하려고 생각합니다.
FirebaseRemoteConfigManager.swift 만들기
BrightFutures를 사용하여 비동기 처리를 구현합니다. Carthage 등으로 BrightFutures를 설치해 둡니다. 다음은 FirebaseRemoteConfigManager.swift
의 내용입니다.
import Foundation
import Firebase
import FirebaseRemoteConfig
import BrightFutures
struct FirebaseRemoteConfigManager {
private let remoteConfig: FIRRemoteConfig
private let expirationDuration: Int
init() {
// さっきfunctionの中で設定していたものをイニシャライザにまとめる.
self.remoteConfig = FIRRemoteConfig.remoteConfig()
let remoteConfigSettings = FIRRemoteConfigSettings(developerModeEnabled: true)
self.remoteConfig.configSettings = remoteConfigSettings!
self.expirationDuration = remoteConfig.configSettings.isDeveloperModeEnabled ? 0 : 3600
}
// 返り値はFutureでラップする.
func fetchRemoteConfig() -> Future<FIRRemoteConfig, NSError> {
let promise = Promise<FIRRemoteConfig, NSError>()
remoteConfig.fetchWithExpirationDuration(NSTimeInterval(expirationDuration)) { (status, error) -> Void in
if let error = error {
promise.failure(error)
// 処理に失敗したから早めにreturnさせる.
return
}
if status != FIRRemoteConfigFetchStatus.Success {
let error = NSError(domain: "hogehoge", code: 0, userInfo: [NSLocalizedDescriptionKey: "status is failed"])
promise.failure(error)
// 処理に失敗したから早めにreturnさせる.
return
}
self.remoteConfig.activateFetched()
// 通信が問題なく完了した時のみSuccessになる.
promise.success(self.remoteConfig)
}
return promise.future
}
}
ViewController 구현
import UIKit
import Firebase
import FirebaseRemoteConfig
class ViewController: UIViewController {
var tabTitles: [String] = ["ヘアアレンジ", "メイク", "スキンケア"]
var tabTitlesEn: [String] = ["hair_arrange", "make", "skin_care"]
// FirebaseRemoteConfigManagerをインスタンス化する.
private let remoteConfigManager = FirebaseRemoteConfigManager()
override func viewDidLoad() {
super.viewDidLoad()
setTabNameFromRemoteConfig()
}
...
private func setTabNameFromRemoteConfig() {
// .onSuccessに、非同期通信がうまく行った時の(Remote Configで設定した値を利用する)処理を書く.
// .onFailureに、非同期通信が失敗した時の処理を書く.
remoteConfigManager.fetchRemoteConfig()
.onSuccess { result in
print("Fetch succeeded.")
// ["key名"].stringValueで値を取り出せる.
self.tabTitles.append(result["tabTitles"].stringValue ?? "アイテム")
self.tabTitlesEn.append(result["tabTitlesEn"].stringValue ?? "item")
// tableViewを扱っている時はここでreloadDataをする.
// 値をRemote Configで取得した後の処理を実装する.
}
.onFailure { error in
print(error.localizedDescription)
}
}
...
}
ViewController의 기술량이 줄어들고, 콜백으로 쓰면 깊은 중첩이 되는 문제점도 회피할 수 있습니다. Remote Config를 사용하고 싶은 곳에서 private let remoteConfigManager = FirebaseRemoteConfigManager()
remoteConfigManager.fetchRemoteConfig()
.onSuccess { result in
// ["key名"].stringValueで値を取り出せる.
// result["key名"].stringValue ?? "デフォルト値など"を使った処理
// tableViewを扱っている時はここでreloadDataをする.
}
.onFailure { error in
print(error.localizedDescription)
}
Reference
이 문제에 관하여(Firebase Remote Config의 기능을 공통화한 구조체를 만들어 보았다(Swift)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/ngo275/items/2a27932c4e54e062de21
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
import Foundation
import Firebase
import FirebaseRemoteConfig
import BrightFutures
struct FirebaseRemoteConfigManager {
private let remoteConfig: FIRRemoteConfig
private let expirationDuration: Int
init() {
// さっきfunctionの中で設定していたものをイニシャライザにまとめる.
self.remoteConfig = FIRRemoteConfig.remoteConfig()
let remoteConfigSettings = FIRRemoteConfigSettings(developerModeEnabled: true)
self.remoteConfig.configSettings = remoteConfigSettings!
self.expirationDuration = remoteConfig.configSettings.isDeveloperModeEnabled ? 0 : 3600
}
// 返り値はFutureでラップする.
func fetchRemoteConfig() -> Future<FIRRemoteConfig, NSError> {
let promise = Promise<FIRRemoteConfig, NSError>()
remoteConfig.fetchWithExpirationDuration(NSTimeInterval(expirationDuration)) { (status, error) -> Void in
if let error = error {
promise.failure(error)
// 処理に失敗したから早めにreturnさせる.
return
}
if status != FIRRemoteConfigFetchStatus.Success {
let error = NSError(domain: "hogehoge", code: 0, userInfo: [NSLocalizedDescriptionKey: "status is failed"])
promise.failure(error)
// 処理に失敗したから早めにreturnさせる.
return
}
self.remoteConfig.activateFetched()
// 通信が問題なく完了した時のみSuccessになる.
promise.success(self.remoteConfig)
}
return promise.future
}
}
import UIKit
import Firebase
import FirebaseRemoteConfig
class ViewController: UIViewController {
var tabTitles: [String] = ["ヘアアレンジ", "メイク", "スキンケア"]
var tabTitlesEn: [String] = ["hair_arrange", "make", "skin_care"]
// FirebaseRemoteConfigManagerをインスタンス化する.
private let remoteConfigManager = FirebaseRemoteConfigManager()
override func viewDidLoad() {
super.viewDidLoad()
setTabNameFromRemoteConfig()
}
...
private func setTabNameFromRemoteConfig() {
// .onSuccessに、非同期通信がうまく行った時の(Remote Configで設定した値を利用する)処理を書く.
// .onFailureに、非同期通信が失敗した時の処理を書く.
remoteConfigManager.fetchRemoteConfig()
.onSuccess { result in
print("Fetch succeeded.")
// ["key名"].stringValueで値を取り出せる.
self.tabTitles.append(result["tabTitles"].stringValue ?? "アイテム")
self.tabTitlesEn.append(result["tabTitlesEn"].stringValue ?? "item")
// tableViewを扱っている時はここでreloadDataをする.
// 値をRemote Configで取得した後の処理を実装する.
}
.onFailure { error in
print(error.localizedDescription)
}
}
...
}
remoteConfigManager.fetchRemoteConfig()
.onSuccess { result in
// ["key名"].stringValueで値を取り出せる.
// result["key名"].stringValue ?? "デフォルト値など"を使った処理
// tableViewを扱っている時はここでreloadDataをする.
}
.onFailure { error in
print(error.localizedDescription)
}
Reference
이 문제에 관하여(Firebase Remote Config의 기능을 공통화한 구조체를 만들어 보았다(Swift)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/ngo275/items/2a27932c4e54e062de21텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)