修复播放完激励展示开屏/数据重复上报/退出后台发放奖励问题

This commit is contained in:
juncong lee 2025-09-03 19:58:43 +08:00
parent c844ffcf29
commit 33837645b5
10 changed files with 70 additions and 93 deletions

View File

@ -34,6 +34,7 @@ namespace WZ
private float _spStartLoadTime = 0; private float _spStartLoadTime = 0;
public bool _splashLoaded = false; public bool _splashLoaded = false;
public bool _initialized { get; private set; } = false; public bool _initialized { get; private set; } = false;
private bool _receivedReward = false;
public void Initialize() public void Initialize()
{ {
@ -46,11 +47,11 @@ namespace WZ
if (_interstitialAdUnits.Count > 0) LoadInterstitial(); if (_interstitialAdUnits.Count > 0) LoadInterstitial();
if (_rewardedAdUnits.Count > 0) LoadRewarded(); if (_rewardedAdUnits.Count > 0) LoadRewarded();
if (_splashAdUnits.Count > 0) AdsSplashManager.Instance.InitSplash(); if (_splashAdUnits.Count > 0) AdsSplashManager.Instance.InitSplash();
if (_nativeAdUnits.Count > 0)LoadNative(); if (_nativeAdUnits.Count > 0) LoadNative();
LoggerUtils.Debug("[Admob] init success"); LoggerUtils.Debug("[Admob] init success");
}); });
} }
public void RefreshAdsData() public void RefreshAdsData()
@ -74,7 +75,7 @@ namespace WZ
OnRewardedAdShowed, OnRewardedAdShowed,
OnRewardedAdDismissed, OnRewardedAdDismissed,
OnRewardedAdError, OnRewardedAdError,
OnRewardAdPaid, OnRewardEarnReward,
OnRewardedAdClicked OnRewardedAdClicked
); );
_rvStartLoadTime = Time.realtimeSinceStartup; _rvStartLoadTime = Time.realtimeSinceStartup;
@ -117,8 +118,9 @@ namespace WZ
private void OnRewardedAdDismissed(string adSource,string adUnitId,double revenue) private void OnRewardedAdDismissed(string adSource,string adUnitId,double revenue)
{ {
AdsActionEvents.TrackAdClosed(Platfrom,adSource,adUnitId,AdsType.Rewarded,_rvPos,revenue); AdsActionEvents.TrackAdClosed(Platfrom,adSource,adUnitId,AdsType.Rewarded,_rvPos,revenue);
_rvCloseCallback?.Invoke(true,revenue); _rvCloseCallback?.Invoke(_receivedReward,revenue);
_rvCloseCallback = null; _rvCloseCallback = null;
_receivedReward = false;
LoadRewarded(); LoadRewarded();
} }
@ -135,10 +137,9 @@ namespace WZ
AdsActionEvents.TrackAdClicked(Platfrom,adSource,adUnitId,AdsType.Rewarded,_rvPos,revenue); AdsActionEvents.TrackAdClicked(Platfrom,adSource,adUnitId,AdsType.Rewarded,_rvPos,revenue);
} }
private void OnRewardAdPaid(AdValue adValue) private void OnRewardEarnReward(bool reward)
{ {
_receivedReward = reward;
} }
#endregion #endregion
@ -412,8 +413,6 @@ namespace WZ
adValue.Value / 1000000f, adValue.Value / 1000000f,
type == AdsType.Rewarded ? _rvPos : "", type == AdsType.Rewarded ? _rvPos : "",
AdPlayCountManager.GetAdPlayCount(type)); AdPlayCountManager.GetAdPlayCount(type));
AdsActionEvents.TrackAdImpression(Platfrom,loadedAdapterResponseInfo.AdSourceName,placement,type,type == AdsType.Rewarded ? _rvPos : "",adValue.Value / 1000000f);
} }
#endregion #endregion

View File

