342 lines
8.3 KiB
C#
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
|
|
|
|
}
|
|
|
|
}
|
|
|