Skip to content
Merged
7 changes: 6 additions & 1 deletion app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,11 @@
android:usesCleartextTraffic="true"
tools:targetApi="31">

<!-- 자동 화면 추적 사용 중지: 수동 화면 ID로 트래킹 -->
<meta-data
android:name="google_analytics_automatic_screen_reporting_enabled"
android:value="false" />

<!-- 사진 접근 관련 : minSDK가 30이상이면 필요없음 -->
<service android:name="com.google.android.gms.metadata.ModuleDependencies"
android:enabled="false"
Expand Down Expand Up @@ -113,7 +118,7 @@
android:name=".presentation.mypage.terms.WebViewActivity"
android:exported="false" />
<activity
android:name=".presentation.login.IntroActivity"
android:name=".presentation.intro.IntroActivity"
android:exported="true">
<!-- 기본 런처 필터 -->
<intent-filter>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import android.content.Context
import android.content.Intent
import androidx.core.app.NotificationCompat
import com.eatssu.android.R
import com.eatssu.android.presentation.login.IntroActivity
import com.eatssu.android.presentation.intro.IntroActivity
import java.time.DayOfWeek
import java.time.LocalDateTime

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ import com.eatssu.android.presentation.mypage.MyPageViewModel
import com.eatssu.android.presentation.mypage.userinfo.UserInfoActivity
import com.eatssu.android.presentation.util.showToast
import com.eatssu.android.presentation.util.startActivity
import com.eatssu.common.enums.ScreenId
import com.google.android.material.bottomnavigation.BottomNavigationView
import dagger.hilt.android.AndroidEntryPoint
import kotlinx.coroutines.flow.collectLatest
Expand All @@ -32,10 +33,14 @@ import javax.inject.Inject


@AndroidEntryPoint
class MainActivity : BaseActivity<ActivityMainBinding>(ActivityMainBinding::inflate){
class MainActivity : BaseActivity<ActivityMainBinding>(
ActivityMainBinding::inflate,
ScreenId.HOME_MAIN
) {

@Inject
lateinit var workManager: WorkManager

private val mainViewModel: MainViewModel by viewModels()
private val myPageViewModel: MyPageViewModel by viewModels()

Expand Down Expand Up @@ -189,4 +194,6 @@ class MainActivity : BaseActivity<ActivityMainBinding>(ActivityMainBinding::infl
}
}


override fun shouldLogScreenId() = false
}
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package com.eatssu.android.presentation.base

import android.content.Intent
import android.graphics.Color
import android.graphics.Rect
import android.os.Bundle
import android.view.LayoutInflater
Expand All @@ -27,13 +26,16 @@ import com.eatssu.android.presentation.common.NetworkConnection
import com.eatssu.android.presentation.common.VersionViewModel
import com.eatssu.android.presentation.common.VersionViewModelFactory
import com.eatssu.android.presentation.login.LoginActivity
import com.eatssu.common.EventLogger
import com.eatssu.common.enums.ScreenId
import com.google.android.material.card.MaterialCardView
import kotlinx.coroutines.launch
import timber.log.Timber


abstract class BaseActivity<B : ViewBinding>(
val bindingFactory: (LayoutInflater, ViewGroup?, Boolean) -> B
val bindingFactory: (LayoutInflater, ViewGroup?, Boolean) -> B,
val screenId: ScreenId
) : AppCompatActivity() {

private var _binding: B? = null
Expand Down Expand Up @@ -168,4 +170,17 @@ abstract class BaseActivity<B : ViewBinding>(
Timber.d("BaseActivity", "공지사항: $message")
startActivity(intent)
}

override fun onResume() {
super.onResume()

if (shouldLogScreenId()) {
EventLogger.screenView(screenId)
Timber.d("screen view logging: $screenId")
}
}

open fun shouldLogScreenId(): Boolean {
return true
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,13 @@ import android.view.View
import android.view.ViewGroup
import androidx.fragment.app.Fragment
import androidx.viewbinding.ViewBinding
import com.eatssu.common.EventLogger
import com.eatssu.common.enums.ScreenId
import timber.log.Timber

abstract class BaseFragment<B : ViewBinding> : Fragment() {
abstract class BaseFragment<B : ViewBinding>(
val screenId: ScreenId
) : Fragment() {

private var _binding: B? = null
val binding get() = _binding!!
Expand All @@ -27,4 +32,10 @@ abstract class BaseFragment<B : ViewBinding> : Fragment() {
super.onDestroyView()
_binding = null
}

override fun onResume() {
super.onResume()
EventLogger.screenView(screenId)
Timber.d("screen view logging: $screenId")
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -17,14 +17,17 @@ import com.eatssu.android.presentation.util.CalendarUtil
import com.eatssu.android.presentation.util.CalendarUtil.daysInWeekArray
import com.eatssu.android.presentation.util.CalendarUtil.monthYearFromDate
import com.eatssu.common.EventLogger
import com.eatssu.common.enums.ScreenId
import com.eatssu.common.enums.Time
import com.google.android.material.tabs.TabLayout
import com.google.android.material.tabs.TabLayoutMediator
import dagger.hilt.android.AndroidEntryPoint
import java.time.LocalDate

@AndroidEntryPoint
class CafeteriaFragment : BaseFragment<FragmentCafeteriaBinding>(), OnItemListener {
class CafeteriaFragment : BaseFragment<FragmentCafeteriaBinding>(
ScreenId.HOME_MAIN
), OnItemListener {

private val mainViewModel by activityViewModels<MainViewModel>()

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ import com.eatssu.android.presentation.common.MyReviewBottomSheetFragment
import com.eatssu.android.presentation.common.OthersBottomSheetFragment
import com.eatssu.common.EventLogger
import com.eatssu.common.enums.MenuType
import com.eatssu.common.enums.ScreenId
import dagger.hilt.android.AndroidEntryPoint
import kotlinx.coroutines.flow.collectLatest
import kotlinx.coroutines.launch
Expand All @@ -25,7 +26,7 @@ import kotlin.properties.Delegates

@AndroidEntryPoint
class ReviewActivity :
BaseActivity<ActivityReviewBinding>(ActivityReviewBinding::inflate),
BaseActivity<ActivityReviewBinding>(ActivityReviewBinding::inflate, ScreenId.REVIEW_V1_VIEW),
MyReviewBottomSheetFragment.OnReviewDeletedListener {

private val reviewViewModel: ReviewViewModel by viewModels()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,13 +7,17 @@ import com.eatssu.android.data.dto.request.ModifyReviewRequest
import com.eatssu.android.databinding.ActivityFixMenuBinding
import com.eatssu.android.presentation.base.BaseActivity
import com.eatssu.android.presentation.util.showToast
import com.eatssu.common.enums.ScreenId
import dagger.hilt.android.AndroidEntryPoint
import kotlinx.coroutines.flow.collectLatest
import kotlinx.coroutines.launch
import timber.log.Timber

@AndroidEntryPoint
class ModifyReviewActivity : BaseActivity<ActivityFixMenuBinding>(ActivityFixMenuBinding::inflate) {
class ModifyReviewActivity : BaseActivity<ActivityFixMenuBinding>(
ActivityFixMenuBinding::inflate,
ScreenId.REVIEW_V1_MODIFY
) {

private val modifyViewModel: ModifyViewModel by viewModels()

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,13 +9,17 @@ import com.eatssu.android.databinding.ActivityReportBinding
import com.eatssu.android.presentation.base.BaseActivity
import com.eatssu.android.presentation.util.showToast
import com.eatssu.common.enums.ReportType
import com.eatssu.common.enums.ScreenId
import dagger.hilt.android.AndroidEntryPoint
import kotlinx.coroutines.flow.collectLatest
import kotlinx.coroutines.launch


@AndroidEntryPoint
class ReportActivity : BaseActivity<ActivityReportBinding>(ActivityReportBinding::inflate) {
class ReportActivity : BaseActivity<ActivityReportBinding>(
ActivityReportBinding::inflate,
ScreenId.REVIEW_REPORT
) {
private val reportViewModel: ReportViewModel by viewModels()

private var reviewId = -1L
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ import com.eatssu.android.presentation.UiState
import com.eatssu.android.presentation.base.BaseActivity
import com.eatssu.android.presentation.util.showToast
import com.eatssu.common.EventLogger
import com.eatssu.common.enums.ScreenId
import dagger.hilt.android.AndroidEntryPoint
import id.zelory.compressor.Compressor
import kotlinx.coroutines.launch
Expand All @@ -29,7 +30,10 @@ import java.io.File

@AndroidEntryPoint
class ReviewWriteRateActivity :
BaseActivity<ActivityReviewWriteRateBinding>(ActivityReviewWriteRateBinding::inflate) {
BaseActivity<ActivityReviewWriteRateBinding>(
ActivityReviewWriteRateBinding::inflate,
ScreenId.REVIEW_V1_WRITE_RATE
) {

private val viewModel: UploadReviewViewModel by viewModels()

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,14 +8,18 @@ import androidx.recyclerview.widget.LinearLayoutManager
import com.eatssu.android.databinding.ActivityReviewWriteMenuBinding
import com.eatssu.android.presentation.base.BaseActivity
import com.eatssu.android.presentation.cafeteria.review.write.ReviewWriteRateActivity
import com.eatssu.common.enums.ScreenId
import dagger.hilt.android.AndroidEntryPoint
import kotlinx.coroutines.flow.collectLatest
import kotlinx.coroutines.launch
import timber.log.Timber

@AndroidEntryPoint
class ReviewWriteMenuActivity :
BaseActivity<ActivityReviewWriteMenuBinding>(ActivityReviewWriteMenuBinding::inflate) {
BaseActivity<ActivityReviewWriteMenuBinding>(
ActivityReviewWriteMenuBinding::inflate,
ScreenId.REVIEW_V1_WRITE
) {

private val viewModel: VariableMenuViewModel by viewModels()
private var mealId: Long = -1
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.eatssu.android.presentation.login
package com.eatssu.android.presentation.intro

import android.os.Bundle
import androidx.activity.enableEdgeToEdge
Expand All @@ -9,10 +9,12 @@ import com.eatssu.android.databinding.ActivityIntroBinding
import com.eatssu.android.presentation.MainActivity
import com.eatssu.android.presentation.UiEvent
import com.eatssu.android.presentation.UiState
import com.eatssu.android.presentation.login.LoginActivity
import com.eatssu.android.presentation.util.showToast
import com.eatssu.android.presentation.util.startActivity
import com.eatssu.common.EventLogger
import com.eatssu.common.enums.LaunchPath
import com.eatssu.common.enums.ScreenId
import dagger.hilt.android.AndroidEntryPoint
import kotlinx.coroutines.flow.collectLatest
import kotlinx.coroutines.launch
Expand Down Expand Up @@ -68,4 +70,9 @@ class IntroActivity : AppCompatActivity() {
else -> EventLogger.appLaunch(LaunchPath.ICON)
}
}

override fun onResume() {
super.onResume()
EventLogger.screenView(ScreenId.LOGIN_SPLASH)
}
}
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.eatssu.android.presentation.login
package com.eatssu.android.presentation.intro

import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,12 +8,13 @@ import androidx.lifecycle.lifecycleScope
import androidx.lifecycle.repeatOnLifecycle
import com.eatssu.android.R
import com.eatssu.android.databinding.ActivityLoginBinding
import com.eatssu.android.presentation.MainActivity
import com.eatssu.android.presentation.UiEvent
import com.eatssu.android.presentation.UiState
import com.eatssu.android.presentation.base.BaseActivity
import com.eatssu.android.presentation.MainActivity
import com.eatssu.android.presentation.util.showToast
import com.eatssu.android.presentation.util.startActivity
import com.eatssu.common.enums.ScreenId
import com.kakao.sdk.common.model.ClientError
import com.kakao.sdk.common.model.ClientErrorCause
import com.kakao.sdk.user.UserApiClient
Expand All @@ -24,7 +25,10 @@ import timber.log.Timber

@AndroidEntryPoint
class LoginActivity :
BaseActivity<ActivityLoginBinding>(ActivityLoginBinding::inflate) {
BaseActivity<ActivityLoginBinding>(
ActivityLoginBinding::inflate,
ScreenId.LOGIN_LOGIN
) {

private val loginViewModel: LoginViewModel by viewModels()

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,24 @@ import android.content.pm.PackageManager
import android.widget.Toast
import androidx.activity.compose.rememberLauncherForActivityResult
import androidx.activity.result.contract.ActivityResultContracts
import androidx.compose.foundation.layout.*
import androidx.compose.material3.*
import androidx.compose.runtime.*
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.padding
import androidx.compose.material3.CenterAlignedTopAppBar
import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.Scaffold
import androidx.compose.material3.Text
import androidx.compose.material3.TopAppBarDefaults
import androidx.compose.material3.rememberModalBottomSheetState
import androidx.compose.runtime.Composable
import androidx.compose.runtime.DisposableEffect
import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.rememberCoroutineScope
import androidx.compose.runtime.setValue
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.LocalContext
Expand All @@ -31,18 +46,27 @@ import com.eatssu.android.presentation.MainState
import com.eatssu.android.presentation.MainViewModel
import com.eatssu.android.presentation.UiEvent
import com.eatssu.android.presentation.UiState
import com.eatssu.android.presentation.map.component.FilterType
import com.eatssu.android.presentation.map.component.DepartmentBottomSheet
import com.eatssu.android.presentation.map.component.FilterType
import com.eatssu.android.presentation.map.component.MapRestaurantBottomSheet
import com.eatssu.android.presentation.map.component.PartnershipFilterToggle
import com.eatssu.android.presentation.map.model.PlaceType
import com.eatssu.android.presentation.mypage.userinfo.UserInfoActivity
import com.eatssu.common.EventLogger
import com.eatssu.common.enums.ScreenId
import com.eatssu.design_system.theme.Black
import com.eatssu.design_system.theme.EatssuTheme
import com.naver.maps.geometry.LatLng
import com.naver.maps.map.CameraPosition
import com.naver.maps.map.compose.*
import com.naver.maps.map.compose.Align
import com.naver.maps.map.compose.ExperimentalNaverMapApi
import com.naver.maps.map.compose.LocationTrackingMode
import com.naver.maps.map.compose.MapProperties
import com.naver.maps.map.compose.MapUiSettings
import com.naver.maps.map.compose.Marker
import com.naver.maps.map.compose.NaverMap
import com.naver.maps.map.compose.rememberCameraPositionState
import com.naver.maps.map.compose.rememberMarkerState
import com.naver.maps.map.overlay.OverlayImage
import com.naver.maps.map.util.FusedLocationSource
import kotlinx.coroutines.flow.collectLatest
Expand Down Expand Up @@ -165,6 +189,13 @@ fun MapFragmentComposeView(
}
}


// Screen View 기록
LaunchedEffect(Unit) {
EventLogger.screenView(ScreenId.MAP_MAIN)
}


val lifecycleOwner = LocalLifecycleOwner.current

// onResume 시마다 학과 정보 반영
Expand Down
Loading