SDK_UnityMoney/Assets/Script/SDKManager/AdsSDKManager/AdmobAdsManager/AdmobAdsManager.cs

342 lines
8.3 KiB
C#

using System.Collections.Generic;
using GoogleMobileAds.Api;
using Script.Common;
using Script.SDKManager.AdsSDKManager.Utils;
using Script.Utils;
using SDK.Utils;
using SDKManager.AdsSDKManager.Constant;
namespace Script.SDKManager.AdsSDKManager.AdmobAdsManager
{
public class AdmobAdsManager : NormalSingleton<AdmobAdsManager>, IAdService
{
public string ClientName => "Admob";
private AdmobBannerAdManager _admobBannerAdManager;
private AdmobInterstitialAdManager _admobInterstitialAdManager;
private AdmobRewardedAdManager _admobRewardedAdManager;
private AdmobNativeAdManager _admobNativeAdManager;
private AdmobSplashAdManager _admobSplashAdManager;
private List<string> _interstitialAdUnits;
private List<string> _rewardedAdUnits;
private List<string> _nativeAdUnits;
private List<string> _splashAdUnits;
private List<string> _bannerAdUnits;
private bool _initialized;
public void Initialize()
{
MobileAds.RaiseAdEventsOnUnityMainThread = true;
_bannerAdUnits = AdConfigParser.GetAdmobAdUnits(AdsType.Banner);
MobileAds.Initialize(initStatus =>
{
if (_bannerAdUnits.Count > 0)
{
_admobBannerAdManager = new AdmobBannerAdManager();
_admobBannerAdManager.InitializeAdUnits(BannerAliignType.BannerCenterBottomAlign,
_bannerAdUnits,
OnBannerAdLoaded,
OnBannerAdLoadFailed,
OnBannerAdPaid,
OnBannerAdClicked
);
}
if (_interstitialAdUnits.Count > 0) LoadInterstitial();
if (_rewardedAdUnits.Count > 0) LoadRewarded();
LoadSplash();
_initialized = true;
LoggerUtils.Debug("[Admob] init success");
});
}
#region 广
public void LoadRewarded()
{
_admobRewardedAdManager = new AdmobRewardedAdManager();
_admobRewardedAdManager.Destroy();
_admobRewardedAdManager.InitializeAdUnits(
_rewardedAdUnits,
OnRewardedAdLoaded,
OnRewardedAdLoadFailed,
OnRewardedAdShowed,
OnRewardedAdDismissed,
OnRewardedAdError,
OnRewardAdPaid,
OnRewardedAdClicked
);
}
public void DisplayRewarded()
{
_admobRewardedAdManager.ShowHighestPayingAd();
}
public double GetRewardedRevenue()
{
return _admobRewardedAdManager.GetHighestPayingAdRevenue();
}
public bool IsRewardedAvailable()
{
if (!_initialized) return false;
return _admobRewardedAdManager.GetAvailableAdUnits().Count > 0;
}
private void OnRewardedAdLoaded(string adUnitId)
{
}
private void OnRewardedAdLoadFailed(string adUnitId, int errorCode, string errorMsg)
{
}
private void OnRewardedAdShowed(string adUnitId)
{
}
private void OnRewardedAdDismissed(string adUnitId)
{
}
private void OnRewardedAdError(string adUnitId, int errorCode, string errorMsg)
{
}
private void OnRewardedAdClicked(string adUnitId)
{
}
private void OnRewardAdPaid(AdValue adValue)
{
}
#endregion
#region 广
public void LoadInterstitial()
{
_admobInterstitialAdManager = new AdmobInterstitialAdManager();
_admobInterstitialAdManager.Destroy();
_admobInterstitialAdManager.InitializeAdUnits(
_interstitialAdUnits,
OnInterstitialAdLoaded,
OnInterstitialAdLoadFailed,
OnInterstitialAdShowed,
OnInterstitialAdDismissed,
OnInterstitialAdError,
OnInterstitialAdPaid,
OnInterstitialAdClicked
);
}
public double GetInterstitialRevenue()
{
return _admobInterstitialAdManager.GetHighestPayingAdRevenue();
}
public void DisplayInterstitial()
{
_admobInterstitialAdManager.ShowHighestPayingAd();
}
public bool IsInterstitialAvailable()
{
if (!_initialized) return false;
return _admobInterstitialAdManager.GetAvailableAdUnits().Count > 0;
}
private void OnInterstitialAdLoaded(string adUnitId)
{
}
private void OnInterstitialAdLoadFailed(string adUnitId, int errorCode, string errorMsg)
{
}
private void OnInterstitialAdClicked(string adUnitId)
{
}
private void OnInterstitialAdPaid(AdValue adValue)
{
}
private void OnInterstitialAdShowed(string adUnitId)
{
}
private void OnInterstitialAdDismissed(string adUnitId)
{
}
private void OnInterstitialAdError(string adUnitId, int errorCode, string errorMsg)
{
}
#endregion
#region 广
public void LoadSplash()
{
_admobSplashAdManager = new AdmobSplashAdManager();
_admobSplashAdManager.Destroy();
_admobSplashAdManager.InitializeAdUnits(
_splashAdUnits,
OnSplashAdLoaded,
OnSplashAdLoadFailed,
OnSplashAdShowed,
OnSplashAdDismissed,
OnSplashAdError,
OnSplashAdPaid,
OnSplashAdClicked
);
}
public bool IsSplashAvailable()
{
return _admobBannerAdManager.GetAvailableAdUnits().Count > 0;
}
public void DisplaySplash()
{
_admobSplashAdManager.ShowHighestPayingAd();
}
public double GetSplashRevenue()
{
return _admobSplashAdManager.GetHighestPayingAdRevenue();
}
private void OnSplashAdLoaded(string adUnitId)
{
}
private void OnSplashAdLoadFailed(string adUnitId, int errorCode, string errorMsg)
{
}
private void OnSplashAdShowed(string adUnitId)
{
}
private void OnSplashAdDismissed(string adUnitId)
{
}
private void OnSplashAdError(string adUnitId, int errorCode, string errorMsg)
{
}
private void OnSplashAdClicked(string adUnitId)
{
}
private void OnSplashAdPaid(AdValue adValue)
{
}
#endregion
#region 广
public void LoadNative()
{
throw new System.NotImplementedException();
}
public double GetNativeRevenue()
{
return 0;
}
public void DisplayNative(NativeAdPosition position)
{
}
public bool IsNativeAvailable()
{
return false;
}
public void RemoveNative()
{
}
#endregion
#region 广
public void LoadBanner()
{
foreach (var adUnitId in _bannerAdUnits)
{
_admobBannerAdManager.LoadAd(adUnitId);
}
}
public bool IsBannerAvailable()
{
return _admobBannerAdManager.GetAvailableAdUnits().Count > 0;
}
public void HideBanner()
{
_admobBannerAdManager.HideBanner();
}
public double GetBannerRevenue()
{
return _admobBannerAdManager.GetHighestPayingAdRevenue();
}
public void DisplayBanner()
{
_admobBannerAdManager.ShowHighestPayingAd();
}
private void OnBannerAdLoaded(string adUnitId)
{
}
private void OnBannerAdLoadFailed(string adUnitId, int errorCode, string errorMsg)
{
}
private void OnBannerAdClicked()
{
}
private void OnBannerAdPaid(AdValue adValue)
{
}
#endregion
}
}