fix: 广告 SDK 优化广告重试时间 从最高间隔 8 秒 -> 64 秒, 减少无网时高频请求

--story=1020971 --user=yufei.hu 【中台】【ADS】优化 IV 和 RV 广告加载失败后的重试等待时间 https://www.tapd.cn/33527076/s/1157502

Signed-off-by: huyufei <yufei.hu@castbox.fm>
main
胡宇飞 2024-07-16 18:46:16 +08:00
parent 19a46fff1e
commit 72bf076537
1 changed files with 13 additions and 4 deletions

View File

@ -22,6 +22,8 @@ namespace Guru
public bool IsInitialized => MaxSdk.IsInitialized() || _isServiceStarted; public bool IsInitialized => MaxSdk.IsInitialized() || _isServiceStarted;
protected bool IsNetworkEnabled => Application.internetReachability != NetworkReachability.NotReachable; protected bool IsNetworkEnabled => Application.internetReachability != NetworkReachability.NotReachable;
private const int MAX_ADS_RELOAD_INTERVAL = 6; // 广告加载最高时间为 2 的 6 次方 = 64秒
private bool _isServiceStarted; private bool _isServiceStarted;
protected Action _onSdkInitReady; protected Action _onSdkInitReady;
@ -149,6 +151,13 @@ namespace Guru
set => Model.BuyNoAds = value; set => Model.BuyNoAds = value;
} }
private float GetRetryDelaySeconds(int retryCount)
{
// 最低 2^retryCount 秒
// 最高 2^6 = 64 秒
return (float)Math.Pow(2, Math.Min(MAX_ADS_RELOAD_INTERVAL, retryCount));
}
#region Lifecycele #region Lifecycele
public void OnAppPaused(bool paused) public void OnAppPaused(bool paused)
@ -511,8 +520,8 @@ namespace Guru
this.LogError( this.LogError(
$"OnInterstitialFailedEvent AdLoadFailureInfo:{errorInfo.AdLoadFailureInfo}, Message: {errorInfo.Message}"); $"OnInterstitialFailedEvent AdLoadFailureInfo:{errorInfo.AdLoadFailureInfo}, Message: {errorInfo.Message}");
_interstitialRetryAttempt++; _interstitialRetryAttempt++;
double retryDelay = Math.Pow(2, Math.Min(3, _interstitialRetryAttempt)); float retryDelay = GetRetryDelaySeconds(_interstitialRetryAttempt);
DelayCall((float)retryDelay, RequestInterstitialAD); DelayCall(retryDelay, RequestInterstitialAD);
// Analytics.ADIadsFailed(adUnitId, (int)errorInfo.Code, GetAdsLoadDuration(ref _iadsLoadStartTime), _iadsCategory); // Analytics.ADIadsFailed(adUnitId, (int)errorInfo.Code, GetAdsLoadDuration(ref _iadsLoadStartTime), _iadsCategory);
Analytics.ADIadsFailed(AdParams.Build(adUnitId, Analytics.ADIadsFailed(AdParams.Build(adUnitId,
duration: GetAdsLoadDuration(ref _iadsLoadStartTime), category: _iadsCategory, duration: GetAdsLoadDuration(ref _iadsLoadStartTime), category: _iadsCategory,
@ -669,8 +678,8 @@ namespace Guru
errorCode: (int)errorInfo.Code, errorCode: (int)errorInfo.Code,
waterfallName: errorInfo?.WaterfallInfo?.Name ?? "")); waterfallName: errorInfo?.WaterfallInfo?.Name ?? ""));
_rewardRetryAttempt++; _rewardRetryAttempt++;
double retryDelay = Math.Pow(2, Math.Min(3, _rewardRetryAttempt)); float retryDelay = GetRetryDelaySeconds(_rewardRetryAttempt);
DelayCall((float)retryDelay, RequestRewardedAD); DelayCall(retryDelay, RequestRewardedAD);
OnRewardFailed?.Invoke(); OnRewardFailed?.Invoke();
} }