@ -16,12 +16,12 @@ namespace WZ
Action<string> onAdShowed = null, Action<string> onAdShowed = null,
Action<string,string,double> onAdDismissed = null, Action<string,string,double> onAdDismissed = null,
Action<string, int, string> onAdError = null, Action<string, int, string> onAdError = null,
Action<AdValue> onAdPaid = null, Action<bool> onEarnRewarded = null,
Action<string,string,double> onAdClicked = null) Action<string,string,double> onAdClicked = null)
{ {
foreach (var adUnitId in adUnitIds) foreach (var adUnitId in adUnitIds)
{ {
CreateRewardedAd(adUnitId, onAdLoaded, onAdLoadFailed, onAdShowed, onAdDismissed, onAdError,onAdPaid, onAdClicked); CreateRewardedAd(adUnitId, onAdLoaded, onAdLoadFailed, onAdShowed, onAdDismissed, onAdError,onEarnRewarded, onAdClicked);
} }
} }
@ -31,7 +31,7 @@ namespace WZ
Action<string> onAdShowed, Action<string> onAdShowed,
Action<string,string,double> onAdDismissed, Action<string,string,double> onAdDismissed,
Action<string, int, string> onAdError, Action<string, int, string> onAdError,
Action<AdValue> onAdPaid, Action<bool> onEarnRewarded,
Action<string,string,double> onAdClicked) Action<string,string,double> onAdClicked)
{ {
if (_rewardedAds.ContainsKey(adUnitId)) if (_rewardedAds.ContainsKey(adUnitId))
@ -68,12 +68,12 @@ namespace WZ
adValue, adValue,
AdsType.Rewarded, AdsType.Rewarded,
adUnitId); adUnitId);
onAdPaid?.Invoke(adValue);
}; };
ad.OnAdImpressionRecorded += () => ad.OnAdImpressionRecorded += () =>
{ {
LoggerUtils.Debug("[Admob] rewarded ad recorded an impression."); LoggerUtils.Debug("[Admob] rewarded ad recorded an impression.");
onEarnRewarded?.Invoke(true);
}; };
ad.OnAdClicked += () => ad.OnAdClicked += () =>
@ -148,7 +148,7 @@ namespace WZ
public string GetHighestPayingAdUnit() public string GetHighestPayingAdUnit()
{ {
string highestPayingAdUnit = null; string highestPayingAdUnit = null;
double highestRevenue = 0; double highestRevenue = -1;
foreach (var kvp in _adRevenueCache) foreach (var kvp in _adRevenueCache)
{ {

View File

@ -69,12 +69,6 @@ namespace WZ
public void ShowRewardAd(string _adPos, Action<bool, double> _rewardCallback = null, Action _showFailedCallback = null) public void ShowRewardAd(string _adPos, Action<bool, double> _rewardCallback = null, Action _showFailedCallback = null)
{ {
LoggerUtils.Debug("ShowRewardAd _adPos:"+_adPos+" ready:"+IsRewardAdReady()); LoggerUtils.Debug("ShowRewardAd _adPos:"+_adPos+" ready:"+IsRewardAdReady());
AdsActionEvents.TrackAdPosition(AdsType.Rewarded, _adPos);
if (!IsRewardAdReady())
{
_showFailedCallback?.Invoke();
return;
}
otherAdsOnShow = true; otherAdsOnShow = true;
PlatformType result = GetBestPlatformType(false); PlatformType result = GetBestPlatformType(false);
BidPlatformManager.Instance.RecordBidSuccess(result, AdsType.Rewarded); BidPlatformManager.Instance.RecordBidSuccess(result, AdsType.Rewarded);
@ -120,13 +114,6 @@ namespace WZ
/// <param name="callback"></param> /// <param name="callback"></param>
public void ShowInterstitialAd(string _adPos, IvType _IvType = IvType.IV1, Action<double> _closeCallback = null) public void ShowInterstitialAd(string _adPos, IvType _IvType = IvType.IV1, Action<double> _closeCallback = null)
{ {
AdsActionEvents.TrackAdPosition(AdsType.Interstitial, _adPos);
if (!IsInterstitialReady())
{
_closeCallback?.Invoke(0);
_closeCallback = null;
return;
}
AdsSDKManager.Instance.otherAdsOnShow = true; AdsSDKManager.Instance.otherAdsOnShow = true;
PlatformType result = GetBestPlatformType(true); PlatformType result = GetBestPlatformType(true);
BidPlatformManager.Instance.RecordBidSuccess(result, AdsType.Interstitial); BidPlatformManager.Instance.RecordBidSuccess(result, AdsType.Interstitial);
@ -170,13 +157,10 @@ namespace WZ
public void ShowBanner() public void ShowBanner()
{ {
AdsActionEvents.TrackAdPosition(AdsType.Banner, "");
if (IsBannerAdReady()) AdmobAdsManager.Instance.DisplayBanner();
{ AdPlayCountManager.IncrementAdPlayCount(AdsType.Banner);
AdmobAdsManager.Instance.DisplayBanner(); AdjustTrackEvent.Instance.TrackEventName("Banner_Show", new Dictionary<string, object>());
AdPlayCountManager.IncrementAdPlayCount(AdsType.Banner);
AdjustTrackEvent.Instance.TrackEventName("Banner_Show", new Dictionary<string, object>());
}
} }
public void HideBanner() public void HideBanner()
@ -194,13 +178,10 @@ namespace WZ
public void ShowNativeAd(string _adPos, string adUnitId, NativeAdPosition position) public void ShowNativeAd(string _adPos, string adUnitId, NativeAdPosition position)
{ {
AdsActionEvents.TrackAdPosition(AdsType.Native, "");
if (IsNativeAdReady(adUnitId)) AdmobAdsManager.Instance.DisplayNative(_adPos, adUnitId, position);
{ AdjustTrackEvent.Instance.TrackEventName("NA_Show", new Dictionary<string, object>());
AdmobAdsManager.Instance.DisplayNative(_adPos, adUnitId, position); AdPlayCountManager.IncrementAdPlayCount(AdsType.Native);
AdjustTrackEvent.Instance.TrackEventName("NA_Show", new Dictionary<string, object>());
AdPlayCountManager.IncrementAdPlayCount(AdsType.Native);
}
} }
public void RemoveNativeAd(string adUnitId) public void RemoveNativeAd(string adUnitId)

View File

@ -82,7 +82,7 @@ namespace WZ
{ {
return; return;
} }
AdsActionEvents.TrackAdPosition(AdsType.Splash,"");
if (!AdsSDKManager.Instance.IsSplashAvailable()) if (!AdsSDKManager.Instance.IsSplashAvailable())
{ {
LoggerUtils.Debug(" [AppOpen] 热启动 广告是否准备好:"); LoggerUtils.Debug(" [AppOpen] 热启动 广告是否准备好:");
@ -97,6 +97,7 @@ namespace WZ
{ {
// 冷启动 // 冷启动
// 首次启动 // 首次启动
AdsActionEvents.TrackAdPosition(AdsType.Splash,"");
var isNew = PlayerPrefsUtils.GetPlayerPrefsInt("Firstcold_Splash_Switch", 0) == 0; var isNew = PlayerPrefsUtils.GetPlayerPrefsInt("Firstcold_Splash_Switch", 0) == 0;
// 首次冷启动开关 // 首次冷启动开关
var isFirstShow = GetSplashConfigItem().firstcold_splash_switch == 1; var isFirstShow = GetSplashConfigItem().firstcold_splash_switch == 1;

View File

@ -33,9 +33,10 @@ namespace WZ
BigoAdSdk.OnInitFinish += () => BigoAdSdk.OnInitFinish += () =>
{ {
LoggerUtils.Debug($"[Bigo] sdk init success"); LoggerUtils.Debug($"[Bigo] sdk init success");
_initialized = true;
LoadRewarded(); LoadRewarded();
LoadInterstitial(); LoadInterstitial();
_initialized = true;
}; };
var config = new BigoAdConfig.Builder() var config = new BigoAdConfig.Builder()
@ -268,8 +269,6 @@ namespace WZ
type.ToString(), type.ToString(),
revenue, type == AdsType.Rewarded ? _rvPos : "", revenue, type == AdsType.Rewarded ? _rvPos : "",
AdPlayCountManager.GetAdPlayCount(type)); AdPlayCountManager.GetAdPlayCount(type));
AdsActionEvents.TrackAdImpression(Platfrom,ClientName,placement,type,type == AdsType.Rewarded ? _rvPos : "",revenue);
} }
#endregion #endregion
} }

View File

@ -119,23 +119,5 @@ namespace WZ
ShuShuEvent.Instance.Track(eventName, dic); ShuShuEvent.Instance.Track(eventName, dic);
LoggerUtils.Debug("[actionevent] TrackAdPosition"+JsonMapper.ToJson(dic)); LoggerUtils.Debug("[actionevent] TrackAdPosition"+JsonMapper.ToJson(dic));
} }
public static void TrackAdImpression(PlatformType adPlatform, string adSource, string adUnitName, AdsType adFormat, string posotion, double value)
{
var eventName = "ad_impression";
var dic = new Dictionary<string, object> {
{ "ad_platform", adPlatform.ToString()},
{ "ad_source", adSource},
{ "ad_unit_name", adUnitName},
{ "ad_format", adFormat.ToString()},
{ "position", posotion},
{ "value", value},
{ "currency","USD"},
{ "number",AdPlayCountManager.GetAdPlayCount(adFormat)}
};
FireBaseAnalyticsManager.Instance.LogEvent(eventName, dic);
ShuShuEvent.Instance.Track(eventName, dic);
LoggerUtils.Debug("[actionevent] TrackAdImpression"+JsonMapper.ToJson(dic));
}
} }
} }

