광고 로딩 실패 시 재시도 로직 유의점
1. 미리 로딩하기
→ 로딩으로 인한 지연 시간을 최소화 하기 위해 미리 로딩한다.
2. 무한 반복 시도는 피해야 한다
→ 네트워크 및 자원을 절약하기 위해서 최대 재시도 횟수를 도입하는 것이 권장됨.
3. 너무 자주 재시도하지 않기
→ 인벤토리에 광고가 없어서 광고가 로드되지 않는 경우, 단 몇 초 차이로 광고가 로드 되는 경우는 매우 드물다.
점진적 대기 시간 증가(Exponential Backoff)란?
재시도 간격을 1초, 2초, 4초 등으로 점점 늘려가는 방법을 말한다.
점진적 대기 시간 증가(Exponential Backoff)의 장점과 단점
장점 : 광고가 없는 경우 자원 절약
→ 새벽 3시와 같이 광고가 없는 경우에 너무 자주 재시도 하지 않음으로써 네트워크 및 자원을 절약한다.
단점 : 너무 오래 걸릴 수 있음
→ 금방 다시 광고를 받을 수 있는 경우에도 시간이 오래 걸림
점진적 대기 시간 증가(Exponential Backoff) 적용 방법
void loadRewardedAd() {
RewardedAd.load(
adUnitId: 'your_ad_unit_id',
request: const AdRequest(),
rewardedAdLoadCallback: RewardedAdLoadCallback(
onAdLoaded: (ad) {
_rewardedAd = ad;
retryAttempt = 0; // 성공했으니 재시도 횟수 초기화
},
onAdFailedToLoad: (error) {
retryAttempt++;
// 2의 제곱 시간만큼 지연 (최대 32초)
final delay =
Duration(seconds: (2 << (retryAttempt - 1)).clamp(1, 32));
if (kDebugMode) {
print('Ad load failed. Retrying in ${delay.inSeconds} seconds...');
}
Future.delayed(delay, loadRewardedAd);
},
),
);
}
'Flutter' 카테고리의 다른 글
app-ads.txt 파일 호스팅하기 (feat. firebase) (0) | 2025.05.31 |
---|---|
Windows에서 Flutter에 Firebase 추가하기 (0) | 2025.05.30 |
Flutter 앱 서명하는 법 (1) | 2025.04.16 |
setState() or markNeedsBuild() called during build 에러 원인과 해결 (1) | 2025.03.23 |
Consider canceling any active work during "dispose" or using the "mounted" getter to determine if the State is still active. 에러 원인과 해결 방법 (0) | 2025.03.20 |