更新在线参数解析,不配时走本地,配了为空时刷新广告位

This commit is contained in:
juncong lee 2025-09-10 14:33:32 +08:00
parent 95e4a2303b
commit a700df6a78
6 changed files with 134 additions and 32 deletions

View File

@ -29,6 +29,7 @@ namespace WZ
Action<AdValue> OnAdPaid, Action<AdValue> OnAdPaid,
Action<string,string,double> onAdClicked) Action<string,string,double> onAdClicked)
{ {
if (string.IsNullOrEmpty(adUnitId)) return;
if (_bannerAds.ContainsKey(adUnitId)) if (_bannerAds.ContainsKey(adUnitId))
{ {
LoggerUtils.Debug($"Bigo banner Ad unit {adUnitId} already exists"); LoggerUtils.Debug($"Bigo banner Ad unit {adUnitId} already exists");

View File

@ -33,6 +33,7 @@ namespace WZ
Action<AdValue> onAdPaid, Action<AdValue> onAdPaid,
Action<string,string,double> onAdClicked) Action<string,string,double> onAdClicked)
{ {
if (string.IsNullOrEmpty(adUnitId)) return;
if (_interstitialAds.ContainsKey(adUnitId)) if (_interstitialAds.ContainsKey(adUnitId))
{ {
LoggerUtils.Debug($"[Admob] Interstitial Ad unit {adUnitId} already exists"); LoggerUtils.Debug($"[Admob] Interstitial Ad unit {adUnitId} already exists");

View File

@ -25,6 +25,7 @@ namespace WZ
private void CreateNativeAd(string adUnitId) private void CreateNativeAd(string adUnitId)
{ {
if (string.IsNullOrEmpty(adUnitId)) return;
if (_nativeAds.ContainsKey(adUnitId)) if (_nativeAds.ContainsKey(adUnitId))
{ {
LoggerUtils.Debug($"[Admob] Native Ad unit {adUnitId} already exists"); LoggerUtils.Debug($"[Admob] Native Ad unit {adUnitId} already exists");

View File

@ -34,6 +34,7 @@ namespace WZ
Action<bool> onEarnRewarded, Action<bool> onEarnRewarded,
Action<string,string,double> onAdClicked) Action<string,string,double> onAdClicked)
{ {
if (string.IsNullOrEmpty(adUnitId)) return;
if (_rewardedAds.ContainsKey(adUnitId)) if (_rewardedAds.ContainsKey(adUnitId))
{ {
LoggerUtils.Debug($"[Admob] rewarded Ad unit {adUnitId} already exists"); LoggerUtils.Debug($"[Admob] rewarded Ad unit {adUnitId} already exists");

View File

@ -35,6 +35,7 @@ namespace WZ
Action<AdValue> onAdPaid, Action<AdValue> onAdPaid,
Action<string,string,double> onAdClicked) Action<string,string,double> onAdClicked)
{ {
if (string.IsNullOrEmpty(adUnitId)) return;
if (_appOpenAds.ContainsKey(adUnitId)) if (_appOpenAds.ContainsKey(adUnitId))
{ {
LoggerUtils.Debug($"[Admob] appopen Ad unit {adUnitId} already exists"); LoggerUtils.Debug($"[Admob] appopen Ad unit {adUnitId} already exists");

View File

@ -1,7 +1,7 @@
using System; using System;
using System.Collections; using System.Collections;
using System.Collections.Generic; using System.Collections.Generic;
using Newtonsoft.Json;
using UnityEngine; using UnityEngine;
namespace WZ namespace WZ
@ -9,6 +9,7 @@ namespace WZ
public static class AdConfigParser public static class AdConfigParser
{ {
private static AdConfig _config; private static AdConfig _config;
private static Dictionary<string,object> _configDict = new Dictionary<string, object>();
public static AdConfig Parse(string json) public static AdConfig Parse(string json)
{ {
try try
@ -22,6 +23,7 @@ namespace WZ
// 使用 JsonUtility 解析 JSON // 使用 JsonUtility 解析 JSON
_config = JsonUtility.FromJson<AdConfig>(json); _config = JsonUtility.FromJson<AdConfig>(json);
_configDict = JsonToDictionary(json);
if (_config == null) if (_config == null)
{ {
@ -39,6 +41,12 @@ namespace WZ
} }
} }
public static Dictionary<string,object> JsonToDictionary(string jsonStr)
{
Dictionary<string,object> dic= JsonConvert.DeserializeObject<Dictionary<string, object>>(jsonStr);
return dic;
}
/// <summary> /// <summary>
/// 获取 Admob 广告单元ID /// 获取 Admob 广告单元ID
/// </summary> /// </summary>
@ -56,16 +64,62 @@ namespace WZ
_ => new List<string>() _ => new List<string>()
}; };
} }
return adType switch switch (adType)
{ {
AdsType.Interstitial => _config.admob_interstitial_units ?? new List<string>(), case AdsType.Banner:
AdsType.Splash => _config.admob_splash_units ?? new List<string>(), if (_configDict.ContainsKey("admob_banner_units"))
AdsType.Rewarded => _config.admob_rewarded_units ?? new List<string>(), {
AdsType.Banner => _config.admob_banner_units ?? new List<string>(), return _config.admob_banner_units ?? new List<string>();
AdsType.Native => _config.admob_native_units ?? new List<string>(), }
_ => new List<string>() else
}; {
return new List<string>{ StaticValue.AdmobNormalBannerId };
}
case AdsType.Rewarded:
if (_configDict.ContainsKey("admob_rewarded_units"))
{
return _config.admob_rewarded_units ?? new List<string>();
}
else
{
return new List<string>{ StaticValue.AdmobRewardId };
}
case AdsType.Native:
if (_configDict.ContainsKey("admob_native_units"))
{
return _config.admob_native_units ?? new List<string>();
}
else
{
return new List<string>{ StaticValue.AdmobNativeId,
StaticValue.AdmobMinddleNativeId,
StaticValue.AdmobSmallNativeId,
StaticValue.AdmobFullNativeId };
}
case AdsType.Splash:
if (_configDict.ContainsKey("admob_splash_units"))
{
return _config.admob_splash_units ?? new List<string>();
}
else
{
return new List<string>{ StaticValue.AdmobSplashId };
}
case AdsType.Interstitial:
if (_configDict.ContainsKey("admob_interstitial_units"))
{
return _config.admob_interstitial_units ?? new List<string>();
}
else
{
return new List<string>{ StaticValue.AdmobInterId };
}
default:
return new List<string>();
}
} }
/// <summary> /// <summary>
@ -83,15 +137,29 @@ namespace WZ
}; };
} }
return adType switch switch (adType)
{ {
AdsType.Interstitial => _config.topon_interstitial_units ?? new List<string>(), case AdsType.Interstitial:
AdsType.Splash => _config.topon_splash_units ?? new List<string>(), if (_configDict.ContainsKey("topon_interstitial_units"))
AdsType.Rewarded => _config.topon_rewarded_units ?? new List<string>(), {
AdsType.Banner => _config.topon_banner_units ?? new List<string>(), return _config.topon_interstitial_units ?? new List<string>();
AdsType.Native => _config.topon_native_units ?? new List<string>(), }
_ => new List<string>() else
}; {
return new List<string>{ StaticValue.TopOnInterAdUnitID };
}
case AdsType.Rewarded:
if (_configDict.ContainsKey("topon_rewarded_units"))
{
return _config.topon_rewarded_units ?? new List<string>();
}
else
{
return new List<string>{ StaticValue.TopOnRewardAdUnitID };;
}
default:
return new List<string>();
}
} }
/// <summary> /// <summary>
@ -109,17 +177,30 @@ namespace WZ
}; };
} }
switch (adType)
return adType switch
{ {
AdsType.Interstitial => _config.max_interstitial_units ?? new List<string>(), case AdsType.Interstitial:
AdsType.Splash => _config.max_splash_units ?? new List<string>(), if (_configDict.ContainsKey("max_interstitial_units"))
AdsType.Rewarded => _config.max_rewarded_units ?? new List<string>(), {
AdsType.Banner => _config.max_banner_units ?? new List<string>(), return _config.max_interstitial_units ?? new List<string>();
AdsType.Native => _config.max_native_units ?? new List<string>(), }
_ => new List<string>() else
}; {
return new List<string>{ StaticValue.InterAdUnitID };
}
case AdsType.Rewarded:
if (_configDict.ContainsKey("max_rewarded_units"))
{
return _config.max_rewarded_units ?? new List<string>();
}
else
{
return new List<string>{ StaticValue.RewardAdUnitID };
}
default:
return new List<string>();
}
} }
/// <summary> /// <summary>
@ -151,23 +232,39 @@ namespace WZ
_ => new List<string>() _ => new List<string>()
}; };
} }
/// <summary> /// <summary>
/// 获取 TopOn App ID /// 获取 TopOn App ID
/// </summary> /// </summary>
public static string GetTopOnAppId() public static string GetTopOnAppId()
{ {
if (_config == null) return StaticValue.TopOnAppID; if (_config == null) return StaticValue.TopOnAppID;
return _config?.topon_app_id; if (_configDict.ContainsKey("topon_app_id"))
{
return _config?.topon_app_id;
}
else
{
return StaticValue.TopOnAppID;
}
} }
/// <summary> /// <summary>
/// 获取 TopOn App Key /// 获取 TopOn App Key
/// </summary> /// </summary>
public static string GetTopOnAppKey() public static string GetTopOnAppKey()
{ {
if (_config == null) return StaticValue.TopOnAppKey; if (_config == null) return StaticValue.TopOnAppKey;
return _config?.topon_app_key;
if (_configDict.ContainsKey("topon_app_key"))
{
return _config?.topon_app_key;
}
else
{
return StaticValue.TopOnAppKey;
}
} }
/// <summary> /// <summary>