兼容两个版本获取admob价格
This commit is contained in:
parent
da1e02b790
commit
5e6e7f32cb
|
@ -1,4 +1,5 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Reflection;
|
||||
using GoogleMobileAds.Api;
|
||||
|
@ -7,77 +8,218 @@ using Newtonsoft.Json.Linq;
|
|||
|
||||
namespace WZ
|
||||
{
|
||||
public class AdmobUtils
|
||||
abstract class IStack
|
||||
{
|
||||
public static string ParseResponseInfo(ResponseInfo responseInfo)
|
||||
{
|
||||
string pubid = "";
|
||||
public abstract string GetStackName();
|
||||
protected abstract string[] GetBannerStack();
|
||||
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();
|
||||
JObject responseInfoObj = JObject.Parse(responseInfoJson);
|
||||
JToken loadedAdapterResponse = responseInfoObj["Response Extras"];
|
||||
|
||||
if (loadedAdapterResponse != null)
|
||||
{
|
||||
pubid = loadedAdapterResponse["mediation_group_name"]?.ToString();
|
||||
}
|
||||
}
|
||||
catch
|
||||
{
|
||||
}
|
||||
|
||||
return pubid;
|
||||
"BannerStack" => GetBannerStack(),
|
||||
"SpStack" => GetSpStack(),
|
||||
"IvStack" => GetIvStack(),
|
||||
"RvStack" => GetRvStack(),
|
||||
"NaStack" => GetNaStack(),
|
||||
_ => Array.Empty<string>()
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
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)
|
||||
{
|
||||
try
|
||||
{
|
||||
return GetEcpm(GetAdValue(GetJavaAdViewOjb(o, cShapeFieldName, javaFieldName), stack));
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
LoggerUtils.Error("[AdmobTools] e : " + e.Message + "\t cShapeFieldName : " + cShapeFieldName);
|
||||
}
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
||||
internal class Stack1 : IStack
|
||||
{
|
||||
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[] IvStack = { "zzc", "zzj", "zzf", "zzd", "zzae" };
|
||||
private static readonly string[] RvStack = { "zzb", "zzi", "zze", "zze", "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>
|
||||
/// 获取java ad view 对象
|
||||
|
|
Loading…
Reference in New Issue