Skip to content

Commit

Permalink
Feat : Amplitude 연동, 분석하기 버튼 클릭 시마다 'analysis_button_clicked' 이벤트 발생
Browse files Browse the repository at this point in the history
  • Loading branch information
DongChyeon committed Jul 13, 2024
1 parent 75fb36f commit 99f5178
Show file tree
Hide file tree
Showing 11 changed files with 57 additions and 37 deletions.
1 change: 1 addition & 0 deletions app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.READ_MEDIA_IMAGES" />
<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
<uses-permission
Expand Down
1 change: 1 addition & 0 deletions app/src/main/java/com/teamwiney/winey/MainActivity.kt
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ class MainActivity : ComponentActivity() {

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)

// WindowInset 직접 조절하기 위해서
WindowCompat.setDecorFitsSystemWindows(window, false)
setContent {
Expand Down
2 changes: 2 additions & 0 deletions app/src/main/java/com/teamwiney/winey/WineyApp.kt
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ package com.teamwiney.winey

import android.app.Application
import com.kakao.sdk.common.KakaoSdk
import com.teamwiney.core.common.di.AmplitudeProvider
import dagger.hilt.android.HiltAndroidApp

@HiltAndroidApp
Expand All @@ -11,5 +12,6 @@ class WineyApp : Application() {
super.onCreate()
// Kakao SDK 초기화
KakaoSdk.init(this, BuildConfig.KAKAO_NATIVE_APP_KEY)
AmplitudeProvider.initialize(this)
}
}
7 changes: 7 additions & 0 deletions core/common/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,12 @@ android {
defaultConfig {
minSdk = 24

buildConfigField(
"String",
"AMPLITUDE_API_KEY",
properties["amplitude.api.key"] as String
)

testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
}
buildFeatures {
Expand Down Expand Up @@ -60,6 +66,7 @@ dependencies {
implementation(libs.lifecycle.runtime.viewmodel)
implementation(libs.converter.gson)

implementation(libs.amplitude)
implementation(libs.datastore)
implementation(libs.dagger)
implementation(libs.hilt.android)
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
package com.teamwiney.core.common.di

import android.content.Context
import com.amplitude.android.Amplitude
import com.amplitude.android.Configuration
import com.amplitude.android.DefaultTrackingOptions
import com.amplitude.android.utilities.AndroidLoggerProvider
import com.teamwiney.core.common.BuildConfig

object AmplitudeProvider {
private var amplitude: Amplitude? = null

fun initialize(context: Context) {
amplitude = Amplitude(
Configuration(
apiKey = BuildConfig.AMPLITUDE_API_KEY,
context= context,
defaultTracking = DefaultTrackingOptions.ALL,
loggerProvider = AndroidLoggerProvider()
)
)
}

private fun getAmplitude(): Amplitude {
return amplitude ?: throw IllegalStateException("Amplitude is not initialized")
}

fun trackEvent(eventName: String) {
getAmplitude().track(eventName)
}
}
30 changes: 3 additions & 27 deletions feature/home/src/main/java/com/teamwiney/home/HomeNavigation.kt
Original file line number Diff line number Diff line change
Expand Up @@ -22,26 +22,16 @@ fun NavGraphBuilder.homeGraph(
startDestination = HomeDestinations.HOME
) {
composable(route = HomeDestinations.HOME) {
val backStackEntry = rememberNavControllerBackStackEntry(
entry = it,
navController = appState.navController,
graph = HomeDestinations.ROUTE
)
HomeScreen(
appState = appState,
viewModel = hiltViewModel(backStackEntry)
viewModel = hiltViewModel()
)
}

composable(route = HomeDestinations.WINE_TIP) {
val backStackEntry = rememberNavControllerBackStackEntry(
entry = it,
navController = appState.navController,
graph = HomeDestinations.ROUTE
)
WineTipScreen(
appState = appState,
viewModel = hiltViewModel(backStackEntry)
viewModel = hiltViewModel()
)
}

Expand All @@ -54,25 +44,11 @@ fun NavGraphBuilder.homeGraph(
}
)
) { entry ->
val backStackEntry = rememberNavControllerBackStackEntry(
entry = entry,
navController = appState.navController,
graph = HomeDestinations.ROUTE
)
WineDetailScreen(
appState = appState,
wineId = entry.arguments?.getLong("wineId") ?: 0L,
viewModel = hiltViewModel(backStackEntry)
viewModel = hiltViewModel()
)
}
}
}

@Composable
fun rememberNavControllerBackStackEntry(
entry: NavBackStackEntry,
navController: NavController,
graph: String,
) = remember(entry) {
navController.getBackStackEntry(graph)
}
5 changes: 2 additions & 3 deletions feature/home/src/main/java/com/teamwiney/home/HomeScreen.kt
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,7 @@ import androidx.paging.compose.itemContentType
import androidx.paging.compose.itemKey
import com.teamwiney.analysis.component.TipCard
import com.teamwiney.core.common.WineyAppState
import com.teamwiney.core.common.di.AmplitudeProvider
import com.teamwiney.core.common.navigation.HomeDestinations
import com.teamwiney.core.design.R
import com.teamwiney.data.network.model.response.RecommendWine
Expand Down Expand Up @@ -81,9 +82,6 @@ fun HomeScreen(
}

LaunchedEffect(true) {
viewModel.getRecommendWines()
viewModel.getWineTips()

effectFlow.collectLatest { effect ->
when (effect) {
is HomeContract.Effect.NavigateTo -> {
Expand Down Expand Up @@ -113,6 +111,7 @@ fun HomeScreen(
HomeLogo(
onClick = {
viewModel.processEvent(HomeContract.Event.ShowAnalysis)
AmplitudeProvider.trackEvent("analysis_button_click")
},
hintPopupOpen = uiState.isFirstScroll
)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,9 @@ class HomeViewModel @Inject constructor(
dataStoreRepository.getBooleanValue(IS_FIRST_SCROLL).first()
}
updateState(currentState.copy(isFirstScroll = isFirstScroll))

getRecommendWines()
getWineTips()
}

override fun reduceState(event: HomeContract.Event) {
Expand Down
5 changes: 3 additions & 2 deletions gradle/libs.versions.toml
Original file line number Diff line number Diff line change
Expand Up @@ -29,9 +29,9 @@ play_services_auth_version = "20.7.0"
play_services_location_version = "21.1.0"
play_services_maps_version = "18.2.0"
naver_map_compose_version = "1.3.3"
naver_map_location_version = "16.0.0"
naver_map_location_version = "21.0.2"
accompanist_systemui_version = "0.28.0"
kakao_sdk_user_version = "2.16.0"
kakao_sdk_user_version = "2.20.0"
firebase_crashlytics_version = "2.9.9"

[libraries]
Expand Down Expand Up @@ -82,6 +82,7 @@ play_services_auth = { module = "com.google.android.gms:play-services-auth", ver
play_services_location = { module = "com.google.android.gms:play-services-location", version.ref = "play_services_location_version" }
play_services_maps = { module = "com.google.android.gms:play-services-maps", version.ref = "play_services_maps_version" }
compose_ui_util = { module = "androidx.compose.ui:ui-util", version.ref = "compose_version" }
amplitude = { module = "com.amplitude:analytics-android", version = "1.+" }

[plugins]
android_application = { id = "com.android.application", version.ref = "agp_version" }
Expand Down
4 changes: 2 additions & 2 deletions gradle/wrapper/gradle-wrapper.properties
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
#Mon Dec 04 01:21:47 KST 2023
#Fri Jun 28 17:02:01 KST 2024
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-8.0.2-bin.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-8.2-bin.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
5 changes: 2 additions & 3 deletions settings.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,8 @@ dependencyResolutionManagement {
repositories {
google()
mavenCentral()
maven {
url 'https://naver.jfrog.io/artifactory/maven/'
}
maven { url 'https://naver.jfrog.io/artifactory/maven/' }
maven { url 'https://repository.map.naver.com/archive/maven/'}
maven { url 'https://devrepo.kakao.com/nexus/content/groups/public/' }
}
}
Expand Down

0 comments on commit 99f5178

Please sign in to comment.