public FirebaseCloudRemoteConfig(ICloudRemoteSetting setting) { Init(setting); }
public static ICloudRemoteConfig Create(ICloudRemoteSetting setting) { if (setting.IsNull()) { return(null); } var service = setting.GetConfig <CloudRemoteConfigType>(nameof(CloudService)); switch (service) { #if UNITY_REMOTE_CONFIG case CloudRemoteConfigType.UnityRemoteConfig: { if (remoteConfigs.ContainsKey(service)) { return(remoteConfigs[service] as ICloudRemoteConfig); } var userAttribute = setting.GetConfig <object>(UnityRemoteConfig.UnityRemoteSetting.USER); var appAttribute = setting.GetConfig <object>(UnityRemoteConfig.UnityRemoteSetting.APP); var userCustomID = setting.GetConfig <string>(UnityRemoteConfig.UnityRemoteSetting.USERID); var type = typeof(UnityRemoteConfig.UnityRemoteConfig <,>).MakeGenericType(userAttribute.GetType(), appAttribute.GetType()); var a_Context = Activator.CreateInstance(type, userAttribute, appAttribute, userCustomID); var config = default(ICloudRemoteConfig); Activator.CreateInstance(type).To <ICloudRemoteConfig>(out config); remoteConfigs[service] = config; return(config); } #endif #if FIREBASE_REMOTE_CONFIG || FIREBASE_REALTIME_DATABASE case CloudRemoteConfigType.FirebaseRemoteConfig: { var type = setting.GetConfig <Firebase.FirebaseCloudRemoteConfigType>(Firebase.FirebaseCloudRemoteSetting.TYPE); //Add service if (!remoteConfigs.ContainsKey(service)) { remoteConfigs[service] = new Dictionary <Firebase.FirebaseCloudRemoteConfigType, ICloudRemoteConfig>(); } var firebaseConfigs = remoteConfigs[service] as IDictionary <Firebase.FirebaseCloudRemoteConfigType, ICloudRemoteConfig>; if (firebaseConfigs.ContainsKey(type)) { return(firebaseConfigs[type]); } return(firebaseConfigs[type] = new Firebase.FirebaseCloudRemoteConfig(setting)); } #endif default: { "Service UnAvailable".LogError(); return(null); } } }
private async void Init(ICloudRemoteSetting setting) { _type = setting.GetConfig <FirebaseCloudRemoteConfigType>(FirebaseCloudRemoteSetting.TYPE); _devMode = setting.GetConfig <bool>(FirebaseCloudRemoteSetting.DEVMODE); switch (_type) { #if FIREBASE_REALTIME_DATABASE case FirebaseCloudRemoteConfigType.RealtimeDatabase: { var database = CloudDatabaseFactory.Create(CloudDatabaseConfigFactory.CreateFirebaseDatabaseConfig()); var exception = default(Exception); var root = "config"; var dev = "development"; var prod = "release"; var path = root; path += string.Format("/{0}", _devMode? dev : prod); #if UNITY_EDITOR //Add Default data (_reference, exception) = await database.Connect(CloudDatabaseOptionsFactory.CreateFirebaseDatabaseOptions(root)); var isEmpty = _reference.IsNullOrEmpty(); isEmpty |= (!_reference.IsNullOrEmpty() && _reference.data.ContainsKey(root)); if (isEmpty) { var data = new Dictionary <string, object>(); data[dev] = new Dictionary <string, object> { { "version", Application.version } }; data[prod] = new Dictionary <string, object> { { "version", Application.version } }; exception = await _reference.SetData(data); _reference.Dispose(); } #endif (_reference, exception) = await database.Connect(CloudDatabaseOptionsFactory.CreateFirebaseDatabaseOptions(path)); if (exception.IsNull()) { _fetched = true; } break; } #endif #if FIREBASE_REMOTE_CONFIG case FirebaseCloudRemoteConfigType.RemoteConfig: { FirebaseRemoteConfig.Settings = new ConfigSettings() { IsDeveloperMode = _devMode }; break; } #endif } }