2025-08-31 05:15:14 +00:00
|
|
|
using System;
|
2025-08-30 13:48:51 +00:00
|
|
|
using System.Collections.Generic;
|
2025-09-01 03:39:21 +00:00
|
|
|
using System.Diagnostics;
|
2025-08-30 13:48:51 +00:00
|
|
|
using GoogleMobileAds.Api;
|
2025-09-01 08:57:50 +00:00
|
|
|
using UnityEngine;
|
2025-08-31 13:19:46 +00:00
|
|
|
|
2025-08-30 13:48:51 +00:00
|
|
|
|
2025-09-01 10:32:50 +00:00
|
|
|
namespace WZ
|
2025-08-30 13:48:51 +00:00
|
|
|
{
|
|
|
|
|
2025-09-02 09:14:49 +00:00
|
|
|
public class AdmobAdsManager : D_MonoSingleton<AdmobAdsManager>, IAdService
|
2025-08-30 13:48:51 +00:00
|
|
|
{
|
|
|
|
public string ClientName => "Admob";
|
2025-09-01 07:14:26 +00:00
|
|
|
public PlatformType Platfrom => PlatformType.Admob;
|
2025-08-30 13:48:51 +00:00
|
|
|
private AdmobBannerAdManager _admobBannerAdManager;
|
|
|
|
private AdmobInterstitialAdManager _admobInterstitialAdManager;
|
|
|
|
private AdmobRewardedAdManager _admobRewardedAdManager;
|
|
|
|
private AdmobNativeAdManager _admobNativeAdManager;
|
|
|
|
private AdmobSplashAdManager _admobSplashAdManager;
|
2025-09-01 03:39:21 +00:00
|
|
|
private List<string> _interstitialAdUnits = new List<string>();
|
|
|
|
private List<string> _rewardedAdUnits = new List<string>();
|
|
|
|
private List<string> _nativeAdUnits = new List<string>();
|
|
|
|
private List<string> _splashAdUnits = new List<string>();
|
|
|
|
private List<string> _bannerAdUnits = new List<string>();
|
2025-08-31 05:15:14 +00:00
|
|
|
private string _rvPos;
|
|
|
|
private string _ivPos;
|
2025-09-01 14:14:33 +00:00
|
|
|
private Action<bool,double> _rvCloseCallback = null;
|
|
|
|
private Action<double> _ivCloseCallback = null;
|
2025-08-31 05:15:14 +00:00
|
|
|
private Action _rvShowFailedCallback = null;
|
2025-09-01 08:57:50 +00:00
|
|
|
private float _rvStartLoadTime = 0;
|
|
|
|
private float _ivStartLoadTime = 0;
|
|
|
|
private float _nvStartLoadTime = 0;
|
|
|
|
private float _bvStartLoadTime = 0;
|
|
|
|
private float _spStartLoadTime = 0;
|
2025-09-02 13:42:07 +00:00
|
|
|
public bool _splashLoaded = false;
|
2025-09-02 15:25:00 +00:00
|
|
|
public bool _initialized { get; private set; } = false;
|
2025-09-03 11:58:43 +00:00
|
|
|
private bool _receivedReward = false;
|
2025-08-30 13:48:51 +00:00
|
|
|
|
|
|
|
public void Initialize()
|
|
|
|
{
|
2025-09-01 12:53:08 +00:00
|
|
|
if (_initialized) return;
|
2025-08-30 13:48:51 +00:00
|
|
|
MobileAds.RaiseAdEventsOnUnityMainThread = true;
|
2025-09-03 14:11:37 +00:00
|
|
|
_initialized = true;
|
2025-08-30 13:48:51 +00:00
|
|
|
MobileAds.Initialize(initStatus =>
|
|
|
|
{
|
2025-09-03 05:42:30 +00:00
|
|
|
if (_bannerAdUnits.Count > 0) LoadBanner();
|
|
|
|
if (_interstitialAdUnits.Count > 0) LoadInterstitial();
|
|
|
|
if (_rewardedAdUnits.Count > 0) LoadRewarded();
|
|
|
|
if (_splashAdUnits.Count > 0) AdsSplashManager.Instance.InitSplash();
|
2025-09-03 11:58:43 +00:00
|
|
|
if (_nativeAdUnits.Count > 0) LoadNative();
|
2025-08-30 13:48:51 +00:00
|
|
|
LoggerUtils.Debug("[Admob] init success");
|
2025-09-02 13:42:07 +00:00
|
|
|
});
|
|
|
|
|
2025-09-03 11:58:43 +00:00
|
|
|
|
2025-09-01 12:53:08 +00:00
|
|
|
}
|
2025-08-30 13:48:51 +00:00
|
|
|
|
2025-09-01 12:53:08 +00:00
|
|
|
public void RefreshAdsData()
|
|
|
|
{
|
|
|
|
_bannerAdUnits = AdConfigParser.GetAdmobAdUnits(AdsType.Banner);
|
|
|
|
_interstitialAdUnits = AdConfigParser.GetAdmobAdUnits(AdsType.Interstitial);
|
|
|
|
_nativeAdUnits = AdConfigParser.GetAdmobAdUnits(AdsType.Native);
|
|
|
|
_splashAdUnits = AdConfigParser.GetAdmobAdUnits(AdsType.Splash);
|
|
|
|
_rewardedAdUnits = AdConfigParser.GetAdmobAdUnits(AdsType.Rewarded);
|
2025-08-30 13:48:51 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
#region 激励广告功能
|
|
|
|
public void LoadRewarded()
|
|
|
|
{
|
2025-09-01 08:57:50 +00:00
|
|
|
_admobRewardedAdManager?.Destroy();
|
2025-08-31 07:12:52 +00:00
|
|
|
_admobRewardedAdManager = new AdmobRewardedAdManager();
|
2025-08-30 13:48:51 +00:00
|
|
|
_admobRewardedAdManager.InitializeAdUnits(
|
|
|
|
_rewardedAdUnits,
|
|
|
|
OnRewardedAdLoaded,
|
|
|
|
OnRewardedAdLoadFailed,
|
|
|
|
OnRewardedAdShowed,
|
|
|
|
OnRewardedAdDismissed,
|
|
|
|
OnRewardedAdError,
|
2025-09-03 11:58:43 +00:00
|
|
|
OnRewardEarnReward,
|
2025-08-30 13:48:51 +00:00
|
|
|
OnRewardedAdClicked
|
|
|
|
);
|
2025-09-01 08:57:50 +00:00
|
|
|
_rvStartLoadTime = Time.realtimeSinceStartup;
|
2025-09-01 12:53:08 +00:00
|
|
|
AdsActionEvents.TrackAdStartLoad(Platfrom, "", "", AdsType.Rewarded);
|
2025-08-30 13:48:51 +00:00
|
|
|
}
|
2025-09-01 14:14:33 +00:00
|
|
|
public void DisplayRewarded(string adPos, Action<bool,double> rewardCallback = null, Action showFailedCallback = null)
|
2025-08-30 13:48:51 +00:00
|
|
|
{
|
2025-08-31 05:15:14 +00:00
|
|
|
_rvPos = adPos;
|
|
|
|
_rvCloseCallback = rewardCallback;
|
|
|
|
_rvShowFailedCallback = showFailedCallback;
|
2025-08-30 13:48:51 +00:00
|
|
|
_admobRewardedAdManager.ShowHighestPayingAd();
|
|
|
|
}
|
|
|
|
|
|
|
|
public double GetRewardedRevenue()
|
|
|
|
{
|
|
|
|
return _admobRewardedAdManager.GetHighestPayingAdRevenue();
|
|
|
|
}
|
|
|
|
|
|
|
|
public bool IsRewardedAvailable()
|
|
|
|
{
|
2025-09-01 12:53:08 +00:00
|
|
|
if (!_initialized || _rewardedAdUnits.Count == 0) return false;
|
2025-08-30 13:48:51 +00:00
|
|
|
return _admobRewardedAdManager.GetAvailableAdUnits().Count > 0;
|
|
|
|
}
|
|
|
|
|
2025-09-01 08:57:50 +00:00
|
|
|
private void OnRewardedAdLoaded(string adSource,string adUnitId)
|
2025-08-30 13:48:51 +00:00
|
|
|
{
|
2025-09-01 08:57:50 +00:00
|
|
|
AdsActionEvents.TrackAdLoaded(Platfrom,adSource,adUnitId,AdsType.Rewarded,Time.realtimeSinceStartup - _rvStartLoadTime);
|
2025-08-30 13:48:51 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
private void OnRewardedAdLoadFailed(string adUnitId, int errorCode, string errorMsg)
|
|
|
|
{
|
2025-09-01 08:57:50 +00:00
|
|
|
AdsActionEvents.TrackAdFailToLoad(Platfrom,"","",AdsType.Rewarded,Time.realtimeSinceStartup - _rvStartLoadTime,errorMsg);
|
2025-08-30 13:48:51 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
private void OnRewardedAdShowed(string adUnitId)
|
|
|
|
{
|
|
|
|
|
|
|
|
}
|
|
|
|
|
2025-09-01 08:57:50 +00:00
|
|
|
private void OnRewardedAdDismissed(string adSource,string adUnitId,double revenue)
|
2025-08-30 13:48:51 +00:00
|
|
|
{
|
2025-09-01 08:57:50 +00:00
|
|
|
AdsActionEvents.TrackAdClosed(Platfrom,adSource,adUnitId,AdsType.Rewarded,_rvPos,revenue);
|
2025-09-03 11:58:43 +00:00
|
|
|
_rvCloseCallback?.Invoke(_receivedReward,revenue);
|
2025-08-31 05:15:14 +00:00
|
|
|
_rvCloseCallback = null;
|
2025-09-03 11:58:43 +00:00
|
|
|
_receivedReward = false;
|
2025-08-31 05:15:14 +00:00
|
|
|
LoadRewarded();
|
2025-08-30 13:48:51 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
private void OnRewardedAdError(string adUnitId, int errorCode, string errorMsg)
|
|
|
|
{
|
2025-08-31 05:15:14 +00:00
|
|
|
_rvShowFailedCallback?.Invoke();
|
|
|
|
_rvShowFailedCallback = null;
|
|
|
|
LoadRewarded();
|
2025-08-30 13:48:51 +00:00
|
|
|
}
|
|
|
|
|
2025-09-01 08:57:50 +00:00
|
|
|
private void OnRewardedAdClicked(string adSource,string adUnitId,double revenue)
|
2025-08-30 13:48:51 +00:00
|
|
|
{
|
2025-09-01 08:57:50 +00:00
|
|
|
AdsActionEvents.TrackAdClicked(Platfrom,adSource,adUnitId,AdsType.Rewarded,_rvPos,revenue);
|
2025-08-30 13:48:51 +00:00
|
|
|
}
|
|
|
|
|
2025-09-03 11:58:43 +00:00
|
|
|
private void OnRewardEarnReward(bool reward)
|
2025-08-30 13:48:51 +00:00
|
|
|
{
|
2025-09-03 11:58:43 +00:00
|
|
|
_receivedReward = reward;
|
2025-08-30 13:48:51 +00:00
|
|
|
}
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
#region 插页广告功能
|
|
|
|
public void LoadInterstitial()
|
|
|
|
{
|
2025-09-02 10:11:18 +00:00
|
|
|
_admobInterstitialAdManager?.Destroy();
|
2025-08-31 07:12:52 +00:00
|
|
|
_admobInterstitialAdManager = new AdmobInterstitialAdManager();
|
2025-08-30 13:48:51 +00:00
|
|
|
_admobInterstitialAdManager.InitializeAdUnits(
|
|
|
|
_interstitialAdUnits,
|
|
|
|
OnInterstitialAdLoaded,
|
|
|
|
OnInterstitialAdLoadFailed,
|
|
|
|
OnInterstitialAdShowed,
|
|
|
|
OnInterstitialAdDismissed,
|
|
|
|
OnInterstitialAdError,
|
|
|
|
OnInterstitialAdPaid,
|
|
|
|
OnInterstitialAdClicked
|
|
|
|
);
|
2025-09-01 08:57:50 +00:00
|
|
|
_ivStartLoadTime = Time.realtimeSinceStartup;
|
|
|
|
AdsActionEvents.TrackAdStartLoad(Platfrom,"","",AdsType.Interstitial);
|
2025-08-30 13:48:51 +00:00
|
|
|
}
|
|
|
|
public double GetInterstitialRevenue()
|
|
|
|
{
|
|
|
|
return _admobInterstitialAdManager.GetHighestPayingAdRevenue();
|
|
|
|
}
|
|
|
|
|
2025-09-01 14:14:33 +00:00
|
|
|
public void DisplayInterstitial(string ivPos, IvType _IvType = IvType.IV1, Action<double> closeCallback = null)
|
2025-08-30 13:48:51 +00:00
|
|
|
{
|
2025-08-31 05:15:14 +00:00
|
|
|
_ivPos = ivPos;
|
|
|
|
_ivCloseCallback = closeCallback;
|
2025-08-30 13:48:51 +00:00
|
|
|
_admobInterstitialAdManager.ShowHighestPayingAd();
|
|
|
|
}
|
|
|
|
|
|
|
|
public bool IsInterstitialAvailable()
|
2025-09-03 05:42:30 +00:00
|
|
|
{
|
2025-08-30 13:48:51 +00:00
|
|
|
return _admobInterstitialAdManager.GetAvailableAdUnits().Count > 0;
|
|
|
|
}
|
|
|
|
|
2025-09-01 08:57:50 +00:00
|
|
|
private void OnInterstitialAdLoaded(string adSource,string adUnitId)
|
2025-08-30 13:48:51 +00:00
|
|
|
{
|
2025-09-01 08:57:50 +00:00
|
|
|
AdsActionEvents.TrackAdLoaded(Platfrom,adSource,adUnitId,AdsType.Interstitial,Time.realtimeSinceStartup - _ivStartLoadTime);
|
2025-08-30 13:48:51 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
private void OnInterstitialAdLoadFailed(string adUnitId, int errorCode, string errorMsg)
|
|
|
|
{
|
2025-09-01 08:57:50 +00:00
|
|
|
AdsActionEvents.TrackAdFailToLoad(Platfrom,"","",AdsType.Interstitial,Time.realtimeSinceStartup - _ivStartLoadTime,errorMsg);
|
2025-08-30 13:48:51 +00:00
|
|
|
}
|
2025-09-01 08:57:50 +00:00
|
|
|
private void OnInterstitialAdClicked(string adSource,string adUnitId,double revenue)
|
2025-08-30 13:48:51 +00:00
|
|
|
{
|
2025-09-01 08:57:50 +00:00
|
|
|
AdsActionEvents.TrackAdClicked(Platfrom, adSource, adUnitId, AdsType.Interstitial, "", revenue);
|
2025-08-30 13:48:51 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
private void OnInterstitialAdPaid(AdValue adValue)
|
|
|
|
{
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
private void OnInterstitialAdShowed(string adUnitId)
|
|
|
|
{
|
|
|
|
|
|
|
|
}
|
|
|
|
|
2025-09-01 08:57:50 +00:00
|
|
|
private void OnInterstitialAdDismissed(string adSource,string adUnitId,double revenue)
|
2025-08-30 13:48:51 +00:00
|
|
|
{
|
2025-09-01 08:57:50 +00:00
|
|
|
AdsActionEvents.TrackAdClosed(Platfrom, adSource, adUnitId, AdsType.Interstitial, "", revenue);
|
2025-09-01 14:14:33 +00:00
|
|
|
_ivCloseCallback?.Invoke(revenue);
|
2025-08-31 05:15:14 +00:00
|
|
|
_ivCloseCallback = null;
|
|
|
|
LoadInterstitial();
|
2025-08-30 13:48:51 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
private void OnInterstitialAdError(string adUnitId, int errorCode, string errorMsg)
|
|
|
|
{
|
2025-09-01 14:14:33 +00:00
|
|
|
_ivCloseCallback?.Invoke(0);
|
2025-08-31 05:15:14 +00:00
|
|
|
_ivCloseCallback = null;
|
|
|
|
LoadInterstitial();
|
2025-08-30 13:48:51 +00:00
|
|
|
}
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#region 开屏广告功能
|
|
|
|
public void LoadSplash()
|
|
|
|
{
|
2025-09-01 08:57:50 +00:00
|
|
|
_admobSplashAdManager?.Destroy();
|
2025-08-31 07:12:52 +00:00
|
|
|
_admobSplashAdManager = new AdmobSplashAdManager();
|
2025-08-30 13:48:51 +00:00
|
|
|
_admobSplashAdManager.InitializeAdUnits(
|
|
|
|
_splashAdUnits,
|
|
|
|
OnSplashAdLoaded,
|
|
|
|
OnSplashAdLoadFailed,
|
|
|
|
OnSplashAdShowed,
|
|
|
|
OnSplashAdDismissed,
|
|
|
|
OnSplashAdError,
|
|
|
|
OnSplashAdPaid,
|
|
|
|
OnSplashAdClicked
|
|
|
|
);
|
2025-09-01 08:57:50 +00:00
|
|
|
_spStartLoadTime = Time.realtimeSinceStartup;
|
|
|
|
AdsActionEvents.TrackAdStartLoad(Platfrom,"","",AdsType.Splash);
|
2025-08-30 13:48:51 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
public bool IsSplashAvailable()
|
|
|
|
{
|
2025-08-31 01:11:05 +00:00
|
|
|
if (!_initialized) return false;
|
2025-09-02 10:11:18 +00:00
|
|
|
return _admobSplashAdManager.GetAvailableAdUnits().Count > 0;
|
2025-08-30 13:48:51 +00:00
|
|
|
}
|
|
|
|
public void DisplaySplash()
|
|
|
|
{
|
|
|
|
_admobSplashAdManager.ShowHighestPayingAd();
|
|
|
|
}
|
|
|
|
|
|
|
|
public double GetSplashRevenue()
|
|
|
|
{
|
|
|
|
return _admobSplashAdManager.GetHighestPayingAdRevenue();
|
|
|
|
}
|
|
|
|
|
2025-09-01 08:57:50 +00:00
|
|
|
private void OnSplashAdLoaded(string adSource,string adUnitId)
|
2025-08-30 13:48:51 +00:00
|
|
|
{
|
2025-09-02 13:42:07 +00:00
|
|
|
_splashLoaded = true;
|
2025-09-01 08:57:50 +00:00
|
|
|
AdsActionEvents.TrackAdLoaded(Platfrom,adSource,adUnitId,AdsType.Splash,Time.realtimeSinceStartup - _spStartLoadTime);
|
2025-08-30 13:48:51 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
private void OnSplashAdLoadFailed(string adUnitId, int errorCode, string errorMsg)
|
|
|
|
{
|
2025-09-02 13:42:07 +00:00
|
|
|
_splashLoaded = true;
|
2025-09-01 08:57:50 +00:00
|
|
|
AdsActionEvents.TrackAdFailToLoad(Platfrom,"","",AdsType.Splash,Time.realtimeSinceStartup - _spStartLoadTime,errorMsg);
|
2025-08-30 13:48:51 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
private void OnSplashAdShowed(string adUnitId)
|
|
|
|
{
|
2025-09-02 13:57:18 +00:00
|
|
|
AdsSDKManager.Instance.otherAdsOnShow = true;
|
2025-08-30 13:48:51 +00:00
|
|
|
}
|
|
|
|
|
2025-09-01 10:32:50 +00:00
|
|
|
private void OnSplashAdDismissed(string adSource, string adUnitId, double revenue)
|
2025-08-30 13:48:51 +00:00
|
|
|
{
|
2025-09-01 08:57:50 +00:00
|
|
|
AdsActionEvents.TrackAdClosed(Platfrom, adSource, adUnitId, AdsType.Splash, "", revenue);
|
2025-09-02 13:57:18 +00:00
|
|
|
AdsSDKManager.Instance.otherAdsOnShow = false;
|
2025-09-01 10:32:50 +00:00
|
|
|
AdsSDKManager.Instance.OnSplashAdCloseCallback?.Invoke();
|
2025-08-30 13:48:51 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
private void OnSplashAdError(string adUnitId, int errorCode, string errorMsg)
|
|
|
|
{
|
2025-09-02 13:57:18 +00:00
|
|
|
AdsSDKManager.Instance.otherAdsOnShow = false;
|
2025-09-01 10:32:50 +00:00
|
|
|
AdsSDKManager.Instance.OnSplashAdCloseCallback?.Invoke();
|
2025-08-30 13:48:51 +00:00
|
|
|
}
|
|
|
|
|
2025-09-01 08:57:50 +00:00
|
|
|
private void OnSplashAdClicked(string adSource,string adUnitId,double revenue)
|
2025-08-30 13:48:51 +00:00
|
|
|
{
|
2025-09-01 08:57:50 +00:00
|
|
|
AdsActionEvents.TrackAdClicked(Platfrom,adSource,adUnitId,AdsType.Splash,"",revenue);
|
2025-08-30 13:48:51 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
private void OnSplashAdPaid(AdValue adValue)
|
|
|
|
{
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
#region 原生广告功能
|
|
|
|
public void LoadNative()
|
|
|
|
{
|
2025-09-02 02:07:10 +00:00
|
|
|
_admobNativeAdManager?.Destroy();
|
|
|
|
_admobNativeAdManager = new AdmobNativeAdManager();
|
|
|
|
_admobNativeAdManager.InitializeAdUnits(
|
|
|
|
_nativeAdUnits
|
|
|
|
);
|
2025-09-03 05:42:30 +00:00
|
|
|
AdsActionEvents.TrackAdStartLoad(Platfrom, "", "", AdsType.Native);
|
2025-08-30 13:48:51 +00:00
|
|
|
}
|
2025-09-02 02:07:10 +00:00
|
|
|
|
|
|
|
public bool IsNativeAvailable(string adUnitId)
|
2025-08-30 13:48:51 +00:00
|
|
|
{
|
2025-09-02 02:07:10 +00:00
|
|
|
return _admobNativeAdManager.IsAdAvailable(adUnitId);
|
2025-08-30 13:48:51 +00:00
|
|
|
}
|
|
|
|
|
2025-09-02 02:07:10 +00:00
|
|
|
public void DisplayNative(string _adPos, string adUnitId, NativeAdPosition position)
|
|
|
|
{
|
2025-09-03 05:42:30 +00:00
|
|
|
|
2025-09-02 02:07:10 +00:00
|
|
|
_admobNativeAdManager.ShowAd(position, adUnitId);
|
2025-08-30 13:48:51 +00:00
|
|
|
}
|
|
|
|
|
2025-09-02 02:07:10 +00:00
|
|
|
public void RemoveNative(string adUnitId)
|
2025-08-30 13:48:51 +00:00
|
|
|
{
|
2025-09-02 02:07:10 +00:00
|
|
|
_admobNativeAdManager.RemoveNative(adUnitId);
|
2025-08-30 13:48:51 +00:00
|
|
|
}
|
|
|
|
|
2025-09-02 02:07:10 +00:00
|
|
|
public double GetNativeRevenue(string adUnitId)
|
2025-08-30 13:48:51 +00:00
|
|
|
{
|
2025-09-02 10:11:18 +00:00
|
|
|
return _admobNativeAdManager.GetHighestPayingAdRevenue();
|
2025-08-30 13:48:51 +00:00
|
|
|
}
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
#region 横幅广告功能
|
|
|
|
public void LoadBanner()
|
|
|
|
{
|
2025-09-01 08:57:50 +00:00
|
|
|
_admobBannerAdManager?.Destroy();
|
|
|
|
_admobBannerAdManager = new AdmobBannerAdManager();
|
|
|
|
_admobBannerAdManager.InitializeAdUnits(BannerAliignType.BannerCenterBottomAlign,
|
|
|
|
_bannerAdUnits,
|
|
|
|
OnBannerAdLoaded,
|
|
|
|
OnBannerAdLoadFailed,
|
|
|
|
OnBannerAdPaid,
|
|
|
|
OnBannerAdClicked
|
|
|
|
);
|
|
|
|
_bvStartLoadTime = Time.realtimeSinceStartup;
|
|
|
|
AdsActionEvents.TrackAdStartLoad(Platfrom,"","",AdsType.Banner);
|
2025-08-30 13:48:51 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
public bool IsBannerAvailable()
|
|
|
|
{
|
2025-08-31 01:11:05 +00:00
|
|
|
if (!_initialized) return false;
|
2025-08-30 13:48:51 +00:00
|
|
|
return _admobBannerAdManager.GetAvailableAdUnits().Count > 0;
|
|
|
|
}
|
|
|
|
public void HideBanner()
|
|
|
|
{
|
|
|
|
_admobBannerAdManager.HideBanner();
|
|
|
|
}
|
|
|
|
|
|
|
|
public double GetBannerRevenue()
|
|
|
|
{
|
|
|
|
return _admobBannerAdManager.GetHighestPayingAdRevenue();
|
|
|
|
}
|
|
|
|
|
|
|
|
public void DisplayBanner()
|
|
|
|
{
|
|
|
|
_admobBannerAdManager.ShowHighestPayingAd();
|
|
|
|
}
|
2025-08-31 08:26:53 +00:00
|
|
|
|
2025-09-01 08:57:50 +00:00
|
|
|
private void OnBannerAdLoaded(string adSource,string adUnitId)
|
2025-08-31 08:26:53 +00:00
|
|
|
{
|
2025-08-30 13:48:51 +00:00
|
|
|
|
2025-09-01 08:57:50 +00:00
|
|
|
AdsActionEvents.TrackAdLoaded(Platfrom,adSource,adUnitId,AdsType.Banner,Time.realtimeSinceStartup - _bvStartLoadTime);
|
2025-08-30 13:48:51 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
private void OnBannerAdLoadFailed(string adUnitId, int errorCode, string errorMsg)
|
2025-08-31 08:26:53 +00:00
|
|
|
{
|
2025-09-01 08:57:50 +00:00
|
|
|
AdsActionEvents.TrackAdFailToLoad(Platfrom,"","",AdsType.Banner,Time.realtimeSinceStartup - _bvStartLoadTime,errorMsg);
|
2025-08-30 13:48:51 +00:00
|
|
|
}
|
|
|
|
|
2025-09-01 08:57:50 +00:00
|
|
|
private void OnBannerAdClicked(string adSource,string adUnitId,double revenue)
|
2025-08-30 13:48:51 +00:00
|
|
|
{
|
2025-09-01 08:57:50 +00:00
|
|
|
AdsActionEvents.TrackAdClicked(Platfrom,adSource,adUnitId,AdsType.Banner,"",revenue);
|
2025-08-30 13:48:51 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
private void OnBannerAdPaid(AdValue adValue)
|
2025-08-31 08:26:53 +00:00
|
|
|
{
|
2025-08-30 13:48:51 +00:00
|
|
|
|
|
|
|
}
|
|
|
|
#endregion
|
|
|
|
|
2025-08-31 08:26:53 +00:00
|
|
|
#region 收益上报
|
2025-08-31 12:29:24 +00:00
|
|
|
public void TrackAdImpression(AdapterResponseInfo loadedAdapterResponseInfo, AdValue adValue, AdsType type, string placement)
|
|
|
|
{
|
|
|
|
AdjustTrackEvent.Instance.TrackAdEvent(adValue.Value / 1000000f,
|
|
|
|
loadedAdapterResponseInfo.AdSourceName,
|
|
|
|
placement,
|
|
|
|
loadedAdapterResponseInfo.AdSourceInstanceName);
|
|
|
|
|
|
|
|
FireBaseAnalyticsManager.Instance.OnAdRevenueEvent(PlatformType.Admob.ToString(),
|
|
|
|
loadedAdapterResponseInfo.AdSourceName,
|
2025-09-01 08:57:50 +00:00
|
|
|
placement,
|
|
|
|
type,
|
2025-08-31 12:29:24 +00:00
|
|
|
adValue.Value / 1000000f,
|
|
|
|
type == AdsType.Rewarded ? _rvPos : "",
|
2025-09-04 09:19:05 +00:00
|
|
|
AdPlayCountManager.GetAdsActionCount(type, AdPlayCountManager.PLAY_COUNT_SUFFIX));
|
2025-08-31 12:29:24 +00:00
|
|
|
|
|
|
|
ShuShuEvent.Instance.OnAdRevenueEvent(PlatformType.Admob.ToString(),
|
|
|
|
loadedAdapterResponseInfo.AdSourceName,
|
2025-09-01 08:57:50 +00:00
|
|
|
placement,
|
|
|
|
type.ToString(),
|
2025-08-31 12:29:24 +00:00
|
|
|
adValue.Value / 1000000f,
|
|
|
|
type == AdsType.Rewarded ? _rvPos : "",
|
2025-09-04 09:19:05 +00:00
|
|
|
AdPlayCountManager.GetAdsActionCount(type, AdPlayCountManager.PLAY_COUNT_SUFFIX));
|
2025-08-31 08:26:53 +00:00
|
|
|
}
|
|
|
|
#endregion
|
|
|
|
|
2025-08-31 14:18:31 +00:00
|
|
|
#region 广告行为事件上报
|
|
|
|
public void TrackAdAction(AdapterResponseInfo loadedAdapterResponseInfo, double revenue, AdsType type, string placement)
|
|
|
|
{
|
|
|
|
|
|
|
|
}
|
|
|
|
#endregion
|
|
|
|
|
2025-08-30 13:48:51 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|