Skip to content

[Chore] - v2.4.3 광고 정리 및 코스 발견 최적화#290

Merged
thingineeer merged 5 commits intoRunnect:developfrom
thingineeer:chore/v2.4.3-ad-cleanup
Feb 19, 2026
Merged

[Chore] - v2.4.3 광고 정리 및 코스 발견 최적화#290
thingineeer merged 5 commits intoRunnect:developfrom
thingineeer:chore/v2.4.3-ad-cleanup

Conversation

@thingineeer
Copy link
Copy Markdown
Collaborator

@thingineeer thingineeer commented Feb 19, 2026

🌱 작업한 내용

  • 앱 오프닝 광고 제거 및 배너 캐러셀 네이티브 전환
  • 코스 발견 API 호출 최적화 및 UX 개선
  • 배너 캐러셀 광고 3개 교차 배치 및 프리페칭 도입
  • 네이티브 광고 인덱스 매핑 버그 수정 (코스 중복 렌더링 해결)
  • 코스 발견 개발자 모드 추가

🌱 PR Point

광고 단위 변경

광고 유형 Before After
앱 오프닝 (인터스티셜) AppOpenAdManager 삭제
배너 캐러셀 GADBannerView x2 GADNativeAd x3 (네이티브 전환)
피드 네이티브 GADNativeAd x5 유지 (인덱스 매핑 버그 수정)

삭제된 파일 / 설정

  • AppOpenAdManager.swift 삭제 (101줄)
  • Config.adMobBannerAdUnitId 제거
  • Config.adMobAppOpenAdUnitId 제거
  • SceneDelegate에서 앱 오프닝 광고 preload/show 호출 제거

코스 발견 최적화

  • 페이지네이션 가드 개선: courseList.count >= pageNo * serverResponseNumberisEnd 플래그 기반
  • 요청 세대 카운터(requestGeneration) 도입 — cancel된 콜백의 상태 오염 방지
  • 정렬 버튼 디바운싱 (0.3초) — 연속 탭 시 불필요한 API 호출 방지
  • 스크랩 낙관적 업데이트 — 네트워크 응답 전 즉시 UI 반영, 실패 시 롤백
  • insertNewCourses id 기반 중복 제거 — offset 기반 페이지네이션의 데이터 중복 방지

피드 네이티브 광고 버그 수정

  • courseIndex(for:) 에서 nativeAds.count 상한 누락으로 광고 5개 이후 아이템에서 8개마다 동일 코스가 중복 렌더링되는 버그 수정
  • collectionViewItem(for:)에는 min(..., nativeAds.count) 존재했으나 역함수에만 누락된 상태
// Before (버그)
let adsBefore = item / adInterval

// After
let adsBefore = min(item / adInterval, nativeAds.count)

코드 변경량

  • 15 files changed, 557 insertions(+), 312 deletions(-)

📮 관련 이슈

  • close #

- AppOpenAdManager 전체 삭제 및 AppDelegate/SceneDelegate 정리
- 미사용 광고 단위 제거 (배너, 앱 오프닝, splashNative)
- 배너 캐러셀 GADBannerView → GADNativeAdView 전환
- 유지 광고: 코스발견 피드 네이티브, 코스발견 배너 캐러셀(네이티브)
@thingineeer thingineeer added Chore 그 외의 잡일/버전 코드 수정, 패키지 구조 변경, 파일 이동, 파일 이름 변경, 레이아웃 조정 등 명진😼 labels Feb 19, 2026
@thingineeer thingineeer self-assigned this Feb 19, 2026
- CourseDetailVC viewWillAppear 중복 API 호출 제거 (hasLoadedDetail 플래그)
- 스크랩 낙관적 업데이트 적용 및 실패 시 롤백 처리
- 코스 삭제 시 courseId/publicCourseId 불일치 버그 수정
- 로컬 삭제로 전환하여 전체 피드 재요청 방지
- CourseSearchVC viewWillAppear 중복 검색 제거
- MarathonMapCollectionViewCell 중복 API 호출 방지 및 LoadingIndicator 제거
- 정렬 변경 0.3초 디바운싱 및 중복 요청 취소 처리
- 광고 배너 AD/광고 텍스트 겹침 수정 및 이미지 간격 4초→3초 조정
- 캐러셀 순서 변경: [광고, 배너, 광고, 배너, 광고, 배너] 6페이지
- 네이티브 광고 2개 → 3개로 확장 (adLoader3 추가)
- 광고 프리페칭: viewDidLoad에서 사전 로드하여 즉시 표시
- 프리페치 성공 시 shimmer 건너뛰고 캐러셀 바로 노출
- 프리페치 미완료 시 기존 shimmer + 3초 타임아웃 폴백 유지
@thingineeer thingineeer added the Feat 새로운 기능 구현 label Feb 19, 2026
@thingineeer thingineeer changed the title [Chore] - 앱 오프닝 광고 제거 및 배너 캐러셀 네이티브 전환 [Feat] - 코스 발견 광고 개편 및 API 호출 최적화 Feb 19, 2026
- 코스 발견 화면 개발자 모드 추가 (네비바 롱프레스 활성화, 코스 롱프레스 삭제)
- courseIndex(for:) 광고 수 상한 누락으로 인한 코스 중복 렌더링 버그 수정
- 페이지네이션 중복 제거 및 요청 세대 카운터 도입
@thingineeer thingineeer changed the title [Feat] - 코스 발견 광고 개편 및 API 호출 최적화 [Feat] - 코스 발견 개발자 모드 추가 Feb 19, 2026
@thingineeer thingineeer changed the title [Feat] - 코스 발견 개발자 모드 추가 [Chore] - v2.4.3 광고 정리 및 코스 발견 최적화 Feb 19, 2026
- Firebase Remote Config 기반 선택적 업데이트 체크 로직 구현
- 버전당 1회만 알럿 표시, "다음에" 시 같은 버전은 재표시 안 함
- UserDefaults에 optionalUpdateDismissedVersion 키 추가
- CFBundleShortVersionString 2.4.2 → 2.4.3
@thingineeer thingineeer merged commit 9f09e34 into Runnect:develop Feb 19, 2026
1 check passed
@thingineeer thingineeer deleted the chore/v2.4.3-ad-cleanup branch February 19, 2026 15:38
@thingineeer thingineeer restored the chore/v2.4.3-ad-cleanup branch February 19, 2026 15:54
@thingineeer thingineeer deleted the chore/v2.4.3-ad-cleanup branch February 19, 2026 15:56
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Chore 그 외의 잡일/버전 코드 수정, 패키지 구조 변경, 파일 이동, 파일 이름 변경, 레이아웃 조정 등 Feat 새로운 기능 구현 명진😼

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant