public FirebaseCloudRemoteSetting(FirebaseCloudRemoteConfigType type, bool devMode)
 {
     _configs = new Dictionary <string, object>();
     _configs[nameof(CloudService)] = CloudRemoteConfigType.FirebaseRemoteConfig;
     _configs[TYPE]    = type;
     _configs[DEVMODE] = devMode;
 }
예제 #2
0
        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
            }
        }