public async Task <Exception> Disconnect(ICloudDatabaseReference reference) { if (reference.IsNull()) { return(new ArgumentNullException(nameof(reference))); } await new WaitForEndOfFrame(); reference.Dispose(); 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 } }