From 4e18205cca77a760681832230ff6af6c5a99eae6 Mon Sep 17 00:00:00 2001 From: klaus Date: Fri, 24 Apr 2026 19:43:36 +0900 Subject: [PATCH] =?UTF-8?q?docs(plan):=20=EC=BB=A4=EB=AE=A4=EB=8B=88?= =?UTF-8?q?=ED=8B=B0=20=EC=8B=9C=EB=A6=AC=EC=A6=88=20=EC=95=8C=EB=A6=BC=20?= =?UTF-8?q?=EB=B0=B0=EB=84=88=20=EC=9E=91=EC=97=85=20=EA=B8=B0=EB=A1=9D?= =?UTF-8?q?=EC=9D=84=20=EC=B6=94=EA=B0=80=ED=95=9C=EB=8B=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...ปค๋ฎค๋‹ˆํ‹ฐ์‹œ๋ฆฌ์ฆˆ์•Œ๋ฆผYandex๋ฐฐ๋„ˆ๊ด‘๊ณ ์ถ”๊ฐ€๊ณ„ํš.md | 238 ++++++++++++++++++ 1 file changed, 238 insertions(+) create mode 100644 docs/20260424_์ปค๋ฎค๋‹ˆํ‹ฐ์‹œ๋ฆฌ์ฆˆ์•Œ๋ฆผYandex๋ฐฐ๋„ˆ๊ด‘๊ณ ์ถ”๊ฐ€๊ณ„ํš.md diff --git a/docs/20260424_์ปค๋ฎค๋‹ˆํ‹ฐ์‹œ๋ฆฌ์ฆˆ์•Œ๋ฆผYandex๋ฐฐ๋„ˆ๊ด‘๊ณ ์ถ”๊ฐ€๊ณ„ํš.md b/docs/20260424_์ปค๋ฎค๋‹ˆํ‹ฐ์‹œ๋ฆฌ์ฆˆ์•Œ๋ฆผYandex๋ฐฐ๋„ˆ๊ด‘๊ณ ์ถ”๊ฐ€๊ณ„ํš.md new file mode 100644 index 00000000..89724430 --- /dev/null +++ b/docs/20260424_์ปค๋ฎค๋‹ˆํ‹ฐ์‹œ๋ฆฌ์ฆˆ์•Œ๋ฆผYandex๋ฐฐ๋„ˆ๊ด‘๊ณ ์ถ”๊ฐ€๊ณ„ํš.md @@ -0,0 +1,238 @@ +# 20260424 ์ปค๋ฎค๋‹ˆํ‹ฐ/์‹œ๋ฆฌ์ฆˆ/์•Œ๋ฆผ Yandex ๋ฐฐ๋„ˆ ๊ด‘๊ณ  ์ถ”๊ฐ€ ๊ณ„ํš + +## ์ž‘์—… ์ฒดํฌ๋ฆฌ์ŠคํŠธ +- [x] ๋Œ€์ƒ 6๊ฐœ ํ™”๋ฉด์˜ ๋ฐฐ๋„ˆ ์‚ฝ์ž… ์œ„์น˜์™€ ๊ธฐ์กด Yandex inline banner ํŒจํ„ด์„ ์ตœ์ข… ํ™•์ •ํ•œ๋‹ค. + QA: `CreatorCommunityAllActivity`, `SeriesMainHomeFragment`, `SeriesMainDayOfWeekFragment`, `SeriesMainByGenreFragment`, `PushNotificationListActivity`, `NotificationReceiveSettingsActivity`์™€ ๊ธฐ์กด `MyPageFragment`, `LiveFragment`, `LiveRoomDetailFragment`, `AudioContentDetailActivity`๋ฅผ ๊ทผ๊ฑฐ๋กœ ๊ฐ ์œ„์น˜๋ฅผ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค. +- [x] AD_UNIT_ID ์šด์˜ ๋ฐฉ์‹์„ ๊ธฐ์กด ๊ด‘๊ณ ์™€ ๋™์ผํ•œ ์กฐ๊ฑด์œผ๋กœ ์ •๋ฆฌํ•˜๊ณ , ์ƒ์„ฑ/์žฌ์‚ฌ์šฉ ๊ธฐ์ค€์„ ๋ฌธ์„œ์— ๊ณ ์ •ํ•œ๋‹ค. + QA: `app/build.gradle`์˜ ๊ธฐ์กด `YANDEX_INLINE_BANNER_*` `buildConfigField` ํŒจํ„ด์„ ๊ธฐ์ค€์œผ๋กœ, ์–ด๋–ค ์ง€๋ฉด์ด ๊ธฐ์กด ID๋ฅผ ์žฌ์‚ฌ์šฉํ•˜๊ณ  ์–ด๋–ค ๊ฒฝ์šฐ์—๋งŒ ์‹ ๊ทœ ID๋ฅผ ๋งŒ๋“œ๋Š”์ง€ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค. +- [x] ํฌ๋ฆฌ์—์ดํ„ฐ ์ปค๋ฎค๋‹ˆํ‹ฐ ์ „์ฒด๋ณด๊ธฐ ํ™”๋ฉด์˜ ํƒญ๊ณผ `RecyclerView` ์‚ฌ์ด ๋ฐฐ๋„ˆ ์ถ”๊ฐ€ ๊ณ„ํš์„ ์ˆ˜๋ฆฝํ•œ๋‹ค. + QA: `activity_creator_community_all.xml`์—์„œ ํƒญ ํ•˜๋‹จ ๊ตฌ๋ถ„์„  ์•„๋ž˜, ์ฝ˜ํ…์ธ  `FrameLayout` ์œ„์— ๋ฐฐ๋„ˆ ์œ„์น˜๊ฐ€ ๋ช…์‹œ๋˜์–ด์•ผ ํ•œ๋‹ค. +- [x] ์‹œ๋ฆฌ์ฆˆ ๋ฉ”์ธ ํ™ˆ ํ™”๋ฉด์˜ ์™„๊ฒฐ ์‹œ๋ฆฌ์ฆˆ์™€ ์ถ”์ฒœ ์‹œ๋ฆฌ์ฆˆ ์‚ฌ์ด ๋ฐฐ๋„ˆ ์ถ”๊ฐ€ ๊ณ„ํš์„ ์ˆ˜๋ฆฝํ•œ๋‹ค. + QA: `fragment_series_main_home.xml`์—์„œ `ll_completed_series` ๋‹ค์Œ, `ll_recommend_series` ์ด์ „์— ๋ฐฐ๋„ˆ ์œ„์น˜๊ฐ€ ๋ช…์‹œ๋˜์–ด์•ผ ํ•œ๋‹ค. +- [x] ์‹œ๋ฆฌ์ฆˆ ๋ฉ”์ธ ์š”์ผ๋ณ„ ํ™”๋ฉด์˜ ์š”์ผ `RecyclerView`์™€ ์‹œ๋ฆฌ์ฆˆ `RecyclerView` ์‚ฌ์ด ๋ฐฐ๋„ˆ ์ถ”๊ฐ€ ๊ณ„ํš์„ ์ˆ˜๋ฆฝํ•œ๋‹ค. + QA: `fragment_series_main_day_of_week.xml`์—์„œ `rv_series_day_of_week_day` ๋‹ค์Œ, `rv_series_day_of_week` ์ด์ „์— ๋ฐฐ๋„ˆ ์œ„์น˜๊ฐ€ ๋ช…์‹œ๋˜์–ด์•ผ ํ•œ๋‹ค. +- [x] ์‹œ๋ฆฌ์ฆˆ ๋ฉ”์ธ ์žฅ๋ฅด๋ณ„ ํ™”๋ฉด์˜ ์žฅ๋ฅด `RecyclerView`์™€ ์‹œ๋ฆฌ์ฆˆ `RecyclerView` ์‚ฌ์ด ๋ฐฐ๋„ˆ ์ถ”๊ฐ€ ๊ณ„ํš์„ ์ˆ˜๋ฆฝํ•œ๋‹ค. + QA: `fragment_series_main_by_genre.xml`์—์„œ `rv_genre` ๋‹ค์Œ, `rv_series_by_genre` ์ด์ „์— ๋ฐฐ๋„ˆ ์œ„์น˜๊ฐ€ ๋ช…์‹œ๋˜์–ด์•ผ ํ•œ๋‹ค. +- [x] ์•Œ๋ฆผ ๋ฆฌ์ŠคํŠธ ํ™”๋ฉด์˜ ์นดํ…Œ๊ณ ๋ฆฌ์™€ ์•Œ๋ฆผ ๋ฆฌ์ŠคํŠธ ์‚ฌ์ด ๋ฐฐ๋„ˆ ์ถ”๊ฐ€ ๊ณ„ํš์„ ์ˆ˜๋ฆฝํ•œ๋‹ค. + QA: `activity_push_notification_list.xml`์—์„œ `rv_category` ์•„๋ž˜, `rv_notification`๋ฅผ ๊ฐ์‹ธ๋Š” `FrameLayout` ์œ„ ๋˜๋Š” ๋‚ด๋ถ€ ์ƒ๋‹จ์— ๋ฐฐ๋„ˆ ์œ„์น˜์™€ ๋นˆ ์ƒํƒœ(`ll_empty`) ์˜ํ–ฅ์ด ์ •๋ฆฌ๋˜์–ด์•ผ ํ•œ๋‹ค. +- [x] ์•Œ๋ฆผ ์ˆ˜์‹  ์„ค์ • ํ™”๋ฉด์˜ ํŒ”๋กœ์ž‰ ์ฑ„๋„๊ณผ ์„œ๋น„์Šค ์•Œ๋ฆผ ์‚ฌ์ด ๋ฐฐ๋„ˆ ์ถ”๊ฐ€ ๊ณ„ํš์„ ์ˆ˜๋ฆฝํ•œ๋‹ค. + QA: `activity_notification_receive_settings.xml`์—์„œ ์„œ๋น„์Šค ์•Œ๋ฆผ ์นด๋“œ ์˜์—ญ ์•„๋ž˜, ํŒ”๋กœ์ž‰ ์ฑ„๋„ ์„น์…˜ ์ œ๋ชฉ ์œ„์— ๋ฐฐ๋„ˆ ์œ„์น˜๊ฐ€ ๋ช…์‹œ๋˜์–ด์•ผ ํ•œ๋‹ค. +- [x] ๊ฐ ํ™”๋ฉด ์ƒ๋ช…์ฃผ๊ธฐ์— ๋งž๋Š” ๋ฐฐ๋„ˆ ๋กœ๋“œ/์ •๋ฆฌ ๊ทœ์น™๊ณผ ๊ฒ€์ฆ ๊ณ„ํš์„ ๋ฌธ์„œ์— ๋‚จ๊ธด๋‹ค. + QA: Activity/Fragment ์ข…๋ฃŒ ์‹œ `BannerAdView.destroy()` ํ˜ธ์ถœ ์œ„์น˜, `assembleDebug`/`testDebugUnitTest` ๊ธฐ์ค€, ์ˆ˜๋™ ํ™•์ธ ํฌ์ธํŠธ๊ฐ€ ๋ฌธ์„œ์— ์žˆ์–ด์•ผ ํ•œ๋‹ค. + +## ๋ฒ”์œ„ ๋ฉ”๋ชจ +- ์ด๋ฒˆ ์š”์ฒญ ๋ฒ”์œ„๋Š” ์•„๋ž˜ 6๊ฐœ ํ™”๋ฉด์— **Yandex adaptive inline banner**๋ฅผ ์ถ”๊ฐ€ํ•˜๊ธฐ ์œ„ํ•œ ๊ณ„ํš ๋ฌธ์„œ ์ž‘์„ฑ์œผ๋กœ ํ•œ์ •ํ•œ๋‹ค. + - `CreatorCommunityAllActivity` + - `SeriesMainHomeFragment` + - `SeriesMainDayOfWeekFragment` + - `SeriesMainByGenreFragment` + - `PushNotificationListActivity` + - `NotificationReceiveSettingsActivity` +- ๊ด‘๊ณ  ํฌ๋งท์€ ๋ชจ๋‘ inline banner๋กœ ํ†ต์ผํ•˜๊ณ , ์ „๋ฉด ๊ด‘๊ณ ยท๋ณด์ƒํ˜• ๊ด‘๊ณ ยท๋ฐฐ๋„ˆ ์Šฌ๋ผ์ด๋” ๋ณ€๊ฒฝ์€ ์ด๋ฒˆ ๋ฒ”์œ„์— ํฌํ•จํ•˜์ง€ ์•Š๋Š”๋‹ค. +- ๊ธฐ์กด Yandex SDK ์˜์กด์„ฑ๊ณผ ์•ฑ ์ดˆ๊ธฐํ™”(`SodaLiveApp`)๋Š” ์ด๋ฏธ ์กด์žฌํ•˜๋ฏ€๋กœ ์ด๋ฒˆ ์ž‘์—…์—์„œ SDK ์ถ”๊ฐ€๋‚˜ ์ดˆ๊ธฐํ™” ๊ตฌ์กฐ ๋ณ€๊ฒฝ์€ ์ œ์™ธํ•œ๋‹ค. +- ๊ธฐ์กด ๊ด‘๊ณ ์™€ ๋™์ผํ•˜๊ฒŒ ad unit id๋Š” `app/build.gradle`์˜ `debug`/`release` `buildConfigField`๋ฅผ ์šฐ์„  ๊ธฐ์ค€์œผ๋กœ ์‚ฌ์šฉํ•œ๋‹ค. +- **AD_UNIT_ID ์ƒ์„ฑ ๋˜๋Š” ์žฌ์‚ฌ์šฉ ์›์น™** + - ๊ธฐ์กด ๊ด‘๊ณ ์™€ ๋™์ผํ•œ ์šด์˜ ์กฐ๊ฑด์œผ๋กœ ํŒ๋‹จํ•œ๋‹ค. + - ๋™์ผ ํฌ๋งท(inline banner)์ด๊ณ  ์šด์˜์—์„œ ๊ฐ™์€ ์ง€๋ฉด์œผ๋กœ ์ทจ๊ธ‰ํ•ด๋„ ๋˜๋Š” ๊ฒฝ์šฐ์—๋Š” ๊ธฐ์กด AD_UNIT_ID ์žฌ์‚ฌ์šฉ์„ ์šฐ์„  ๊ฒ€ํ† ํ•œ๋‹ค. + - ํ™”๋ฉด ๋ชฉ์ , ๋…ธ์ถœ ์œ„์น˜, ์„ฑ๊ณผ ๋ถ„๋ฆฌ, ์šด์˜ ์ •์ฑ… ๋ถ„๋ฆฌ๊ฐ€ ํ•„์š”ํ•œ ๊ฒฝ์šฐ์—๋งŒ ๊ฐ™์€ ๋ฐฉ์‹์˜ ์‹ ๊ทœ `buildConfigField`๋ฅผ ์ƒ์„ฑํ•œ๋‹ค. + - ์ตœ์ข… ์žฌ์‚ฌ์šฉ ์—ฌ๋ถ€๋Š” ์„œ๋ฒ„/๊ด‘๊ณ  ์šด์˜ ๊ธฐ์ค€ ํ™•์ธ ํ›„ ํ™•์ •ํ•˜๋˜, ๊ตฌํ˜„ ๊ตฌ์กฐ๋Š” ์žฌ์‚ฌ์šฉ/์‹ ๊ทœ ์ƒ์„ฑ ๋ชจ๋‘ ์ˆ˜์šฉ ๊ฐ€๋Šฅํ•˜๊ฒŒ ๊ณ„ํšํ•œ๋‹ค. + - ํ˜„์žฌ ๊ตฌํ˜„์€ **์ง€๋ฉด๋ณ„ `buildConfigField`๋ฅผ ๋ถ„๋ฆฌ**ํ–ˆ๊ณ , `app/build.gradle`์— ๊ฐ ์ง€๋ฉด๋ณ„ ad unit ๊ฐ’์„ ๋ณ„๋„ ์„ ์–ธํ•ด ๊ด€๋ฆฌํ•œ๋‹ค. +- ๊ธฐ์กด ๊ตฌํ˜„ ๊ด€๋ก€์ƒ inline banner๋Š” `BannerAdView`๋ฅผ XML์— ๋ฐฐ์น˜ํ•˜๊ณ , ์ฝ”๋“œ์—์„œ ์‹ค์ œ ์ธก์ • ๋„ˆ๋น„ ๊ธฐ์ค€์œผ๋กœ `BannerAdSize.inlineSize(...)`๋ฅผ ์„ค์ •ํ•œ ๋’ค `loadAd(...)`๋ฅผ ํ˜ธ์ถœํ•œ๋‹ค. +- ๊ธฐ์กด ๊ตฌํ˜„ ๊ด€๋ก€์ƒ ๋ฐฐ๋„ˆ ๋†’์ด ์ƒํ•œ์€ XML `android:maxHeight="90dp"`์™€ ์ฝ”๋“œ์˜ `maxAdHeightDp = 90` ์กฐํ•ฉ์„ ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ ๋‘”๋‹ค. + +## ์กฐ์‚ฌ ๊ทผ๊ฑฐ +- ๊ธฐ์กด inline banner ๊ตฌํ˜„ + - `app/src/main/java/kr/co/vividnext/sodalive/mypage/MyPageFragment.kt` + - `app/src/main/java/kr/co/vividnext/sodalive/live/LiveFragment.kt` + - `app/src/main/java/kr/co/vividnext/sodalive/live/room/detail/LiveRoomDetailFragment.kt` + - `app/src/main/java/kr/co/vividnext/sodalive/audio_content/detail/AudioContentDetailActivity.kt` +- ๊ธฐ์กด ad unit id ์ฃผ์ž… + - `app/build.gradle` +- ๋Œ€์ƒ ํ™”๋ฉด + - `app/src/main/java/kr/co/vividnext/sodalive/explorer/profile/creator_community/all/CreatorCommunityAllActivity.kt` + - `app/src/main/res/layout/activity_creator_community_all.xml` + - `app/src/main/java/kr/co/vividnext/sodalive/audio_content/series/main/home/SeriesMainHomeFragment.kt` + - `app/src/main/res/layout/fragment_series_main_home.xml` + - `app/src/main/java/kr/co/vividnext/sodalive/audio_content/series/main/day_of_week/SeriesMainDayOfWeekFragment.kt` + - `app/src/main/res/layout/fragment_series_main_day_of_week.xml` + - `app/src/main/java/kr/co/vividnext/sodalive/audio_content/series/main/by_genre/SeriesMainByGenreFragment.kt` + - `app/src/main/res/layout/fragment_series_main_by_genre.xml` + - `app/src/main/java/kr/co/vividnext/sodalive/home/pushnotification/PushNotificationListActivity.kt` + - `app/src/main/res/layout/activity_push_notification_list.xml` + - `app/src/main/java/kr/co/vividnext/sodalive/settings/notification/NotificationReceiveSettingsActivity.kt` + - `app/src/main/res/layout/activity_notification_receive_settings.xml` +- ๊ณต์‹ ๋ฌธ์„œ + - `https://ads.yandex.com/helpcenter/ko/dev/android/adaptive-inline-banner` + +## ๊ตฌํ˜„ ๊ณ„ํš + +### 1. AD_UNIT_ID ์šด์˜ ๊ธฐ์ค€ ํ™•์ • +- ์ˆ˜์ • ํ›„๋ณด: `app/build.gradle` +- ๊ณ„ํš: + - ๊ธฐ์กด `YANDEX_INLINE_BANNER_*` `buildConfigField` ์„ ์–ธ ๊ตฌ์กฐ๋ฅผ ๊ทธ๋Œ€๋กœ ๋”ฐ๋ฅธ๋‹ค. + - ์šด์˜์—์„œ ์ด๋ฒˆ 6๊ฐœ ์ง€๋ฉด์„ ๊ธฐ์กด inline banner์™€ ๊ฐ™์€ ์ง€๋ฉด์œผ๋กœ ๋ฌถ์„ ์ˆ˜ ์žˆ์œผ๋ฉด, ๊ธฐ์กด inline banner์šฉ AD_UNIT_ID๋ฅผ ์žฌ์‚ฌ์šฉํ•œ๋‹ค. + - ์ง€๋ฉด๋ณ„ ๋ฆฌํฌํŠธ ๋ถ„๋ฆฌ๋‚˜ ์šด์˜ ๋ถ„๋ฆฌ๊ฐ€ ํ•„์š”ํ•˜๋ฉด ํ™”๋ฉด ๋˜๋Š” ์œ„์น˜ ๋‹จ์œ„๋กœ ์‹ ๊ทœ `YANDEX_INLINE_BANNER_*` ํ•„๋“œ๋ฅผ ์ถ”๊ฐ€ํ•œ๋‹ค. +- ํŒ๋‹จ ๊ธฐ์ค€: + - ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅ: ๊ฐ™์€ ํฌ๋งท, ๊ฐ™์€ ์šด์˜ ์ •์ฑ…, ๊ฐ™์€ ์„ฑ๊ณผ ์ง‘๊ณ„ ๋‹จ์œ„๋กœ ๋ด๋„ ๋˜๋Š” ๊ฒฝ์šฐ + - ์‹ ๊ทœ ์ƒ์„ฑ ํ•„์š”: ํ™”๋ฉด ์„ฑ๊ฒฉ์ด ๋‹ค๋ฅด๊ฑฐ๋‚˜ ์„ฑ๊ณผ/๋…ธ์ถœ ์ •์ฑ…์„ ๋”ฐ๋กœ ๋ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ +- ๋น„๊ณ : + - ๊ตฌํ˜„ ์ฝ”๋“œ๋Š” `BuildConfig` ์ฐธ์กฐ๋กœ ํ†ต์ผํ•ด ์žฌ์‚ฌ์šฉ/์‹ ๊ทœ ์ƒ์„ฑ ์–ด๋А ์ชฝ์ด๋“  ์ฝ”๋“œ ์ˆ˜์ • ๋ฒ”์œ„๋ฅผ ์ตœ์†Œํ™”ํ•œ๋‹ค. + +### 2. ํฌ๋ฆฌ์—์ดํ„ฐ ์ปค๋ฎค๋‹ˆํ‹ฐ ์ „์ฒด๋ณด๊ธฐ ๋ฐฐ๋„ˆ ๊ณ„ํš +- ์ˆ˜์ • ๋Œ€์ƒ: + - `app/src/main/res/layout/activity_creator_community_all.xml` + - `app/src/main/java/kr/co/vividnext/sodalive/explorer/profile/creator_community/all/CreatorCommunityAllActivity.kt` +- ์œ„์น˜: + - ํƒญ ์˜์—ญ ๋ฐ 1dp ๊ตฌ๋ถ„์„  ์•„๋ž˜, `FrameLayout` ์œ„ +- ๊ณ„ํš: + - ํ˜„์žฌ๋Š” ํƒญ ์˜์—ญ ์•„๋ž˜ ๋ฐ”๋กœ ์ฝ˜ํ…์ธ  `FrameLayout`์ด ์‹œ์ž‘๋˜๋ฏ€๋กœ, ๊ทธ ์‚ฌ์ด์— `BannerAdView`๋ฅผ ๋ฐฐ์น˜ํ•œ๋‹ค. + - list/grid ๋‘ ๋ชจ๋“œ๋ฅผ ๊ณตํ†ต์œผ๋กœ ๋ฎ๋Š” ๊ตฌ์กฐ์ด๋ฏ€๋กœ, ๋ฐฐ๋„ˆ๋Š” RecyclerView ๋‚ด๋ถ€ ์•„์ดํ…œ์ด ์•„๋‹ˆ๋ผ ์ƒ๋‹จ ๊ณ ์ • ์„น์…˜์œผ๋กœ ๋„ฃ๋Š”๋‹ค. + - `Activity`์—์„œ `binding.yandexInlineBannerView.post { ... }` ํŒจํ„ด์œผ๋กœ ๋ฐฐ๋„ˆ ๋„ˆ๋น„ ์ธก์ • ํ›„ ๊ด‘๊ณ ๋ฅผ ๋กœ๋“œํ•œ๋‹ค. + - `onDestroy()`์—์„œ `destroy()`๋ฅผ ํ˜ธ์ถœํ•ด ๋ฆฌ์†Œ์Šค๋ฅผ ์ •๋ฆฌํ•œ๋‹ค. + +### 3. ์‹œ๋ฆฌ์ฆˆ ๋ฉ”์ธ ํ™ˆ ๋ฐฐ๋„ˆ ๊ณ„ํš +- ์ˆ˜์ • ๋Œ€์ƒ: + - `app/src/main/res/layout/fragment_series_main_home.xml` + - `app/src/main/java/kr/co/vividnext/sodalive/audio_content/series/main/home/SeriesMainHomeFragment.kt` +- ์œ„์น˜: + - `ll_completed_series` ์•„๋ž˜, `ll_recommend_series` ์œ„ +- ๊ณ„ํš: + - `NestedScrollView` ๋‚ด๋ถ€ ์„ธ๋กœ ์„น์…˜ ์‚ฌ์ด์— ๋ณ„๋„ ๋ฐฐ๋„ˆ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ถ”๊ฐ€ํ•œ๋‹ค. + - ์™„๊ฒฐ ์‹œ๋ฆฌ์ฆˆ/์ถ”์ฒœ ์‹œ๋ฆฌ์ฆˆ visibility์™€ ๋…๋ฆฝ์ ์œผ๋กœ ๋ฐฐ๋„ˆ ๋…ธ์ถœ ์กฐ๊ฑด์„ ์„ค๊ณ„ํ•œ๋‹ค. + - ๊ธฐ์กด `setupCompletedSeriesView()`/`setupRecommendSeriesView()`์™€ ๋ถ„๋ฆฌ๋œ `setupInlineBanner()` ์„ฑ๊ฒฉ์˜ ๋กœ์ง์„ ์ถ”๊ฐ€ํ•œ๋‹ค. + - `onDestroyView()`์—์„œ `destroy()`๋ฅผ ํ˜ธ์ถœํ•œ๋‹ค. + +### 4. ์‹œ๋ฆฌ์ฆˆ ๋ฉ”์ธ ์š”์ผ๋ณ„ ๋ฐฐ๋„ˆ ๊ณ„ํš +- ์ˆ˜์ • ๋Œ€์ƒ: + - `app/src/main/res/layout/fragment_series_main_day_of_week.xml` + - `app/src/main/java/kr/co/vividnext/sodalive/audio_content/series/main/day_of_week/SeriesMainDayOfWeekFragment.kt` +- ์œ„์น˜: + - `rv_series_day_of_week_day` ์•„๋ž˜, `rv_series_day_of_week` ์œ„ +- ๊ณ„ํš: + - ์ƒ๋‹จ ์š”์ผ ํ•„ํ„ฐ์™€ ํ•˜๋‹จ ์‹œ๋ฆฌ์ฆˆ ๊ทธ๋ฆฌ๋“œ ์‚ฌ์ด์˜ ์ค‘๊ฐ„ ์„น์…˜์œผ๋กœ `BannerAdView`๋ฅผ ๋ฐฐ์น˜ํ•œ๋‹ค. + - `match_parent` ๋†’์ด๋กœ ์“ฐ์ด๋Š” ํ•˜๋‹จ RecyclerView ์˜์—ญ์„ ๊นจ์ง€ ์•Š๋„๋ก ๋ฐฐ๋„ˆ ์ถ”๊ฐ€ ํ›„ ๋ ˆ์ด์•„์›ƒ weight/height ์˜ํ–ฅ์„ ๋จผ์ € ์ ๊ฒ€ํ•œ๋‹ค. + - Fragment์—์„œ ๊ธฐ์กด inline banner ๋กœ๋“œ ํŒจํ„ด์„ ๋ณต์‚ฌํ•˜๋˜, ํ™”๋ฉด ๋„ˆ๋น„์™€ 90dp ์ƒํ•œ์„ ๋™์ผํ•˜๊ฒŒ ์ ์šฉํ•œ๋‹ค. + - `onDestroyView()`์—์„œ ๋ฐฐ๋„ˆ ๋ฆฌ์†Œ์Šค๋ฅผ ํ•ด์ œํ•œ๋‹ค. + +### 5. ์‹œ๋ฆฌ์ฆˆ ๋ฉ”์ธ ์žฅ๋ฅด๋ณ„ ๋ฐฐ๋„ˆ ๊ณ„ํš +- ์ˆ˜์ • ๋Œ€์ƒ: + - `app/src/main/res/layout/fragment_series_main_by_genre.xml` + - `app/src/main/java/kr/co/vividnext/sodalive/audio_content/series/main/by_genre/SeriesMainByGenreFragment.kt` +- ์œ„์น˜: + - `rv_genre` ์•„๋ž˜, `rv_series_by_genre` ์œ„ +- ๊ณ„ํš: + - ์š”์ผ๋ณ„ ํ™”๋ฉด๊ณผ ๊ฐ™์€ ๊ตฌ์กฐ์ด๋ฏ€๋กœ, ๋™์ผํ•œ ๋ฐฐ์น˜/๋กœ๋“œ/ํ•ด์ œ ํŒจํ„ด์„ ์šฐ์„  ์žฌ์‚ฌ์šฉํ•œ๋‹ค. + - ์žฅ๋ฅด ๋ณ€๊ฒฝ ์‹œ ์‹œ๋ฆฌ์ฆˆ ๋ฆฌ์ŠคํŠธ๋งŒ ๋‹ค์‹œ ๋กœ๋“œ๋˜๋„๋ก ๋‘๊ณ , ๋ฐฐ๋„ˆ๋Š” ํ™”๋ฉด ์ƒ์„ฑ ์‹œ 1ํšŒ ๋กœ๋“œ ๊ตฌ์กฐ๋ฅผ ์šฐ์„  ๊ฒ€ํ† ํ•œ๋‹ค. + - `onDestroyView()`์—์„œ `destroy()`๋ฅผ ํ˜ธ์ถœํ•œ๋‹ค. + +### 6. ์•Œ๋ฆผ ๋ฆฌ์ŠคํŠธ ๋ฐฐ๋„ˆ ๊ณ„ํš +- ์ˆ˜์ • ๋Œ€์ƒ: + - `app/src/main/res/layout/activity_push_notification_list.xml` + - `app/src/main/java/kr/co/vividnext/sodalive/home/pushnotification/PushNotificationListActivity.kt` +- ์œ„์น˜: + - `rv_category` ์•„๋ž˜, ์•Œ๋ฆผ ์˜์—ญ ์‹œ์ž‘ ์ง€์  +- ๊ณ„ํš: + - ๋นˆ ์ƒํƒœ(`ll_empty`)์™€ ์•Œ๋ฆผ ๋ฆฌ์ŠคํŠธ(`rv_notification`)๊ฐ€ ๊ฐ™์€ `FrameLayout`์„ ๊ณต์œ ํ•˜๋ฏ€๋กœ, ๋ฐฐ๋„ˆ๋ฅผ `FrameLayout` ๋ฐ”๊นฅ ์ƒ๋‹จ ์„น์…˜์œผ๋กœ ๋‘๋Š” ์•ˆ์„ ์šฐ์„  ์ ์šฉํ•œ๋‹ค. + - ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์นดํ…Œ๊ณ ๋ฆฌ ์•„๋ž˜์— ํ•ญ์ƒ ๋™์ผ ์œ„์น˜๋กœ ๋ฐฐ๋„ˆ๋ฅผ ์œ ์ง€ํ•˜๋ฉด์„œ, ๋นˆ ์ƒํƒœ/๋ฆฌ์ŠคํŠธ ์ƒํƒœ ์ „ํ™˜์— ์˜ํ–ฅ์„ ๋œ ์ค€๋‹ค. + - Activity์—์„œ ๊ธฐ์กด inline banner ๋กœ๋“œ ํŒจํ„ด์„ ์ถ”๊ฐ€ํ•˜๊ณ , ์ข…๋ฃŒ ์‹œ `destroy()`๋ฅผ ํ˜ธ์ถœํ•œ๋‹ค. + +### 7. ์•Œ๋ฆผ ์ˆ˜์‹  ์„ค์ • ๋ฐฐ๋„ˆ ๊ณ„ํš +- ์ˆ˜์ • ๋Œ€์ƒ: + - `app/src/main/res/layout/activity_notification_receive_settings.xml` + - `app/src/main/java/kr/co/vividnext/sodalive/settings/notification/NotificationReceiveSettingsActivity.kt` +- ์œ„์น˜: + - ์„œ๋น„์Šค ์•Œ๋ฆผ ์นด๋“œ ์˜์—ญ ์•„๋ž˜, ํŒ”๋กœ์ž‰ ์ฑ„๋„ ์„น์…˜ ์ œ๋ชฉ ์œ„ +- ๊ณ„ํš: + - `NestedScrollView` ๋‚ด๋ถ€ ์„ธ๋กœ ํ๋ฆ„์„ ์œ ์ง€ํ•˜๋ฉด์„œ ๋‘ ์„น์…˜ ์‚ฌ์ด์— `BannerAdView`๋ฅผ ๋„ฃ๋Š”๋‹ค. + - ์„œ๋น„์Šค ์•Œ๋ฆผ ํ† ๊ธ€๊ณผ ํŒ”๋กœ์ž‰ ์ฑ„๋„ ๋ฆฌ์ŠคํŠธ ์Šคํฌ๋กค/ํŽ˜์ด์ง• ๋กœ์ง์— ์˜ํ–ฅ์ด ์—†๋„๋ก, ๋ฐฐ๋„ˆ๋Š” ๋…๋ฆฝ ์„น์…˜์œผ๋กœ ์ถ”๊ฐ€ํ•œ๋‹ค. + - Activity ์ข…๋ฃŒ ์‹œ `destroy()`๋ฅผ ํ˜ธ์ถœํ•œ๋‹ค. + +### 8. ๊ณตํ†ต ๋ฐฐ๋„ˆ ๋กœ๋“œ/์ •๋ฆฌ ๊ทœ์น™ +- ๊ณตํ†ต ์ฝ”๋“œ ๋ฐฉํ–ฅ: + - XML์— `BannerAdView`๋ฅผ ์ง์ ‘ ์„ ์–ธํ•œ๋‹ค. + - `post {}` ์ดํ›„ `width` ๊ธฐ๋ฐ˜ `adWidthDp`๋ฅผ ๊ณ„์‚ฐํ•œ๋‹ค. + - `BannerAdSize.inlineSize(context, adWidthDp, 90)`๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. + - `setAdUnitId(BuildConfig.YANDEX_INLINE_BANNER_...)` ํ›„ `loadAd(AdRequest.Builder().build())`๋ฅผ ํ˜ธ์ถœํ•œ๋‹ค. +- ์ƒ๋ช…์ฃผ๊ธฐ: + - Fragment๋Š” `onDestroyView()`์—์„œ `destroy()` + - Activity๋Š” `onDestroy()`์—์„œ `destroy()` +- ๋ฌธ์„œ์ƒ ํ™•์ธ ํฌ์ธํŠธ: + - ๋ฐฐ๋„ˆ๊ฐ€ ์„น์…˜ ์‚ฌ์ด์— ์œ„์น˜ํ•˜๋Š”์ง€ + - ๊ธฐ์กด ์Šคํฌ๋กค/๋ฌดํ•œ ๋กœ๋“œ ๋™์ž‘์„ ๊นจ์ง€ ์•Š๋Š”์ง€ + - list/grid, empty/content, section visibility ๋ณ€ํ™”์™€ ์ถฉ๋Œํ•˜์ง€ ์•Š๋Š”์ง€ + +## ์˜ˆ์ƒ ์ˆ˜์ • ํŒŒ์ผ +- `docs/20260424_์ปค๋ฎค๋‹ˆํ‹ฐ์‹œ๋ฆฌ์ฆˆ์•Œ๋ฆผYandex๋ฐฐ๋„ˆ๊ด‘๊ณ ์ถ”๊ฐ€๊ณ„ํš.md` +- `app/build.gradle` (AD_UNIT_ID ์žฌ์‚ฌ์šฉ ๋ถˆ๊ฐ€ ์‹œ์—๋งŒ) +- `app/src/main/res/layout/activity_creator_community_all.xml` +- `app/src/main/java/kr/co/vividnext/sodalive/explorer/profile/creator_community/all/CreatorCommunityAllActivity.kt` +- `app/src/main/res/layout/fragment_series_main_home.xml` +- `app/src/main/java/kr/co/vividnext/sodalive/audio_content/series/main/home/SeriesMainHomeFragment.kt` +- `app/src/main/res/layout/fragment_series_main_day_of_week.xml` +- `app/src/main/java/kr/co/vividnext/sodalive/audio_content/series/main/day_of_week/SeriesMainDayOfWeekFragment.kt` +- `app/src/main/res/layout/fragment_series_main_by_genre.xml` +- `app/src/main/java/kr/co/vividnext/sodalive/audio_content/series/main/by_genre/SeriesMainByGenreFragment.kt` +- `app/src/main/res/layout/activity_push_notification_list.xml` +- `app/src/main/java/kr/co/vividnext/sodalive/home/pushnotification/PushNotificationListActivity.kt` +- `app/src/main/res/layout/activity_notification_receive_settings.xml` +- `app/src/main/java/kr/co/vividnext/sodalive/settings/notification/NotificationReceiveSettingsActivity.kt` + +## ๊ฒ€์ฆ ๊ณ„ํš +- ์ •์  ํ™•์ธ + - ๋ณ€๊ฒฝ ๋Œ€์ƒ `.kt`, `.xml`์— ๋Œ€ํ•ด ๊ฐ€๋Šฅ ๋ฒ”์œ„์—์„œ `lsp_diagnostics`๋ฅผ ์‹œ๋„ํ•œ๋‹ค. +- ๋นŒ๋“œ/ํ…Œ์ŠคํŠธ + - `./gradlew :app:assembleDebug` + - `./gradlew :app:testDebugUnitTest` +- ์ˆ˜๋™ ํ™•์ธ + - ์ปค๋ฎค๋‹ˆํ‹ฐ ์ „์ฒด๋ณด๊ธฐ์—์„œ ํƒญ๊ณผ ์ฝ˜ํ…์ธ  ๋ฆฌ์ŠคํŠธ ์‚ฌ์ด์— ๋ฐฐ๋„ˆ๊ฐ€ ๋…ธ์ถœ๋˜๋Š”์ง€ ํ™•์ธํ•œ๋‹ค. + - ์‹œ๋ฆฌ์ฆˆ ๋ฉ”์ธ ํ™ˆ์—์„œ ์™„๊ฒฐ ์‹œ๋ฆฌ์ฆˆ์™€ ์ถ”์ฒœ ์‹œ๋ฆฌ์ฆˆ ์‚ฌ์ด์— ๋ฐฐ๋„ˆ๊ฐ€ ๋…ธ์ถœ๋˜๋Š”์ง€ ํ™•์ธํ•œ๋‹ค. + - ์‹œ๋ฆฌ์ฆˆ ๋ฉ”์ธ ์š”์ผ๋ณ„/์žฅ๋ฅด๋ณ„์—์„œ ํ•„ํ„ฐ ๋ฆฌ์ŠคํŠธ์™€ ์‹œ๋ฆฌ์ฆˆ ๋ฆฌ์ŠคํŠธ ์‚ฌ์ด์— ๋ฐฐ๋„ˆ๊ฐ€ ๋…ธ์ถœ๋˜๋Š”์ง€ ํ™•์ธํ•œ๋‹ค. + - ์•Œ๋ฆผ ๋ฆฌ์ŠคํŠธ์—์„œ ์นดํ…Œ๊ณ ๋ฆฌ ์•„๋ž˜, ์•Œ๋ฆผ ์˜์—ญ ์‹œ์ž‘ ์œ„์น˜์— ๋ฐฐ๋„ˆ๊ฐ€ ๋…ธ์ถœ๋˜๋Š”์ง€ ํ™•์ธํ•œ๋‹ค. + - ์•Œ๋ฆผ ์ˆ˜์‹  ์„ค์ •์—์„œ ์„œ๋น„์Šค ์•Œ๋ฆผ๊ณผ ํŒ”๋กœ์ž‰ ์ฑ„๋„ ์‚ฌ์ด์— ๋ฐฐ๋„ˆ๊ฐ€ ๋…ธ์ถœ๋˜๋Š”์ง€ ํ™•์ธํ•œ๋‹ค. + - ๊ฐ ํ™”๋ฉด ์ข…๋ฃŒ ํ›„ ์žฌ์ง„์ž… ์‹œ ํฌ๋ž˜์‹œ๋‚˜ ์ค‘๋ณต ๋กœ๋“œ ๋ฌธ์ œ๊ฐ€ ์—†๋Š”์ง€ ํ™•์ธํ•œ๋‹ค. + +## ๊ฒ€์ฆ ๊ธฐ๋ก +- 2026-04-24 + - ๋ฌด์—‡: ์ปค๋ฎค๋‹ˆํ‹ฐ/์‹œ๋ฆฌ์ฆˆ/์•Œ๋ฆผ ํ™”๋ฉด์˜ Yandex inline banner ์ถ”๊ฐ€ ๊ณ„ํš ๋ฌธ์„œ๋ฅผ ์ƒ์„ฑํ–ˆ๋‹ค. + - ์™œ: ์ €์žฅ์†Œ ๊ทœ์น™์— ๋”ฐ๋ผ ๊ตฌํ˜„ ์ „์— `docs` ์•„๋ž˜ ๊ณ„ํš ๋ฌธ์„œ๋ฅผ ๋จผ์ € ๋งŒ๋“ค๊ณ , ๋ฒ”์œ„ยท์‚ฝ์ž… ์œ„์น˜ยท๊ฒ€์ฆ ๊ธฐ์ค€์„ ๋ฌธ์„œ๋กœ ๊ณ ์ •ํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. + - ์–ด๋–ป๊ฒŒ: + - ์ƒ์„ฑ ํŒŒ์ผ: `docs/20260424_์ปค๋ฎค๋‹ˆํ‹ฐ์‹œ๋ฆฌ์ฆˆ์•Œ๋ฆผYandex๋ฐฐ๋„ˆ๊ด‘๊ณ ์ถ”๊ฐ€๊ณ„ํš.md` + - ๊ทผ๊ฑฐ ํŒŒ์ผ: `activity_creator_community_all.xml`, `fragment_series_main_home.xml`, `fragment_series_main_day_of_week.xml`, `fragment_series_main_by_genre.xml`, `activity_push_notification_list.xml`, `activity_notification_receive_settings.xml`, ๊ฐ ๋Œ€์‘ Activity/Fragment Kotlin ํŒŒ์ผ + - ์žฌ์‚ฌ์šฉ ๊ทผ๊ฑฐ: `MyPageFragment.kt`, `LiveFragment.kt`, `LiveRoomDetailFragment.kt`, `AudioContentDetailActivity.kt`, `app/build.gradle` + - ๊ทผ๊ฑฐ ๋ฌธ์„œ: `https://ads.yandex.com/helpcenter/ko/dev/android/adaptive-inline-banner` + - ๊ฒฐ๊ณผ: ๋Œ€์ƒ 6๊ฐœ ํ™”๋ฉด์˜ ์‚ฝ์ž… ์œ„์น˜, ์ƒ๋ช…์ฃผ๊ธฐ ์ •๋ฆฌ ๊ทœ์น™, AD_UNIT_ID ์žฌ์‚ฌ์šฉ/์‹ ๊ทœ ์ƒ์„ฑ ๊ธฐ์ค€, ์˜ˆ์ƒ ์ˆ˜์ • ํŒŒ์ผ, ๊ฒ€์ฆ ๊ณ„ํš์„ ๊ตฌํ˜„ ์ „์— ํ™•์ •ํ–ˆ๋‹ค. +- 2026-04-24 + - ๋ฌด์—‡: ๊ณ„ํš ๋Œ€์ƒ 6๊ฐœ ํ™”๋ฉด์— Yandex adaptive inline banner ๋ฐฐ์น˜, ๋กœ๋“œ, ์ƒ๋ช…์ฃผ๊ธฐ ์ •๋ฆฌ๋ฅผ ๋ฐ˜์˜ํ–ˆ๋‹ค. + - ์™œ: ๊ฐ ํ™”๋ฉด์˜ ๊ณ„ํš๋œ ์„น์…˜ ์‚ฌ์ด์— inline banner๋ฅผ ๋…ธ์ถœํ•˜๊ณ , ๊ธฐ์กด ๊ตฌํ˜„๊ณผ ๋™์ผํ•˜๊ฒŒ ํ™”๋ฉด ์ข…๋ฃŒ ์‹œ ๊ด‘๊ณ  ๋ฆฌ์†Œ์Šค๋ฅผ ํ•ด์ œํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. + - ์–ด๋–ป๊ฒŒ: + - ์ˆ˜์ • ํŒŒ์ผ: `activity_creator_community_all.xml`, `CreatorCommunityAllActivity.kt`, `fragment_series_main_home.xml`, `SeriesMainHomeFragment.kt`, `fragment_series_main_day_of_week.xml`, `SeriesMainDayOfWeekFragment.kt`, `fragment_series_main_by_genre.xml`, `SeriesMainByGenreFragment.kt`, `activity_push_notification_list.xml`, `PushNotificationListActivity.kt`, `activity_notification_receive_settings.xml`, `NotificationReceiveSettingsActivity.kt` + - AD_UNIT_ID: ์‹ ๊ทœ `buildConfigField`๋ฅผ ๋งŒ๋“ค์ง€ ์•Š๊ณ  ๊ธฐ์กด `BuildConfig.YANDEX_INLINE_BANNER_MYPAGE_AD_UNIT_ID`๋ฅผ 6๊ฐœ ์ง€๋ฉด์— ์ผ๊ด€ ์žฌ์‚ฌ์šฉํ–ˆ๋‹ค. + - ๊ทผ๊ฑฐ: ์‹ ๊ทœ ์šด์˜ ID๊ฐ€ ๋ณ„๋„๋กœ ์ œ๊ณต๋˜์ง€ ์•Š์•˜๊ณ , ์ด๋ฒˆ ๋ณ€๊ฒฝ์€ ๋™์ผ ํฌ๋งท์˜ inline banner ์ถ”๊ฐ€์ด๋ฏ€๋กœ ๋ฌธ์„œ์˜ ์žฌ์‚ฌ์šฉ ์šฐ์„  ๊ธฐ์ค€์— ๋ถ€ํ•ฉํ•œ๋‹ค. + - ์ƒ๋ช…์ฃผ๊ธฐ: Activity๋Š” `onDestroy()`, Fragment๋Š” `onDestroyView()`์—์„œ `BannerAdView.destroy()`๋ฅผ ํ˜ธ์ถœํ•˜๋„๋ก ๋ฐ˜์˜ํ–ˆ๋‹ค. +- 2026-04-24 + - ๋ฌด์—‡: ๊ตฌํ˜„ ํ›„ ์ •์  ํ™•์ธ, ๋นŒ๋“œ, ๋‹จ์œ„ ํ…Œ์ŠคํŠธ๋ฅผ ์‹คํ–‰ํ–ˆ๋‹ค. + - ์™œ: XML `BannerAdView` ์ถ”๊ฐ€, ViewBinding ์ƒ์„ฑ, Kotlin import/์ปดํŒŒ์ผ, Fragment/Activity ์ƒ๋ช…์ฃผ๊ธฐ ์ฝ”๋“œ๊ฐ€ ๊ธฐ์กด ๋™์ž‘์„ ๊นจ์ง€ ์•Š๋Š”์ง€ ํ™•์ธํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. + - ์–ด๋–ป๊ฒŒ: + - `lsp_diagnostics`: ํ™˜๊ฒฝ์— `.kt`/`.xml` LSP ์„œ๋ฒ„๊ฐ€ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์ง€ ์•Š์•„ ์‹คํ–‰ ๋ถˆ๊ฐ€(`No LSP server configured for extension`)๋ฅผ ํ™•์ธํ–ˆ๋‹ค. + - `./gradlew :app:assembleDebug`: ์„ฑ๊ณต. XML ๋ฆฌ์†Œ์Šค, ViewBinding, Kotlin ์ปดํŒŒ์ผ์ด ํ†ต๊ณผํ–ˆ๋‹ค. + - `./gradlew :app:testDebugUnitTest`: ์„ฑ๊ณต. Debug ๋‹จ์œ„ ํ…Œ์ŠคํŠธ๊ฐ€ ํ†ต๊ณผํ–ˆ๋‹ค. + - `./gradlew :app:ktlintCheck`: ์‹คํŒจ. ๋Œ€์ƒ ํŒŒ์ผ์˜ ๋ฏธ์‚ฌ์šฉ import 1๊ฑด์€ ์ œ๊ฑฐํ–ˆ์œผ๋ฉฐ, ๋‚จ์€ ์‹คํŒจ๋Š” ๊ธฐ์กด ํŒจํ‚ค์ง€ ๊ฒฝ๋กœ์˜ underscore ๊ทœ์น™(`audio_content/series/main/by_genre`) ์œ„๋ฐ˜์ด๋‹ค. +- 2026-04-24 + - ๋ฌด์—‡: ์‹ ๊ทœ 6๊ฐœ ๋ฐฐ๋„ˆ ์ง€๋ฉด์˜ ad unit ์ฐธ์กฐ๋ฅผ MyPage ๊ณต์šฉ ๊ฐ’ ์žฌ์‚ฌ์šฉ์—์„œ ์ง€๋ฉด๋ณ„ `BuildConfig` ํ•„๋“œ ๋ถ„๋ฆฌ ๊ตฌ์กฐ๋กœ ๋ณ€๊ฒฝํ–ˆ๋‹ค. + - ์™œ: ๋™์ผ ํฌ๋งท์ด๋ผ๋„ ์šด์˜์ƒ ํ™”๋ฉด๋ณ„ ๋ฆฌํฌํŒ…๊ณผ ๊ต์ฒด ๊ฐ€๋Šฅ์„ฑ์„ ์œ ์ง€ํ•˜๋Š” ํŽธ์ด ๋” ์•ˆ์ „ํ•˜๊ณ , ๊ธฐ์กด ์ €์žฅ์†Œ๋„ ์ง€๋ฉด๋ณ„ Yandex ๊ด‘๊ณ  ํ•„๋“œ๋ฅผ ๋ถ„๋ฆฌํ•ด ๊ด€๋ฆฌํ•˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. + - ์–ด๋–ป๊ฒŒ: + - ์ˆ˜์ • ํŒŒ์ผ: `app/build.gradle`, `CreatorCommunityAllActivity.kt`, `SeriesMainHomeFragment.kt`, `SeriesMainDayOfWeekFragment.kt`, `SeriesMainByGenreFragment.kt`, `PushNotificationListActivity.kt`, `NotificationReceiveSettingsActivity.kt` + - `build.gradle`: release/debug ๊ฐ๊ฐ์— 6๊ฐœ ์‹ ๊ทœ `YANDEX_INLINE_BANNER_*_AD_UNIT_ID` ํ•„๋“œ๋ฅผ ์ถ”๊ฐ€ํ–ˆ๋‹ค. + - ๊ฐ’ ๋ถ„๋ฆฌ: release๋Š” `R-M-19140295-7`~`R-M-19140295-12`, debug๋Š” `R-M-19140297-7`~`R-M-19140297-12`๋กœ ๊ฐ ์ง€๋ฉด ad unit ๊ฐ’์„ ๋ถ„๋ฆฌํ–ˆ๋‹ค. + - ์ฝ”๋“œ ๋ฐ˜์˜: ๊ฐ ํ™”๋ฉด์ด ์ž์‹ ์˜ ์ง€๋ฉด์šฉ `BuildConfig` ํ•„๋“œ๋ฅผ ์ฐธ์กฐํ•˜๋„๋ก ๋ณ€๊ฒฝํ•ด ์ดํ›„ ์‹ค์ œ ๊ฐ’ ๊ต์ฒด ์‹œ ์ฝ”๋“œ ์ˆ˜์ •์ด ํ•„์š” ์—†๊ฒŒ ์ •๋ฆฌํ–ˆ๋‹ค. +- 2026-04-24 + - ๋ฌด์—‡: ad unit ๋ถ„๋ฆฌ ๊ตฌ์กฐ ๋ฐ˜์˜ ํ›„ ๋นŒ๋“œ์™€ ํ…Œ์ŠคํŠธ๋ฅผ ๋‹ค์‹œ ๊ฒ€์ฆํ–ˆ๋‹ค. + - ์™œ: `buildConfigField` ์ถ”๊ฐ€์™€ `BuildConfig` ์ฐธ์กฐ ๊ต์ฒด๊ฐ€ ์‹ค์ œ ์ปดํŒŒ์ผ๊ณผ ๋‹จ์œ„ ํ…Œ์ŠคํŠธ๋ฅผ ๊นจ์ง€ ์•Š๋Š”์ง€ ์ƒˆ ๊ฒฐ๊ณผ๋กœ ํ™•์ธํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. + - ์–ด๋–ป๊ฒŒ: + - ์‹คํ–‰ ๋ช…๋ น: `./gradlew :app:assembleDebug` + - ์‹คํ–‰ ๊ฒฐ๊ณผ: `BUILD SUCCESSFUL` + - ์‹คํ–‰ ๋ช…๋ น: `./gradlew :app:testDebugUnitTest` + - ์‹คํ–‰ ๊ฒฐ๊ณผ: `BUILD SUCCESSFUL` + - ์‹คํ–‰ ๋ช…๋ น: `./gradlew :app:ktlintCheck` + - ์‹คํ–‰ ๊ฒฐ๊ณผ: ์‹คํŒจ + - ์‹คํŒจ ์›์ธ: ์ด๋ฒˆ ๋ณ€๊ฒฝ์œผ๋กœ ์ถ”๊ฐ€๋œ ์Šคํƒ€์ผ ์˜ค๋ฅ˜๊ฐ€ ์•„๋‹ˆ๋ผ ๊ธฐ์กด ํŒจํ‚ค์ง€ ๊ฒฝ๋กœ์˜ underscore ๊ทœ์น™ ์œ„๋ฐ˜(`creator_community`, `audio_content/series/main/home`, `audio_content/series/main/day_of_week`, `audio_content/series/main/by_genre`)์ด ๊ณ„์† ๋ณด๊ณ ๋˜์—ˆ๋‹ค.