Skip to content

fix: 홈 네이티브 광고가 배틀 섹션 위로 노출되던 문제 수정 - #42

Open
rrheon wants to merge 1 commit into
developfrom
fix/home-ad-order
Open

fix: 홈 네이티브 광고가 배틀 섹션 위로 노출되던 문제 수정#42
rrheon wants to merge 1 commit into
developfrom
fix/home-ad-order

Conversation

@rrheon

@rrheon rrheon commented Aug 11, 2026

Copy link
Copy Markdown

요약

홈 상단에 네이티브 광고가 "지금 뜨는 배틀" 위로 떠오르던 노출 순서 버그 수정.

🐛 버그 수정

네이티브 광고 노출 위치 오류 (광고가 배틀 섹션 위로 올라가는 현상)

원인: AdFitNativeAdView가 배틀 섹션 조건문 밖에 위치하여, 화면 렌더링 시 조건과 무관하게 노출되면서 최상단으로 올라감.

  • 재현 1: onAppear 진입 전 첫 프레임 (스켈레톤 조건이 isLoading만 확인해 광고 자리만 먼저 노출)

  • 재현 2: 홈 API 실패 또는 hotBattles 응답이 빈 배열일 때 (배틀 섹션은 접히고 광고만 남음)

해결:

  • 광고 뷰를 !hotBattles.isEmpty 분기 안쪽(지금 뜨는 배틀 바로 아래)으로 이동.

  • hotBattles 섹션이 비어있을 경우, 광고가 "Best 배틀" 아래로 노출되도록 처리.

  • 두 위치에 동시에 렌더링되지 않도록 AdFit의 '1화면 1광고 단위' 제약을 준수

테스트 플랜

  • 정상 응답 → 지금 뜨는 배틀 → 광고 → Best 배틀 순서
  • 진입 직후 첫 프레임에 광고가 먼저 노출되지 않음
  • hotBattles 가 비면 광고가 Best 배틀 아래로 이동
  • 홈 API 실패 후 탭 재진입 시 재요청 발생

네이티브 광고 뷰가 배틀 섹션 조건 밖에 무조건 그려지고 있었다.
그래서 ① onAppear 도착 전 첫 프레임(스켈레톤 조건이 isLoading 만 봐서
미발동)과 ② 홈 API 실패·hotBattles 빈 응답 때 섹션만 접히면서
광고가 화면 최상단으로 올라왔다.

- 광고를 "지금 뜨는 배틀" 아래로 넣고, 그 섹션이 비면 "Best 배틀"
  아래로 폴백한다. if/else 라 AdFit 의 "한 화면에 같은 단위 1개" 제약은
  그대로 지킨다.
- 스켈레톤 조건에 !hasLoadedHome 을 더해 첫 프레임을 덮는다.
- hasLoadedHome 을 성공했을 때만 세운다. 실패까지 완료로 굳히면
  재진입해도 영영 재요청하지 않아 빈 홈에 갇힌다.

Stage 빌드·시뮬로 히어로 → 지금뜨는배틀 → 광고 → Best배틀 순서 육안 확인.
@github-actions

Copy link
Copy Markdown
Contributor

제출된 PR의 변경 사항들은 설명된 버그를 효과적으로 수정하며, 프로젝트의 아키텍처, SwiftUI 컨벤션 및 코드 품질 가이드라인을 잘 준수합니다. 특히 hasLoadedHome 플래그의 조건부 설정과 스켈레톤 로직의 보강, 그리고 광고 섹션의 위치 조정은 의도한 대로 동작하며 예상치 못한 문제를 일으키지 않을 것으로 보입니다. 전반적으로 코드 품질이 높고 명확하여 추가적인 피드백은 없습니다.

@Roy-wonji Roy-wonji left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

리뷰 확인 해주세요

state.hasLoadedHome = true
switch result {
case let .success(bundle):
// 실패까지 로드 완료로 굳히면 재진입해도 영영 재요청하지 않아

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

이런 필요 없는 주석은 제거 해주세요!

)
}

// 광고는 반드시 배틀 섹션 아래에만 노출한다 — 섹션 밖에 홀로 두면

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

이거 주석을 제거 해야 할거 같습니다

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants