diff --git a/app/build.gradle.kts b/app/build.gradle.kts
index e6ae5dc9..4f482da7 100644
--- a/app/build.gradle.kts
+++ b/app/build.gradle.kts
@@ -24,8 +24,8 @@ android {
applicationId = "com.kuit.findu"
minSdk = 28
targetSdk = 35
- versionCode = 14
- versionName = "1.0.13"
+ versionCode = 15
+ versionName = "1.1.0"
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
buildConfigField("String", "GPT_KEY", properties["GPT_KEY"].toString())
@@ -53,7 +53,9 @@ android {
buildTypes {
release {
isMinifyEnabled = false
+ signingConfig = signingConfigs.getByName("release")
buildConfigField("String", "BASE_URL", properties["base.url.release"].toString())
+ buildConfigField("String", "ADMOB_BANNER_ID", properties["ADMOB_BANNER_ID_RELEASE"].toString())
proguardFiles(
getDefaultProguardFile("proguard-android-optimize.txt"),
"proguard-rules.pro"
@@ -64,7 +66,7 @@ android {
isDebuggable = true
versionNameSuffix = "-DEBUG"
buildConfigField("String", "BASE_URL", properties["base.url.dev"].toString())
-
+ buildConfigField("String", "ADMOB_BANNER_ID", properties["ADMOB_BANNER_ID_DEBUG"].toString())
}
}
buildFeatures {
@@ -169,4 +171,7 @@ dependencies {
implementation(libs.firebase.analytics.ktx)
implementation(libs.firebase.config.ktx)
implementation(libs.firebase.crashlytics)
+
+ // AdMob
+ implementation("com.google.android.gms:play-services-ads:23.1.0")
}
\ No newline at end of file
diff --git a/app/proguard-rules.pro b/app/proguard-rules.pro
index 97f999fc..9a8a274a 100644
--- a/app/proguard-rules.pro
+++ b/app/proguard-rules.pro
@@ -94,6 +94,10 @@
-dontwarn com.google.firebase.**
-dontwarn com.google.android.gms.**
+# ========== AdMob ==========
+-keep class com.google.android.gms.ads.** { *; }
+-dontwarn com.google.android.gms.ads.**
+
# ========== Jetpack Compose ==========
-keep class androidx.compose.** { *; }
-keep class androidx.compose.runtime.** { *; }
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 4f09ee84..7979c5fa 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -42,6 +42,11 @@
android:name="com.kakao.sdk.AppKey"
android:value="${KAKAO_NATIVE_APP_KEY_MANIFEST}" />
+
+
+
+ val analytics = FirebaseAnalytics.getInstance(context)
+
+ AdView(context).apply {
+ setAdSize(AdSize.BANNER)
+ adUnitId = AD_UNIT_ID
+ adListener = object : AdListener() {
+ override fun onAdClicked() {
+ analytics.logEvent(AnalyticsEvent.AD_CLICK, Bundle().apply {
+ putString(AnalyticsEvent.AD_LOCATION, adLocation)
+ })
+ }
+
+ override fun onAdImpression() {
+ analytics.logEvent(AnalyticsEvent.AD_IMPRESSION, Bundle().apply {
+ putString(AnalyticsEvent.AD_LOCATION, adLocation)
+ })
+ }
+
+ override fun onAdFailedToLoad(error: LoadAdError) {
+ Log.e("AdBanner", "광고 로드 실패: ${error.code} - ${error.message}")
+ }
+
+ override fun onAdLoaded() {
+ Log.d("AdBanner", "광고 로드 성공")
+ }
+ }
+ loadAd(AdRequest.Builder().build())
+ }
+ }
+ )
+}
diff --git a/app/src/main/java/com/kuit/findu/presentation/ui/home/component/HomeWebLinkList.kt b/app/src/main/java/com/kuit/findu/presentation/ui/home/component/HomeWebLinkList.kt
index 3d29e8ef..ca1aa026 100644
--- a/app/src/main/java/com/kuit/findu/presentation/ui/home/component/HomeWebLinkList.kt
+++ b/app/src/main/java/com/kuit/findu/presentation/ui/home/component/HomeWebLinkList.kt
@@ -16,6 +16,7 @@ import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import com.kuit.findu.R
import com.kuit.findu.presentation.ui.base.BaseVectorIcon
+import com.kuit.findu.presentation.ui.common.AdBanner
import com.kuit.findu.presentation.util.WebViewUrl.CENTER_URL
import com.kuit.findu.presentation.util.WebViewUrl.PART_URL
import com.kuit.findu.ui.theme.FindUTheme
@@ -51,15 +52,9 @@ fun HomeWebLinkList(modifier: Modifier = Modifier) {
buttonText = "종합유기견보호센터 바로가기",
webUrl = CENTER_URL
)
- Spacer(modifier = Modifier.height(60.dp))
- Text(
- text = "서비스 관련 정보 \n" +
- "문의처는 어쩌고 저쩌고 \n" +
- "전화번호 00-10-3-20442",
- style = FindUTheme.typography.captionRegular12,
- color = FindUTheme.colors.gray5
- )
-
+ Spacer(modifier = Modifier.height(40.dp))
+ AdBanner(adLocation = "home_web_link")
+ Spacer(modifier = Modifier.height(20.dp))
}
}
diff --git a/app/src/main/java/com/kuit/findu/presentation/ui/home/composeview/HomeScreen.kt b/app/src/main/java/com/kuit/findu/presentation/ui/home/composeview/HomeScreen.kt
index 214686a4..7cbee8ad 100644
--- a/app/src/main/java/com/kuit/findu/presentation/ui/home/composeview/HomeScreen.kt
+++ b/app/src/main/java/com/kuit/findu/presentation/ui/home/composeview/HomeScreen.kt
@@ -38,6 +38,7 @@ import com.kuit.findu.presentation.ui.home.component.HomeReportedAnimalList
import com.kuit.findu.presentation.ui.home.component.HomeTopBar
import com.kuit.findu.presentation.ui.home.component.HomeWebLinkList
import com.kuit.findu.presentation.ui.home.viewmodel.HomeUiState
+import com.kuit.findu.presentation.ui.common.AdBanner
import com.kuit.findu.ui.theme.FindUTheme
import com.google.accompanist.pager.ExperimentalPagerApi
import com.google.accompanist.pager.rememberPagerState
@@ -131,6 +132,12 @@ fun HomeScreen(
bannerList = bannerList,
pagerState = pagerState
)
+ Spacer(modifier = Modifier.height(15.dp))
+
+ AdBanner(
+ modifier = Modifier.padding(horizontal = 20.dp),
+ adLocation = "home_screen"
+ )
Spacer(modifier = Modifier.height(30.dp))
}
}
diff --git a/app/src/main/java/com/kuit/findu/presentation/ui/my/MyFragment.kt b/app/src/main/java/com/kuit/findu/presentation/ui/my/MyFragment.kt
index 1648b277..d5df7dab 100644
--- a/app/src/main/java/com/kuit/findu/presentation/ui/my/MyFragment.kt
+++ b/app/src/main/java/com/kuit/findu/presentation/ui/my/MyFragment.kt
@@ -30,9 +30,15 @@ import com.kuit.findu.presentation.ui.my.dialog.MyProfileImageDialog
import com.kuit.findu.presentation.ui.my.dialog.MyWithdrawalDialog
import com.kuit.findu.presentation.ui.my.model.ProfileImageType
import com.kuit.findu.presentation.ui.my.viewmodel.MyViewModel
+import com.google.android.gms.ads.AdListener
+import com.google.android.gms.ads.AdRequest
+import com.google.android.gms.ads.AdSize
+import com.google.android.gms.ads.LoadAdError
import com.google.firebase.Firebase
+import com.google.firebase.analytics.FirebaseAnalytics
import com.google.firebase.remoteconfig.remoteConfig
import com.google.firebase.remoteconfig.remoteConfigSettings
+import com.kuit.findu.analytics.AnalyticsEvent
import dagger.hilt.android.AndroidEntryPoint
import kotlinx.coroutines.launch
@@ -76,6 +82,30 @@ class MyFragment : Fragment() {
super.onViewCreated(view, savedInstanceState)
observeViewModel()
+ setupAdView()
+ }
+
+ private fun setupAdView() {
+ val analytics = FirebaseAnalytics.getInstance(requireContext())
+
+ binding.adViewMy.adListener = object : AdListener() {
+ override fun onAdClicked() {
+ analytics.logEvent(AnalyticsEvent.AD_CLICK, android.os.Bundle().apply {
+ putString(AnalyticsEvent.AD_LOCATION, "my_page")
+ })
+ }
+
+ override fun onAdImpression() {
+ analytics.logEvent(AnalyticsEvent.AD_IMPRESSION, android.os.Bundle().apply {
+ putString(AnalyticsEvent.AD_LOCATION, "my_page")
+ })
+ }
+
+ override fun onAdFailedToLoad(error: LoadAdError) {
+ // 광고 로드 실패 시 처리
+ }
+ }
+ binding.adViewMy.loadAd(AdRequest.Builder().build())
}
private fun initListener() {
diff --git a/app/src/main/res/layout/fragment_my.xml b/app/src/main/res/layout/fragment_my.xml
index a4810c31..05905c8f 100644
--- a/app/src/main/res/layout/fragment_my.xml
+++ b/app/src/main/res/layout/fragment_my.xml
@@ -462,6 +462,13 @@
+