兼容两个版本获取admob价格
This commit is contained in:
parent
da1e02b790
commit
5e6e7f32cb
|
@ -1,4 +1,5 @@
|
||||||
using System;
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Reflection;
|
using System.Reflection;
|
||||||
using GoogleMobileAds.Api;
|
using GoogleMobileAds.Api;
|
||||||
|
@ -7,77 +8,218 @@ using Newtonsoft.Json.Linq;
|
||||||
|
|
||||||
namespace WZ
|
namespace WZ
|
||||||
{
|
{
|
||||||
public class AdmobUtils
|
abstract class IStack
|
||||||
{
|
{
|
||||||
public static string ParseResponseInfo(ResponseInfo responseInfo)
|
public abstract string GetStackName();
|
||||||
{
|
protected abstract string[] GetBannerStack();
|
||||||
string pubid = "";
|
protected abstract string[] GetSpStack();
|
||||||
|
protected abstract string[] GetIvStack();
|
||||||
|
protected abstract string[] GetRvStack();
|
||||||
|
protected abstract string[] GetNaStack();
|
||||||
|
|
||||||
try
|
public string[] GetStackFromName(string stackName)
|
||||||
|
{
|
||||||
|
return stackName switch
|
||||||
{
|
{
|
||||||
string responseInfoJson = responseInfo.ToString();
|
"BannerStack" => GetBannerStack(),
|
||||||
JObject responseInfoObj = JObject.Parse(responseInfoJson);
|
"SpStack" => GetSpStack(),
|
||||||
JToken loadedAdapterResponse = responseInfoObj["Response Extras"];
|
"IvStack" => GetIvStack(),
|
||||||
|
"RvStack" => GetRvStack(),
|
||||||
if (loadedAdapterResponse != null)
|
"NaStack" => GetNaStack(),
|
||||||
{
|
_ => Array.Empty<string>()
|
||||||
pubid = loadedAdapterResponse["mediation_group_name"]?.ToString();
|
};
|
||||||
}
|
|
||||||
}
|
|
||||||
catch
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
return pubid;
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public static double GetBannerEcpm(BannerView bannerView)
|
internal class Stack1 : IStack
|
||||||
{
|
{
|
||||||
return GetEcpm(bannerView, "bannerView", "adView", BannerStack);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static double GetRewardedAdEcpm(RewardedAd rewardedAd)
|
|
||||||
{
|
|
||||||
return GetEcpm(rewardedAd, "androidRewardedAd", "rewardedAd", RvStack);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static double GetInterstitialAdEcpm(InterstitialAd interstitialAd)
|
|
||||||
{
|
|
||||||
return GetEcpm(interstitialAd, "androidInterstitialAd", "interstitialAd", IvStack);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static double GetAppOpenAdEcpm(AppOpenAd appOpenAd)
|
|
||||||
{
|
|
||||||
return GetEcpm(appOpenAd, "androidAppOpenAd", "appOpenAd", SpStack);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
public static double GetNativeEcpm(NativeOverlayAd ad)
|
|
||||||
{
|
|
||||||
return GetEcpm(ad, "nativeOverlayAd", "nativeAd", NaStack);
|
|
||||||
}
|
|
||||||
|
|
||||||
private static double GetEcpm(object o, string cShapeFieldName, string javaFieldName, string[] stack)
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
return GetEcpm(GetAdValue(GetJavaAdViewOjb(o, cShapeFieldName, javaFieldName), stack));
|
|
||||||
}
|
|
||||||
catch (Exception e)
|
|
||||||
{
|
|
||||||
LoggerUtils.Error("[AdmobTools] e : " + e.Message + "\t cShapeFieldName : " + cShapeFieldName);
|
|
||||||
}
|
|
||||||
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
private static readonly string[] BannerStack = { "zza", "zzj", "zzi", "zze", "zza", "zzk", "zzae" };
|
private static readonly string[] BannerStack = { "zza", "zzj", "zzi", "zze", "zza", "zzk", "zzae" };
|
||||||
private static readonly string[] SpStack = { "zzb", "zza", "zzc", "zza", "zzk", "zzae" };
|
private static readonly string[] SpStack = { "zzb", "zza", "zzc", "zza", "zzk", "zzae" };
|
||||||
private static readonly string[] IvStack = { "zzc", "zzj", "zzf", "zzd", "zzae" };
|
private static readonly string[] IvStack = { "zzc", "zzj", "zzf", "zzd", "zzae" };
|
||||||
private static readonly string[] RvStack = { "zzb", "zzi", "zze", "zze", "zzae" };
|
private static readonly string[] RvStack = { "zzb", "zzi", "zze", "zze", "zzae" };
|
||||||
private static readonly string[] NaStack = { "zza", "zzb", "zzf", "zzD", "zzb", "zzae" };
|
private static readonly string[] NaStack = { "zza", "zzb", "zzf", "zzD", "zzb", "zzae" };
|
||||||
|
|
||||||
|
public override string GetStackName()
|
||||||
|
{
|
||||||
|
return "Stack1";
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override string[] GetBannerStack()
|
||||||
|
{
|
||||||
|
return BannerStack;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override string[] GetSpStack()
|
||||||
|
{
|
||||||
|
return SpStack;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override string[] GetIvStack()
|
||||||
|
{
|
||||||
|
return IvStack;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override string[] GetRvStack()
|
||||||
|
{
|
||||||
|
return RvStack;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override string[] GetNaStack()
|
||||||
|
{
|
||||||
|
return NaStack;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
internal class Stack2 : IStack
|
||||||
|
{
|
||||||
|
private static readonly string[] BannerStack = { "zza", "zzj", "zza", "a", "a", "e", "a", "e", "ae" };
|
||||||
|
private static readonly string[] SpStack = { "zzb", "zza", "a", "a", "a", "e", "ae" };
|
||||||
|
private static readonly string[] IvStack = { "zzc", "zza", "a", "a", "d", "d", "ae" };
|
||||||
|
private static readonly string[] RvStack = { "zzb", "zza", "b", "g", "e", "ae" };
|
||||||
|
private static readonly string[] NaStack = { "zza", "zza", "b", "c", "c", "ae" };
|
||||||
|
|
||||||
|
public override string GetStackName()
|
||||||
|
{
|
||||||
|
return "Stack2";
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override string[] GetBannerStack()
|
||||||
|
{
|
||||||
|
return BannerStack;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override string[] GetSpStack()
|
||||||
|
{
|
||||||
|
return SpStack;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override string[] GetIvStack()
|
||||||
|
{
|
||||||
|
return IvStack;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override string[] GetRvStack()
|
||||||
|
{
|
||||||
|
return RvStack;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override string[] GetNaStack()
|
||||||
|
{
|
||||||
|
return NaStack;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
internal class EmptyStack : IStack
|
||||||
|
{
|
||||||
|
public override string GetStackName()
|
||||||
|
{
|
||||||
|
return "EmptyStack";
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override string[] GetBannerStack()
|
||||||
|
{
|
||||||
|
return Array.Empty<string>();
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override string[] GetSpStack()
|
||||||
|
{
|
||||||
|
return Array.Empty<string>();
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override string[] GetIvStack()
|
||||||
|
{
|
||||||
|
return Array.Empty<string>();
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override string[] GetRvStack()
|
||||||
|
{
|
||||||
|
return Array.Empty<string>();
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override string[] GetNaStack()
|
||||||
|
{
|
||||||
|
return Array.Empty<string>();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public class AdmobUtils
|
||||||
|
{
|
||||||
|
private static IStack _stack;
|
||||||
|
|
||||||
|
private static readonly List<IStack> AvailableStrategies = new()
|
||||||
|
{
|
||||||
|
new Stack1(),
|
||||||
|
new Stack2()
|
||||||
|
// 新增策略只需在此处添加
|
||||||
|
};
|
||||||
|
|
||||||
|
public static double GetBannerEcpm(BannerView bannerView)
|
||||||
|
{
|
||||||
|
return GetEcpm(bannerView, "bannerView", "adView", "BannerStack");
|
||||||
|
}
|
||||||
|
|
||||||
|
public static double GetRewardedAdEcpm(RewardedAd rewardedAd)
|
||||||
|
{
|
||||||
|
return GetEcpm(rewardedAd, "androidRewardedAd", "rewardedAd", "RvStack");
|
||||||
|
}
|
||||||
|
|
||||||
|
public static double GetInterstitialAdEcpm(InterstitialAd interstitialAd)
|
||||||
|
{
|
||||||
|
return GetEcpm(interstitialAd, "androidInterstitialAd", "interstitialAd", "IvStack");
|
||||||
|
}
|
||||||
|
|
||||||
|
public static double GetAppOpenAdEcpm(AppOpenAd appOpenAd)
|
||||||
|
{
|
||||||
|
return GetEcpm(appOpenAd, "androidAppOpenAd", "appOpenAd", "SpStack");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public static double GetNativeEcpm(NativeOverlayAd ad)
|
||||||
|
{
|
||||||
|
return GetEcpm(ad, "nativeOverlayAd", "nativeAd", "NaStack");
|
||||||
|
}
|
||||||
|
|
||||||
|
private static double GetEcpm(object o, string cShapeFieldName, string javaFieldName, string stack)
|
||||||
|
{
|
||||||
|
if (_stack is EmptyStack)
|
||||||
|
{
|
||||||
|
return -0.1;
|
||||||
|
}
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
if (_stack != null)
|
||||||
|
{
|
||||||
|
return GetEcpm(GetAdValue(GetJavaAdViewOjb(o, cShapeFieldName, javaFieldName), _stack.GetStackFromName(stack)));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
LoggerUtils.Error("[AdmobTools] e : " + e.Message + "\t cShapeFieldName : " + cShapeFieldName);
|
||||||
|
return -0.2;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
foreach (var availableStrategy in AvailableStrategies)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
var ecpm = GetEcpm(GetAdValue(GetJavaAdViewOjb(o, cShapeFieldName, javaFieldName), availableStrategy.GetStackFromName(stack)));
|
||||||
|
_stack = availableStrategy;
|
||||||
|
LoggerUtils.Debug("[AdmobTools] stack name : " + _stack.GetStackName());
|
||||||
|
return ecpm;
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
LoggerUtils.Error("[AdmobTools] stack name " + availableStrategy.GetStackName() + "e : " + e.Message + "\t cShapeFieldName : " + cShapeFieldName);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
_stack = new EmptyStack();
|
||||||
|
|
||||||
|
return -1.0;
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 获取java ad view 对象
|
/// 获取java ad view 对象
|
||||||
|
|
Loading…
Reference in New Issue