using System; using System.Collections; using System.Collections.Generic; using BigoAds.Scripts.Api; using Script.Common; using Script.SDKManager.AdsSDKManager.Utils; using Script.Utils; using SDK.Utils; using SDKManager.AdsSDKManager.Constant; using Unity.VisualScripting; using UnityEngine; namespace Script.SDKManager.AdsSDKManager.BigoAdsManager { public class BigoAdsManager : NormalSingleton, IAdService { public string ClientName => "BigoAds"; private BigoRewardedAdManager _rewardedAdManager; private BigoInterstitialAdManager _interstitialAdManager; private List _interstitialAdUnits; private List _rewardedAdUnits; public string bigo_app_id; private bool _initialized; private string _rvPos; private string _IvPos; private Action _rvCloseCallback = null; private Action _ivCloseCallback = null; private Action _rvShowFailedCallback = null; public void Initialize() { bigo_app_id = AdConfigParser.GetBigoAppId(); if (string.IsNullOrEmpty(bigo_app_id)) return; _rewardedAdUnits = AdConfigParser.GetBigoAdUnits(AdsType.Rewarded); _interstitialAdUnits = AdConfigParser.GetBigoAdUnits(AdsType.Interstitial); BigoAdSdk.OnInitFinish += () => { LoggerUtils.Debug($"[Bigo] sdk init success"); if (_rewardedAdUnits.Count > 0) { _rewardedAdManager = new BigoRewardedAdManager(); _rewardedAdManager.InitializeAdUnits( _rewardedAdUnits, onAdLoaded: OnRewardedAdLoaded, onAdLoadFailed: OnRewardedAdLoadFailed, onAdShowed: OnRewardedAdShowed, onAdDismissed: OnRewardedAdDismissed, onAdError: OnRewardedAdError, onAdClicked: OnRewardedAdClicked ); } if (_interstitialAdUnits.Count > 0) { _interstitialAdManager = new BigoInterstitialAdManager(); _interstitialAdManager.InitializeAdUnits( _interstitialAdUnits, onAdLoaded: OnInterstitialAdLoaded, onAdLoadFailed: OnInterstitialAdLoadFailed, onAdShowed: OnInterstitialAdShowed, onAdDismissed: OnInterstitialAdDismissed, onAdError: OnInterstitialAdError, onAdClicked: OnInterstitialAdClicked ); } _initialized = true; }; var config = new BigoAdConfig.Builder() .SetAppId(bigo_app_id) .SetDebugLog(false) .Build(); BigoAdSdk.Initialize(config); } #region 激励广告功能 // 各个回调处理方法 private void OnRewardedAdLoaded(string adUnitId) { } private void OnRewardedAdLoadFailed(string adUnitId, int code, string msg) { } private void OnRewardedAdShowed(string adUnitId) { } private void OnRewardedAdDismissed(string adUnitId) { _rvCloseCallback?.Invoke(true); _rvCloseCallback = null; _rewardedAdManager.Destroy(); LoadRewarded(); } private void OnRewardedAdError(string adUnitId, int code, string msg) { _rvShowFailedCallback?.Invoke(); _rvShowFailedCallback = null; _rewardedAdManager.Destroy(); LoadRewarded(); } private void OnRewardedAdClicked() { } public void LoadRewarded() { foreach (var adUnitId in _rewardedAdUnits) { _rewardedAdManager.LoadAd(adUnitId); } } public bool IsRewardedAvailable() { if (!_initialized) return false; return _rewardedAdManager.GetAvailableAdUnits().Count > 0; } public void DisplayRewarded(string adPos, Action rewardCallback = null, Action showFailedCallback = null) { _rvPos = adPos; _rvCloseCallback = rewardCallback; _rvShowFailedCallback = showFailedCallback; _rewardedAdManager.ShowHighestPayingAd(); } public double GetRewardedRevenue() { return _rewardedAdManager.GetHighestPayingAdRevenue(); } #region 插页广告功能 private void OnInterstitialAdLoaded(string adUnitId) { } private void OnInterstitialAdLoadFailed(string adUnitId, int code, string msg) { } private void OnInterstitialAdShowed(string adUnitId) { } private void OnInterstitialAdDismissed(string adUnitId) { _ivCloseCallback?.Invoke(); _ivCloseCallback = null; _interstitialAdManager.Destroy(); LoadInterstitial(); } private void OnInterstitialAdError(string adUnitId, int code, string msg) { _ivCloseCallback?.Invoke(); _ivCloseCallback = null; _interstitialAdManager.Destroy(); LoadInterstitial(); } private void OnInterstitialAdClicked() { } public void LoadInterstitial() { foreach (var adUnitId in _interstitialAdUnits) { _interstitialAdManager.LoadAd(adUnitId); } } public bool IsInterstitialAvailable() { if (!_initialized) return false; return _interstitialAdManager.GetAvailableAdUnits().Count > 0; } public void DisplayInterstitial(string ivPos, IvType _IvType = IvType.IV1, Action closeCallback = null) { _IvPos = ivPos; _ivCloseCallback = closeCallback; _interstitialAdManager.ShowHighestPayingAd(); } public double GetInterstitialRevenue() { return _interstitialAdManager.GetHighestPayingAdRevenue(); } #endregion #region 开屏广告功能 public void LoadSplash() { } public bool IsSplashAvailable() { return false; } public void DisplaySplash() { } public double GetSplashRevenue() { return 0; } #endregion #region 原生广告功能 public void LoadNative() { } public bool IsNativeAvailable() { return false; } public void DisplayNative(NativeAdPosition position) { } public void RemoveNative() { } public double GetNativeRevenue() { return 0; } #endregion #region 横幅广告功能 public void LoadBanner() { } public bool IsBannerAvailable() { return false; } public void DisplayBanner() { } public void HideBanner() { } public double GetBannerRevenue() { return 0; } #endregion } #endregion }