UXオプティマイザー – iOS¶
Remote Config インターフェース¶
UX Optimizer の各機能は Repro.h
ヘッダファイルにあるReproクラスの remoteConfig
プロパティを通じて利用可能です。
Repro.remoteConfig.setDefaults(fromDictionary: ["key1": "v1", "key2": "v2"])
let val = Repro.remoteConfig.value(forKey: "key1").stringValue
ローカルのデフォルト値を設定する¶
3つの方法が利用できます。次に示す3つのメソッドは、 application:didFinishLaunchingWithOptions:
の中で Repro.setup()
の前に呼ぶことを推奨します。
ディクショナリを利用する¶
Repro.remoteConfig.setDefaults(fromDictionary: ["key1": "value1", "key2": "value2"])
Json文字列を利用する¶
Repro.remoteConfig.setDefaults(fromJsonString: "{\"key1\": \"zzz1\", \"key2\": \"zzz2\"}")
Jsonファイルを利用する¶
if let defs: URL = Bundle.main.url(forResource: "remote_config_defaults", withExtension: "json") {
Repro.remoteConfig.setDefaults(fromJsonFile: defs)
}
Remote Config の値にアクセスする¶
特定の値にアクセスする¶
if let value: String = Repro.remoteConfig.value(forKey: "key1").stringValue {
// ... use value ...
// stringValue will be nil if 'key1' is not found in
// either the remote config or the local fallback
}
注釈
Repro.remoteConfig.value(forKey: 'key1')
の返り値は常にRPRRemoteConfigValue
インスタンスでありnil
になることはありません。Repro.remoteConfig['key1'].stringValue
という形でのアクセスも可能です。
プリフィックスを指定してアクセスする¶
Repro.remoteConfig.allValues(withPrefix: "color")
上記のコードは color
に先頭がマッチするキーの値すべてをディクショナリとして返します。
値をリセットする¶
開発環境などでRemote Configオブジェクトを初期状態に戻したい場合は Repro.remoteConfig.forceReset()
を読んでください。 forceReset()
の実行後は、ローカルのデフォルト値やコールバックを再びセットする必要があります。
Repro.remoteConfig.forceReset()
Fetch と Activate¶
Remote Configの値はアプリがフォアグラウンドに遷移するたびに自動的にReproのサーバーから取得し直されるため、fetchコールバックは必ず必要というわけではありません。取得した設定値を反映する場合は activateFetched()
を呼び出してください。
古いRemote Configの値を新しく取得された値で置き換えるタイミングを制御したい場合はfetchコールバックを利用することを推奨します。
- 登録できるコールバックは1つです。
- コールバックは必ず実行されることを保証するものではありません。
- コールバックのタイムアウト時間は
NSTimeInterval
を利用し 秒数 を指定します。 - アプリがフォアグラウンドにある間にfetchが実行できなかった場合は、コールバックは消去され実行されません。このため、
UIApplicationDelegate
のapplicationWillEnterForeground:
からコールバックをセットすることを推奨します。 application:willFinishLaunchingWithOptions
の中でコールバックをセットする場合は、Repro.setup()
が実行された後でセットしてください。- コールバックが実行される際は必ずメインスレッドで実行されるので、コールバックの中からUI上の要素を更新することも可能です。
Repro.setup()
が呼び出されない限りは fetch は実行されず、またコールバックも実行されることはありません。activateFetched()
はコールバックの実行完了後に呼び出してください。下記の例のように、コールバックのブロックの中から呼び出すことも可能です。
fetch の例
Repro.remoteConfig.fetch(withTimeout: 3.0) { status in
if status == .success {
print("OLD Remote Config Values: \(Repro.remoteConfig.allValues())")
Repro.remoteConfig.activateFetched()
print("NEW Remote Config Values: \(Repro.remoteConfig.allValues())")
}
}
fetch の制約についての詳細はヘッダーファイルを参照してください。