View File

@ -193,13 +193,6 @@ namespace WZ
type == AdsType.Rewarded ? _rewardAdRevenue : _interstitiaAdRevenue, type == AdsType.Rewarded ? _rewardAdRevenue : _interstitiaAdRevenue,
type == AdsType.Rewarded ? _rvPos : "", type == AdsType.Rewarded ? _rvPos : "",
AdPlayCountManager.GetAdPlayCount(type)); AdPlayCountManager.GetAdPlayCount(type));
AdsActionEvents.TrackAdImpression(Platfrom,
ClientName,
type == AdsType.Rewarded ? _rewardAdUnitId : _interstitialAdUnitId,
type,
type == AdsType.Rewarded ? _rvPos : "",
type == AdsType.Rewarded ? _rewardAdRevenue : _interstitiaAdRevenue);
} }
#endregion #endregion

View File

@ -27,6 +27,7 @@ namespace WZ
private Action<double> _ivCloseCallback = null; private Action<double> _ivCloseCallback = null;
private Action _rvShowFailedCallback = null; private Action _rvShowFailedCallback = null;
public bool _initialized { get; private set; } = false; public bool _initialized { get; private set; } = false;
private bool _receivedReward = false;
public void Initialize() public void Initialize()
{ {
@ -69,6 +70,7 @@ namespace WZ
MaxSdkCallbacks.Rewarded.OnAdClickedEvent += OnRewardedAdClickedEvent; MaxSdkCallbacks.Rewarded.OnAdClickedEvent += OnRewardedAdClickedEvent;
MaxSdkCallbacks.Rewarded.OnAdHiddenEvent += OnRewardedAdHiddenEvent; MaxSdkCallbacks.Rewarded.OnAdHiddenEvent += OnRewardedAdHiddenEvent;
MaxSdkCallbacks.Rewarded.OnAdRevenuePaidEvent += OnRewardedRevenue; MaxSdkCallbacks.Rewarded.OnAdRevenuePaidEvent += OnRewardedRevenue;
MaxSdkCallbacks.Rewarded.OnAdReceivedRewardEvent += OnRewardedAdReceivedRewardEvent;
} }
public void LoadRewarded() public void LoadRewarded()
@ -118,13 +120,15 @@ namespace WZ
AdsActionEvents.TrackAdLoaded(Platfrom, adInfo.NetworkName, adInfo.AdUnitIdentifier, AdsType.Rewarded, Time.realtimeSinceStartup - _rvStartLoadTime); AdsActionEvents.TrackAdLoaded(Platfrom, adInfo.NetworkName, adInfo.AdUnitIdentifier, AdsType.Rewarded, Time.realtimeSinceStartup - _rvStartLoadTime);
} }
private void OnRewardedAdLoadFailedEvent(string adunit, MaxSdkBase.ErrorInfo errorInfo) private void OnRewardedAdLoadFailedEvent(string adunit, MaxSdkBase.ErrorInfo errorInfo)
{ {
LoggerUtils.Debug("[Max] OnRewardedAdLoadFailedEvent errorInfo" + errorInfo.Message); LoggerUtils.Debug("[Max] OnRewardedAdLoadFailedEvent errorInfo" + errorInfo.Message);
_rewardRetryAttempt++; _rewardRetryAttempt++;
double retryDelay = Math.Pow(2, Math.Min(6, _rewardRetryAttempt)); double retryDelay = Math.Pow(2, Math.Min(6, _rewardRetryAttempt));
TimerUtils.Instance.DelayExecute((float)retryDelay, LoadRewarded); TimerUtils.Instance.DelayExecute((float)retryDelay, LoadRewarded);
AdsActionEvents.TrackAdFailToLoad(Platfrom, "","",AdsType.Rewarded,Time.realtimeSinceStartup - _rvStartLoadTime,errorInfo.Message); AdsActionEvents.TrackAdFailToLoad(Platfrom, "", "", AdsType.Rewarded, Time.realtimeSinceStartup - _rvStartLoadTime, errorInfo.Message);
} }
@ -151,11 +155,22 @@ namespace WZ
private void OnRewardedAdHiddenEvent(string adUnitId, MaxSdkBase.AdInfo adInfo) private void OnRewardedAdHiddenEvent(string adUnitId, MaxSdkBase.AdInfo adInfo)
{ {
_rvCloseCallback?.Invoke(true,adInfo.Revenue); _rvCloseCallback?.Invoke(_receivedReward,adInfo.Revenue);
_rvCloseCallback = null; _rvCloseCallback = null;
_receivedReward = false;
LoadRewarded(); LoadRewarded();
LoggerUtils.Debug("[Max] OnRewardedAdHiddenEvent"); LoggerUtils.Debug("[Max] OnRewardedAdHiddenEvent "+_receivedReward);
AdsActionEvents.TrackAdClosed(Platfrom,adInfo.NetworkName,adInfo.AdUnitIdentifier,AdsType.Rewarded,_rvPos,adInfo.Revenue); AdsActionEvents.TrackAdClosed(Platfrom,adInfo.NetworkName,adInfo.AdUnitIdentifier,AdsType.Rewarded,_rvPos,adInfo.Revenue);
}
private void OnRewardedAdReceivedRewardEvent(string adUnitId, MaxSdk.Reward reward, MaxSdkBase.AdInfo arg3)
{
LoggerUtils.Debug("[Max] OnRewardedAdReceivedRewardEvent network: " + arg3.NetworkName + " revenue: " + arg3.Revenue + " NetworkPlacement: " + arg3.NetworkPlacement + " AdUnitIdentifier: " + arg3.AdUnitIdentifier + " Placement: " + arg3.Placement);
_receivedReward = true;
}
private void RewardCallback()
{
} }
@ -324,13 +339,6 @@ namespace WZ
adInfo.Revenue, adInfo.Revenue,
type == AdsType.Rewarded ? _rvPos : "", type == AdsType.Rewarded ? _rvPos : "",
AdPlayCountManager.GetAdPlayCount(type)); AdPlayCountManager.GetAdPlayCount(type));
AdsActionEvents.TrackAdImpression(Platfrom,
adInfo.NetworkName,
adInfo.AdUnitIdentifier,
type,
type == AdsType.Rewarded ? _rvPos : "",
adInfo.Revenue);
} }
#endregion #endregion
} }

