178 lines
4.9 KiB
C#
178 lines
4.9 KiB
C#
using System;
|
||
using System.Threading.Tasks;
|
||
using Firebase;
|
||
using Firebase.RemoteConfig;
|
||
using UnityEngine;
|
||
|
||
public static class FireBaseRemoteConfigManager
|
||
{
|
||
private static bool isInit = false;
|
||
|
||
public async static void Init()
|
||
{
|
||
// 只初始化Firebase核心功能,不初始化Remote Config
|
||
var dependencyStatus = await FirebaseApp.CheckAndFixDependenciesAsync();
|
||
|
||
if (dependencyStatus == DependencyStatus.Available)
|
||
{
|
||
isInit = true;
|
||
Debug.Log("Firebase initialized successfully (without Remote Config defaults)");
|
||
}
|
||
else
|
||
{
|
||
Debug.LogError($"Could not resolve Firebase dependencies: {dependencyStatus}");
|
||
}
|
||
}
|
||
|
||
/// <summary>
|
||
/// 获取int参数
|
||
/// </summary>
|
||
/// <param name="key"></param>
|
||
/// <param name="defaultValue"></param>
|
||
/// <returns></returns>
|
||
public static async Task<int> GetRemoteConfigInt(string key, int defaultValue = 0)
|
||
{
|
||
if (!isInit)
|
||
{
|
||
return defaultValue;
|
||
}
|
||
|
||
try
|
||
{
|
||
await FirebaseRemoteConfig.DefaultInstance.FetchAsync(TimeSpan.Zero);
|
||
await FirebaseRemoteConfig.DefaultInstance.ActivateAsync();
|
||
|
||
// 获取值
|
||
var configValue = FirebaseRemoteConfig.DefaultInstance.GetValue(key);
|
||
|
||
if (configValue.Source == ValueSource.RemoteValue)
|
||
{
|
||
return (int)configValue.LongValue;
|
||
}
|
||
else
|
||
{
|
||
return defaultValue;
|
||
}
|
||
}
|
||
catch (Exception e)
|
||
{
|
||
Debug.LogError($"Failed to get Remote Config value for key '{key}': {e.Message}");
|
||
return defaultValue;
|
||
}
|
||
|
||
}
|
||
|
||
/// <summary>
|
||
/// 获取string参数
|
||
/// </summary>
|
||
/// <param name="key"></param>
|
||
/// <param name="defaultValue"></param>
|
||
/// <returns></returns>
|
||
public static async Task<string> GetRemoteConfigString(string key, string defaultValue = "")
|
||
{
|
||
if (!isInit)
|
||
{
|
||
return defaultValue;
|
||
}
|
||
|
||
try
|
||
{
|
||
await FirebaseRemoteConfig.DefaultInstance.FetchAsync(TimeSpan.Zero);
|
||
await FirebaseRemoteConfig.DefaultInstance.ActivateAsync();
|
||
|
||
// 获取值
|
||
var configValue = FirebaseRemoteConfig.DefaultInstance.GetValue(key);
|
||
|
||
if (configValue.Source == ValueSource.RemoteValue)
|
||
{
|
||
return configValue.StringValue;
|
||
}
|
||
else
|
||
{
|
||
return defaultValue;
|
||
}
|
||
}
|
||
catch (Exception e)
|
||
{
|
||
Debug.LogError($"Failed to get Remote Config value for key '{key}': {e.Message}");
|
||
return defaultValue;
|
||
}
|
||
|
||
}
|
||
|
||
/// <summary>
|
||
/// 获取bool参数
|
||
/// </summary>
|
||
/// <param name="key"></param>
|
||
/// <param name="defaultValue"></param>
|
||
/// <returns></returns>
|
||
public static async Task<bool> GetRemoteConfigBool(string key, bool defaultValue = false)
|
||
{
|
||
if (!isInit)
|
||
{
|
||
return defaultValue;
|
||
}
|
||
|
||
try
|
||
{
|
||
await FirebaseRemoteConfig.DefaultInstance.FetchAsync(TimeSpan.Zero);
|
||
await FirebaseRemoteConfig.DefaultInstance.ActivateAsync();
|
||
|
||
// 获取值
|
||
var configValue = FirebaseRemoteConfig.DefaultInstance.GetValue(key);
|
||
|
||
if (configValue.Source == ValueSource.RemoteValue)
|
||
{
|
||
return configValue.BooleanValue;
|
||
}
|
||
else
|
||
{
|
||
return defaultValue;
|
||
}
|
||
}
|
||
catch (Exception e)
|
||
{
|
||
Debug.LogError($"Failed to get Remote Config value for key '{key}': {e.Message}");
|
||
return defaultValue;
|
||
}
|
||
|
||
}
|
||
|
||
/// <summary>
|
||
/// 获取float参数
|
||
/// </summary>
|
||
/// <param name="key"></param>
|
||
/// <param name="defaultValue"></param>
|
||
/// <returns></returns>
|
||
public static async Task<float> GetRemoteConfigBool(string key, float defaultValue = 0)
|
||
{
|
||
if (!isInit)
|
||
{
|
||
return defaultValue;
|
||
}
|
||
|
||
try
|
||
{
|
||
await FirebaseRemoteConfig.DefaultInstance.FetchAsync(TimeSpan.Zero);
|
||
await FirebaseRemoteConfig.DefaultInstance.ActivateAsync();
|
||
|
||
// 获取值
|
||
var configValue = FirebaseRemoteConfig.DefaultInstance.GetValue(key);
|
||
|
||
if (configValue.Source == ValueSource.RemoteValue)
|
||
{
|
||
return (float)configValue.DoubleValue;
|
||
}
|
||
else
|
||
{
|
||
return defaultValue;
|
||
}
|
||
}
|
||
catch (Exception e)
|
||
{
|
||
Debug.LogError($"Failed to get Remote Config value for key '{key}': {e.Message}");
|
||
return defaultValue;
|
||
}
|
||
|
||
}
|
||
} |