public async Task Fetch() { _fetched = false; switch (_type) { #if FIREBASE_REALTIME_DATABASE case FirebaseCloudRemoteConfigType.RealtimeDatabase: { await new WaitUntil(() => _fetched); break; } #endif #if FIREBASE_REMOTE_CONFIG case FirebaseCloudRemoteConfigType.RemoteConfig: { if (_fetching) { return; } _fetching = true; await FRC.FetchAsync(TimeSpan.Zero); FRC.ActivateFetched(); _fetched = true; _fetching = false; break; } #endif } }
public T GetConfig <T>(string key) { switch (_type) { #if FIREBASE_REALTIME_DATABASE case FirebaseCloudRemoteConfigType.RealtimeDatabase: { if (_reference.data.IsNull()) { break; } var result = default(T); if (!_reference.data.IsNullOrEmpty() && _reference.data.ContainsKey(key)) { if (_reference.data[key].To <T>(out result)) { return(result); } } break; } #endif #if FIREBASE_REMOTE_CONFIG case FirebaseCloudRemoteConfigType.RemoteConfig: { var cfg = FRC.GetValue(key); var result = default(T); //interger if (typeof(T) == typeof(int) && FRC.GetValue(key).DoubleValue.ToInt32().To <T>(out result)) { return(result); } //Float if (typeof(T) == typeof(float) && FRC.GetValue(key).DoubleValue.ToSingle().To <T>(out result)) { return(result); } //double if (typeof(T) == typeof(double) && FRC.GetValue(key).DoubleValue.To <T>(out result)) { return(result); } //Bool if (typeof(T) == typeof(bool) && FRC.GetValue(key).BooleanValue.To <T>(out result)) { return(result); } //Long if (typeof(T) == typeof(long) && FRC.GetValue(key).LongValue.To <T>(out result)) { return(result); } //Long if (typeof(T) == typeof(string) && FRC.GetValue(key).StringValue.To <T>(out result)) { return(result); } break; } #endif } return(default(T)); }