이 글의 성격은 무엇인가요?
질문 / 문제 해결
내용을 설명해주세요
저희 게임 사용자 로그를 분석해보니 3월 28일부터 배너 광고 관련해서 오류가 급증한 것으로 집계되었습니다.
구체적으로 onAdFailedToRender 콜백에서 발생했고, payload를 분석했을 때
payload.error.code가 1011로 나오고 있고,
payload.error.message는 null로 출력되고 있어서 어떤 내용인지 문의드립니다.
appName (선택)
cozy-tiles
이미지 첨부
@teo 님
우선 1011 오류는 네트워크 에러가 발생할 때 발생하는 오류입니다.
error_count에 비해 affected_users 지표가 상당히 낮은데,
혹시 내부 테스트는 아닌지요? 아니면 광고 error 발생 시 refresh 하는 로직이 있는지 문의드립니다.
@seonjeong 넵, 현재 배너 광고 error 발생시 300ms 간격으로 최대 10회 retry 하는 로직을 사용중입니다.
TossAds SDK는 **배너 광고를 10초 주기로 자동 refresh**해주는 것으로 알고 있는데,
1011 네트워크 에러가 지속적으로 발생하면 저희가 추가해둔 retry 로직과 만나서 affected_users에 비해 error_count가 많이 누적된 것으로 보입니다.
[초기 렌더링 성공] → onAdRendered → 배너 노출
↓ (10초 후)
[SDK auto-refresh 실패] → onAdFailedToRender → retryRenderBannerAd (10회 retry)
↓ (10초 후)
[SDK auto-refresh 실패] → onAdFailedToRender → retryRenderBannerAd (10회 retry)
...반복
또한, onAdFailedToRender 혹은 onNoFill 발생 시 retry 하기 전에 직전에 생성된 실패 슬롯을 destroy하지 않은 채 새 슬롯을 생성하게 되어 누적된 좀비 슬롯들이 각각 SDK의 auto-refresh 트리거를 받아 독립적으로 에러 콜백을 발화, 에러가 추가 증폭한 것으로 보입니다.
attach → 슬롯A 생성 → 실패 → [슬롯A 삭제 없이] attach → 슬롯B 생성 → 실패 → ...
↑ 슬롯A 좀비 상태로 잔존
==================
추가로, TossAdsBannerSlotErrorPayload 인터페이스에 몇번째 실패인지도 같이 전달해주실 수 있으실까요?
아래와 같이 refreshCount 필드를 추가하면 배너 광고 렌더에 반복적으로 실패하는 경우 배너 숨김 처리나 대체 컨텐츠 노출 등의 방안을 도입하기에 수월할 것 같습니다 
interface TossAdsBannerSlotErrorPayload {
slotId: string;
adGroupId: string;
adMetadata: {};
refreshCount?: number; // 0 or undefined: 초기 렌더 실패 / 1+: N번째 auto-refresh 실패
error: {
code: number;
message: string;
domain?: string;
};
}
@teo 님 답변이 늦어 죄송합니다
실패 시 숨김 처리나 대체 컨텐츠 노출을 희망하신다면 error가 return될 때 처리부탁드립니다
refreshCount 를 추가하는 건 관리하는데 어려울 것으로 판단되어요 
1개의 좋아요