using System; using System.Collections; using System.Collections.Generic; using Script.Utils; using SDKManager.AdsSDKManager.Constant; using UnityEngine; namespace Script.SDKManager.AdsSDKManager.Utils { public static class AdConfigParser { private static AdConfig _config; public static AdConfig Parse(string json) { try { // 处理 JSON 字符串,确保它是有效的 if (string.IsNullOrEmpty(json)) { LoggerUtils.Error("JSON string is null or empty"); return null; } // 使用 JsonUtility 解析 JSON _config = JsonUtility.FromJson(json); if (_config == null) { LoggerUtils.Error("Failed to parse JSON to AdConfig"); return null; } LoggerUtils.Info("AdConfig parsed successfully"); return _config; } catch (Exception e) { LoggerUtils.Error($"Error parsing AdConfig: {e.Message}"); return null; } } /// /// 获取 Admob 广告单元ID /// public static List GetAdmobAdUnits(AdsType adType) { if (_config == null) return new List(); return adType switch { AdsType.Interstitial => _config.admob_interstitial_units ?? new List(), AdsType.Splash => _config.admob_splash_units ?? new List(), AdsType.Rewarded => _config.admob_rewarded_units ?? new List(), AdsType.Banner => _config.admob_banner_units ?? new List(), AdsType.Native => _config.admob_native_units ?? new List(), _ => new List() }; } /// /// 获取 TopOn 广告单元ID /// public static List GetTopOnAdUnits(AdsType adType) { if (_config == null) return new List(); return adType switch { AdsType.Interstitial => _config.topon_interstitial_units ?? new List(), AdsType.Splash => _config.topon_splash_units ?? new List(), AdsType.Rewarded => _config.topon_rewarded_units ?? new List(), AdsType.Banner => _config.topon_banner_units ?? new List(), AdsType.Native => _config.topon_native_units ?? new List(), _ => new List() }; } /// /// 获取 AppLovin MAX 广告单元ID /// public static List GetMaxAdUnits(AdsType adType) { if (_config == null) return new List(); return adType switch { AdsType.Interstitial => _config.max_interstitial_units ?? new List(), AdsType.Splash => _config.max_splash_units ?? new List(), AdsType.Rewarded => _config.max_rewarded_units ?? new List(), AdsType.Banner => _config.max_banner_units ?? new List(), AdsType.Native => _config.max_native_units ?? new List(), _ => new List() }; } /// /// 获取 Bigo 广告单元ID /// public static List GetBigoAdUnits(AdsType adType) { if (_config == null) return new List(); return adType switch { AdsType.Interstitial => _config.bigo_i_inter_units ?? new List(), AdsType.Rewarded => _config.bigo_i_reward_units ?? new List(), _ => new List() }; } /// /// 获取 Kwai 广告单元ID /// public static List GetKwaiAdUnits(AdsType adType) { if (_config == null) return new List(); return adType switch { AdsType.Interstitial => _config.kwai_i_inter_units ?? new List(), AdsType.Rewarded => _config.kwai_i_reward_units ?? new List(), _ => new List() }; } /// /// 获取 TopOn App ID /// public static string GetTopOnAppId() { return _config?.topon_app_id; } /// /// 获取 TopOn App Key /// public static string GetTopOnAppKey() { return _config?.topon_app_key; } /// /// 获取 AppLovin MAX App Key /// public static string GetMaxAppKey() { return _config?.max_app_key; } /// /// 获取 Bigo App ID /// public static string GetBigoAppId() { return _config?.bigo_app_id; } /// /// 获取 Kwai App ID /// public static string GetKwaiAppId() { return _config?.kwai_app_id; } /// /// 获取 Kwai App Token /// public static string GetKwaiAppToken() { return _config?.kwai_app_token; } /// /// 获取广告过期时间(秒) /// public static int GetAdExpireInSec() { return _config?.ad_expire_in_sec ?? 3000; // 默认值 } /// /// 检查配置是否已加载 /// public static bool IsConfigLoaded() { return _config != null; } /// /// 清空已加载的配置 /// public static void ClearConfig() { _config = null; } } [Serializable] public class AdConfig { // Admob 配置 public List admob_interstitial_units; public List admob_splash_units; public List admob_rewarded_units; public List admob_banner_units; public List admob_native_units; // TopOn 配置 public string topon_app_id; public string topon_app_key; public List topon_interstitial_units; public List topon_splash_units; public List topon_rewarded_units; public List topon_banner_units; public List topon_native_units; // AppLovin MAX 配置 public string max_app_key; public List max_interstitial_units; public List max_splash_units; public List max_rewarded_units; public List max_banner_units; public List max_native_units; // Bigo 配置 public string bigo_app_id; public List bigo_i_inter_units; public List bigo_i_reward_units; // Kwai 配置 public string kwai_app_id; public string kwai_app_token; public List kwai_i_inter_units; public List kwai_i_reward_units; // 通用配置 public int ad_expire_in_sec; } }