View File

@ -23,18 +23,20 @@ namespace WZ
private Action<double> _ivCloseCallback = null; private Action<double> _ivCloseCallback = null;
private Action _rvShowFailedCallback = null; private Action _rvShowFailedCallback = null;
public bool _initialized { get; private set; } = false; public bool _initialized { get; private set; } = false;
private bool _receivedReward = false;
public void Initialize() public void Initialize()
{ {
LoggerUtils.Debug("[Tpn] 初始化 Tpn 广告 SDK appid:" + _topon_app_id + " appkey:" + _topon_app_key + " ivId:" + _topon_interstitial_units + " rvId:" + _topon_rewarded_units); LoggerUtils.Debug("[Tpn] 初始化 Tpn 广告 SDK appid:" + _topon_app_id + " appkey:" + _topon_app_key + " ivId:" + _topon_interstitial_units + " rvId:" + _topon_rewarded_units);
if(_initialized )return; if (_initialized) return;
if (!string.IsNullOrEmpty(_topon_app_id) && !string.IsNullOrEmpty(_topon_app_key)) if (!string.IsNullOrEmpty(_topon_app_id) && !string.IsNullOrEmpty(_topon_app_key))
{ {
ATSDKAPI.initSDK(_topon_app_id, _topon_app_key); ATSDKAPI.initSDK(_topon_app_id, _topon_app_key);
_initialized = true;
ATSDKAPI.setLogDebug(false); ATSDKAPI.setLogDebug(false);
InitRewarded(); InitRewarded();
InitInterstitial(); InitInterstitial();
_initialized = true;
} }
} }
@ -55,6 +57,7 @@ namespace WZ
ATRewardedAutoVideo.Instance.client.onAdVideoStartEvent += OnAdVideoStartEvent; ATRewardedAutoVideo.Instance.client.onAdVideoStartEvent += OnAdVideoStartEvent;
ATRewardedAutoVideo.Instance.client.onAdVideoFailureEvent += OnAdVideoFailureEvent; ATRewardedAutoVideo.Instance.client.onAdVideoFailureEvent += OnAdVideoFailureEvent;
ATRewardedAutoVideo.Instance.client.onAdClickEvent += OnAdVideoClickedEvent; ATRewardedAutoVideo.Instance.client.onAdClickEvent += OnAdVideoClickedEvent;
ATRewardedAutoVideo.Instance.client.onRewardEvent += OnAdRewardEvent;
ATRewardedAutoVideo.Instance.addAutoLoadAdPlacementID(new string[] { _topon_rewarded_units }); ATRewardedAutoVideo.Instance.addAutoLoadAdPlacementID(new string[] { _topon_rewarded_units });
AdsActionEvents.TrackAdStartLoad(Platfrom, "", "", AdsType.Rewarded); AdsActionEvents.TrackAdStartLoad(Platfrom, "", "", AdsType.Rewarded);
@ -183,7 +186,11 @@ namespace WZ
}, ""); }, "");
} }
private void OnAdRewardEvent(object sender, ATAdEventArgs erg)
{
LoggerUtils.Debug("[Tpn] 广告奖励");
_receivedReward = true;
}
private void OnAdVideoClosedEvent(object sender, ATAdEventArgs erg) private void OnAdVideoClosedEvent(object sender, ATAdEventArgs erg)
{ {
LoggerUtils.Debug("[Tpn] 广告关闭了:" + JsonMapper.ToJson(erg.callbackInfo.toDictionary())); LoggerUtils.Debug("[Tpn] 广告关闭了:" + JsonMapper.ToJson(erg.callbackInfo.toDictionary()));
@ -199,8 +206,9 @@ namespace WZ
{ {
if (erg.placementId.Equals(_topon_rewarded_units)) if (erg.placementId.Equals(_topon_rewarded_units))
{ {
_rvCloseCallback?.Invoke(true,erg.callbackInfo.publisher_revenue); _rvCloseCallback?.Invoke(_receivedReward, erg.callbackInfo.publisher_revenue);
_rvCloseCallback = null; _rvCloseCallback = null;
_receivedReward = false;
} }
else if (erg.placementId.Equals(_topon_interstitial_units)) else if (erg.placementId.Equals(_topon_interstitial_units))
{ {
@ -304,13 +312,6 @@ namespace WZ
erg.callbackInfo.publisher_revenue, erg.callbackInfo.publisher_revenue,
erg.placementId.Equals(_topon_rewarded_units) ? _rvPos : "", erg.placementId.Equals(_topon_rewarded_units) ? _rvPos : "",
AdPlayCountManager.GetAdPlayCount(erg.placementId.Equals(_topon_rewarded_units) ? AdsType.Rewarded : AdsType.Interstitial)); AdPlayCountManager.GetAdPlayCount(erg.placementId.Equals(_topon_rewarded_units) ? AdsType.Rewarded : AdsType.Interstitial));
AdsActionEvents.TrackAdImpression(Platfrom,
ClientName + "_" + erg.callbackInfo.network_firm_id,
erg.callbackInfo.adunit_id,
erg.placementId.Equals(_topon_rewarded_units) ? AdsType.Rewarded : AdsType.Interstitial,
erg.placementId.Equals(_topon_rewarded_units) ? _rvPos : "",
erg.callbackInfo.publisher_revenue);
} }
#endregion #endregion
} }

