Last active
May 30, 2017 23:09
-
-
Save liamnichols/4f1122cef22d3ddafc8d0b87f034914c to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import Foundation | |
import FirebaseRemoteConfig | |
final class Config { | |
/// The shared instance of config to use | |
static let shared: Config = Config() | |
/// The maximum number of items that are allowed in this mystery app | |
internal let maxItemCount: Int | |
/// The initalizer is private as intended use is via the shared static property. | |
private init() { | |
// 1. Configure for dev mode if we need it, otherwise a 1 hour expiration duration | |
let remoteConfig = FIRRemoteConfig.remoteConfig() | |
#if DEBUG | |
let expirationDuration: TimeInterval = 0 | |
remoteConfig.configSettings = FIRRemoteConfigSettings(developerModeEnabled: true)! | |
#else | |
let expirationDuration: TimeInterval = 3600 | |
#endif | |
// 2. Set our default values and keys | |
remoteConfig.setDefaults([ | |
"maximum_item_count": 42 as NSNumber | |
]) | |
// 3. Activate any fetched values before we read anything back | |
remoteConfig.activateFetched() | |
// 4. Now set the properties on config based on what we have currently | |
self.maxItemCount = remoteConfig["maximum_item_count"].numberValue!.intValue | |
// 5. Perform the next fetch so that it's ready when we re-launch | |
remoteConfig.fetch(withExpirationDuration: expirationDuration) { status, _ in | |
print("[Config] Fetch completed with status:", status, "(\(status.rawValue))") | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment