using System; using System.Globalization; using Firebase.Extensions; using Firebase.RemoteConfig; using Script.Utils; using SDK.Utils; using UnityEngine; public class FireBaseRemoteConfigManager : NormalSingleton { public void FetchRemoteConfig() { Firebase.FirebaseApp.CheckAndFixDependenciesAsync().ContinueWithOnMainThread(task => { if (task.Result == Firebase.DependencyStatus.Available) { Firebase.RemoteConfig.FirebaseRemoteConfig.DefaultInstance.FetchAsync(TimeSpan.Zero).ContinueWithOnMainThread(task => { FirebaseRemoteConfig.DefaultInstance.ActivateAsync().ContinueWithOnMainThread(task => { // adjust卸载监控 /* 执行到这时,表示firebase接入正常,能获取到远端在线参数 */ // 设置 firebase 初始化成功 flag // 初始化广告 // 检查Adjust归因 }); }); } }); } /// /// 获取int参数 /// /// /// /// public int GetRemoteConfigInt(string key, int defaultValue = 0, bool IsEncrypt = false) { try { string newKey = GetKey(key, IsEncrypt); // 获取值 var configValue = FirebaseRemoteConfig.DefaultInstance.GetValue(newKey); if (configValue.Source == ValueSource.RemoteValue) { return (int)GetValueLong(newKey, configValue); } else { return defaultValue; } } catch (Exception e) { Debug.LogError($"Failed to get Remote Config value for key '{key}': {e.Message}"); return defaultValue; } } /// /// 获取string参数 /// /// /// /// public string GetRemoteConfigString(string key, string defaultValue = "", bool IsEncrypt = false) { try { string newKey = GetKey(key, IsEncrypt); // 获取值 var configValue = FirebaseRemoteConfig.DefaultInstance.GetValue(newKey); if (configValue.Source == ValueSource.RemoteValue) { return GetValueStr(newKey, configValue); } else { return defaultValue; } } catch (Exception e) { Debug.LogError($"Failed to get Remote Config value for key '{key}': {e.Message}"); return defaultValue; } } /// /// 获取bool参数 /// /// /// /// public bool GetRemoteConfigBool(string key, bool defaultValue = false, bool IsEncrypt = false) { try { string newKey = GetKey(key, IsEncrypt); // 获取值 var configValue = FirebaseRemoteConfig.DefaultInstance.GetValue(newKey); if (configValue.Source == ValueSource.RemoteValue) { return GetValueBool(newKey, configValue); } else { return defaultValue; } } catch (Exception e) { Debug.LogError($"Failed to get Remote Config value for key '{key}': {e.Message}"); return defaultValue; } } /// /// 获取float参数 /// /// /// /// public float GetRemoteConfigBool(string key, float defaultValue = 0, bool IsEncrypt = false) { try { string newKey = GetKey(key, IsEncrypt); // 获取值 var configValue = FirebaseRemoteConfig.DefaultInstance.GetValue(newKey); if (configValue.Source == ValueSource.RemoteValue) { return (float)GetValueDouble(newKey, configValue); } else { return defaultValue; } } catch (Exception e) { Debug.LogError($"Failed to get Remote Config value for key '{key}': {e.Message}"); return defaultValue; } } /// /// 是否是加密 /// /// private bool IsEncrypt(string key) { return key.StartsWith("CCB", StringComparison.OrdinalIgnoreCase); } private string GetKey(string key, bool isEncrypt) { //ccb开头 忽略大小写 return isEncrypt ? $"ccb{EncryptionUtils.AesEncrypt(AppSDKManager.PackageName, key)}" : key; } private string GetValueStr(string key, ConfigValue configValue) { return IsEncrypt(key) ? EncryptionUtils.AesDecrypt(AppSDKManager.PackageName, configValue.StringValue) : configValue.StringValue; } private long GetValueLong(string key, ConfigValue configValue) { return IsEncrypt(key) ? long.Parse(EncryptionUtils.AesDecrypt(AppSDKManager.PackageName, configValue.StringValue)) : configValue.LongValue; } private bool GetValueBool(string key, ConfigValue configValue) { return IsEncrypt(key) ? bool.Parse(EncryptionUtils.AesDecrypt(AppSDKManager.PackageName, configValue.StringValue)) : configValue.BooleanValue; } private double GetValueDouble(string key, ConfigValue configValue) { if (IsEncrypt(key)) { string valueStr = EncryptionUtils.AesDecrypt(AppSDKManager.PackageName, configValue.StringValue); if (float.TryParse(valueStr, NumberStyles.Float, CultureInfo.InvariantCulture, out float result)) { return result; } } return configValue.DoubleValue; } }