View File

@ -54,11 +54,13 @@ public class AppSDKManager : D_MonoSingleton<AppSDKManager>
/// <param name="callback"></param> /// <param name="callback"></param>
public void ShowRewardAd(string position, Action<bool,double> callback = null) public void ShowRewardAd(string position, Action<bool,double> callback = null)
{ {
AdsActionEvents.TrackAdPosition(AdsType.Rewarded, position);
bool isRewardAdReady = AdsSDKManager.Instance.IsRewardAdReady(); bool isRewardAdReady = AdsSDKManager.Instance.IsRewardAdReady();
if (isRewardAdReady) if (isRewardAdReady)
{ {
AdsSDKManager.Instance.ShowRewardAd(position, (isReward, revenue) => AdsSDKManager.Instance.ShowRewardAd(position, (isReward, revenue) =>
{ {
AdsSplashManager.Instance.backgroundTime = Time.realtimeSinceStartup;
if (isReward) if (isReward)
{ {
AdsSDKManager.Instance.ClearIvRules(); AdsSDKManager.Instance.ClearIvRules();
@ -92,6 +94,7 @@ public class AppSDKManager : D_MonoSingleton<AppSDKManager>
/// <param name="callback"></param> /// <param name="callback"></param>
public void ShowInterstitial(string position, IvType ivadType = IvType.IV1, Action<double> callback = null) public void ShowInterstitial(string position, IvType ivadType = IvType.IV1, Action<double> callback = null)
{ {
AdsActionEvents.TrackAdPosition(AdsType.Interstitial, position);
//插屏展示逻辑 //插屏展示逻辑
bool ivRulesShow = AdsSDKManager.Instance.IvRulesShow(ivadType); bool ivRulesShow = AdsSDKManager.Instance.IvRulesShow(ivadType);
if (ivRulesShow) if (ivRulesShow)
@ -105,6 +108,7 @@ public class AppSDKManager : D_MonoSingleton<AppSDKManager>
//展示完一个插屏之后调用 //展示完一个插屏之后调用
IvRulesConst.OverLevels[ivadType.ToString()] = 0; IvRulesConst.OverLevels[ivadType.ToString()] = 0;
IvRulesConst.Intervals[ivadType.ToString()] = TimeUtils.GetLocalTimestamp(); IvRulesConst.Intervals[ivadType.ToString()] = TimeUtils.GetLocalTimestamp();
AdsSplashManager.Instance.backgroundTime = Time.realtimeSinceStartup;
callback?.Invoke(revenue); callback?.Invoke(revenue);
}); });
} }
@ -121,7 +125,12 @@ public class AppSDKManager : D_MonoSingleton<AppSDKManager>
public void ShowBanner() public void ShowBanner()
{ {
AdsSDKManager.Instance.ShowBanner(); AdsActionEvents.TrackAdPosition(AdsType.Banner, "");
if (AdsSDKManager.Instance.IsBannerAdReady())
{
AdsSDKManager.Instance.ShowBanner();
}
} }
public void HideBanner() public void HideBanner()
@ -137,6 +146,7 @@ public class AppSDKManager : D_MonoSingleton<AppSDKManager>
public void ShowFullNative(RectTransform rectTransform, Camera pCom = null, string position = "") public void ShowFullNative(RectTransform rectTransform, Camera pCom = null, string position = "")
{ {
AdsActionEvents.TrackAdPosition(AdsType.Native, position);
if (!IsNativeFullReady()) if (!IsNativeFullReady())
{ {
return; return;
@ -166,6 +176,7 @@ public class AppSDKManager : D_MonoSingleton<AppSDKManager>
public void ShowNative(RectTransform rectTransform, Camera pCom = null, string position = "") public void ShowNative(RectTransform rectTransform, Camera pCom = null, string position = "")
{ {
AdsActionEvents.TrackAdPosition(AdsType.Native, position);
if (!IsNativeReady()) if (!IsNativeReady())
{ {
return; return;
@ -195,6 +206,7 @@ public class AppSDKManager : D_MonoSingleton<AppSDKManager>
public void ShowSmallNative(RectTransform rectTransform, Camera pCom = null, string position = "") public void ShowSmallNative(RectTransform rectTransform, Camera pCom = null, string position = "")
{ {
AdsActionEvents.TrackAdPosition(AdsType.Native, position);
if (!IsSmallNativeReady()) if (!IsSmallNativeReady())
{ {
return; return;
@ -224,6 +236,7 @@ public class AppSDKManager : D_MonoSingleton<AppSDKManager>
public void ShowMinddleNative(RectTransform rectTransform, Camera pCom = null, string position = "") public void ShowMinddleNative(RectTransform rectTransform, Camera pCom = null, string position = "")
{ {
AdsActionEvents.TrackAdPosition(AdsType.Native, position);
if (!IsSmallNativeReady()) if (!IsSmallNativeReady())
{ {
return; return;