From 4829f9eda2ca718dbc964cd53baecad9d02823a6 Mon Sep 17 00:00:00 2001 From: Hyun Woo Lee Date: Sun, 28 Feb 2021 19:16:39 +0900 Subject: [PATCH 1/6] =?UTF-8?q?#540=20[FEAT]=20:=20=ED=8C=8C=EC=9D=B4?= =?UTF-8?q?=EC=96=B4=EB=B2=A0=EC=9D=B4=EC=8A=A4=20=EB=A1=9C=EA=B7=B8=20?= =?UTF-8?q?=EB=8B=AC=EA=B8=B0(Main,=20Onboarding)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/AndroidManifest.xml | 1 + .../beme/main/adapter/MainViewPagerAdapter.kt | 13 +++++++++++++ .../com/teambeme/beme/main/model/ScreenName.kt | 18 ++++++++++++++++++ .../beme/onboarding/view/OnBoardingActivity.kt | 17 +++++++++++++++++ 4 files changed, 49 insertions(+) create mode 100644 app/src/main/java/com/teambeme/beme/main/model/ScreenName.kt diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 9920099..cf3c4dd 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -5,6 +5,7 @@ + HomeFragment() 1 -> ExploreFragment() @@ -21,6 +27,13 @@ class MainViewPagerAdapter(fragmentActivity: FragmentActivity) : } } + private fun recordScreen(position: Int) { + Firebase.analytics.logEvent(FirebaseAnalytics.Event.SCREEN_VIEW) { + param(FirebaseAnalytics.Param.SCREEN_NAME, ScreenName.of(position)) + param(FirebaseAnalytics.Param.SCREEN_CLASS, "MainActivity") + } + } + companion object { const val MAIN_PAGE_NUM = 4 } diff --git a/app/src/main/java/com/teambeme/beme/main/model/ScreenName.kt b/app/src/main/java/com/teambeme/beme/main/model/ScreenName.kt new file mode 100644 index 0000000..aad134a --- /dev/null +++ b/app/src/main/java/com/teambeme/beme/main/model/ScreenName.kt @@ -0,0 +1,18 @@ +package com.teambeme.beme.main.model + +enum class ScreenName( + private val index: Int, + private val screenName: String +) { + HOME(0, "HomeFragment"), + EXPLORE(1, "ExploreFragment"), + FOLLOWING(2, "FollowingFragment"), + MYPAGE(3, "MyPageFragment"); + + companion object { + fun of(index: Int): String { + return values().find { index == it.index }?.screenName + ?: throw IllegalArgumentException("도대체 이 숫자는 어디서 나온거죠? 고양이 수: $index") + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/teambeme/beme/onboarding/view/OnBoardingActivity.kt b/app/src/main/java/com/teambeme/beme/onboarding/view/OnBoardingActivity.kt index 4ef5b07..fe074b1 100644 --- a/app/src/main/java/com/teambeme/beme/onboarding/view/OnBoardingActivity.kt +++ b/app/src/main/java/com/teambeme/beme/onboarding/view/OnBoardingActivity.kt @@ -6,6 +6,10 @@ import android.view.View import android.widget.Toast import androidx.activity.viewModels import androidx.viewpager2.widget.ViewPager2 +import com.google.firebase.analytics.FirebaseAnalytics +import com.google.firebase.analytics.ktx.analytics +import com.google.firebase.analytics.ktx.logEvent +import com.google.firebase.ktx.Firebase import com.teambeme.beme.R import com.teambeme.beme.base.BindingActivity import com.teambeme.beme.data.local.singleton.BeMeAuthPreference @@ -79,6 +83,10 @@ class OnBoardingActivity : private fun providePageChangeCallback(): ViewPager2.OnPageChangeCallback { return object : ViewPager2.OnPageChangeCallback() { override fun onPageSelected(position: Int) { + Firebase.analytics.logEvent(FirebaseAnalytics.Event.SCREEN_VIEW) { + param(FirebaseAnalytics.Param.SCREEN_CLASS, "OnBoardingActivity") + param(FirebaseAnalytics.Param.SCREEN_NAME, getScreenName(position)) + } when (position) { 3 -> { with(binding) { @@ -97,6 +105,15 @@ class OnBoardingActivity : } } + private fun getScreenName(position: Int): String { + return when (position) { + 0 -> "ONBOARDING_1" + 1 -> "ONBOARDING_2" + 2 -> "ONBOARDING_3" + else -> "ONBOARDING_4" + } + } + private fun navigateTo(activity: Class) { val intent = Intent(this@OnBoardingActivity, activity) From a2ddf82251b473898154ce4323b57d1c8d00c731 Mon Sep 17 00:00:00 2001 From: Hyun Woo Lee Date: Sun, 28 Feb 2021 19:29:51 +0900 Subject: [PATCH 2/6] =?UTF-8?q?#540=20[FEAT]=20:=20=ED=8C=8C=EC=9D=B4?= =?UTF-8?q?=EC=96=B4=EB=B2=A0=EC=9D=B4=EC=8A=A4=20=EB=A1=9C=EA=B7=B8=20?= =?UTF-8?q?=EB=8B=AC=EA=B8=B0(Register)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../beme/signup/view/ImageChooseFragment.kt | 17 +++++++++++++++++ .../beme/signup/view/PermissionInfoFragment.kt | 16 ++++++++++++++++ .../beme/signup/view/PersonalInfoFragment.kt | 17 +++++++++++++++++ .../teambeme/beme/signup/view/TermFragment.kt | 16 ++++++++++++++++ 4 files changed, 66 insertions(+) diff --git a/app/src/main/java/com/teambeme/beme/signup/view/ImageChooseFragment.kt b/app/src/main/java/com/teambeme/beme/signup/view/ImageChooseFragment.kt index 0aa6244..5be9e0b 100644 --- a/app/src/main/java/com/teambeme/beme/signup/view/ImageChooseFragment.kt +++ b/app/src/main/java/com/teambeme/beme/signup/view/ImageChooseFragment.kt @@ -2,6 +2,7 @@ package com.teambeme.beme.signup.view import android.Manifest import android.app.Activity +import android.content.Context import android.content.Intent import android.graphics.Bitmap import android.graphics.BitmapFactory @@ -15,6 +16,10 @@ import androidx.databinding.DataBindingUtil import androidx.fragment.app.Fragment import androidx.fragment.app.activityViewModels import androidx.navigation.findNavController +import com.google.firebase.analytics.FirebaseAnalytics +import com.google.firebase.analytics.ktx.analytics +import com.google.firebase.analytics.ktx.logEvent +import com.google.firebase.ktx.Firebase import com.gun0912.tedpermission.PermissionListener import com.gun0912.tedpermission.TedPermission import com.teambeme.beme.R @@ -33,6 +38,14 @@ import java.io.File class ImageChooseFragment : Fragment() { private lateinit var binding: FragmentImageChooseBinding private val signUpViewModel: SignUpViewModel by activityViewModels() + override fun onAttach(context: Context) { + super.onAttach(context) + Firebase.analytics.logEvent(FirebaseAnalytics.Event.SCREEN_VIEW) { + param(FirebaseAnalytics.Param.SCREEN_CLASS, "SignUpActivity") + param(FirebaseAnalytics.Param.SCREEN_NAME, "PROFILE_SIGN") + } + } + override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, @@ -44,6 +57,10 @@ class ImageChooseFragment : Fragment() { binding.lifecycleOwner = viewLifecycleOwner binding.btnBack.setOnClickListener { view -> + Firebase.analytics.logEvent(FirebaseAnalytics.Event.SELECT_ITEM) { + param(FirebaseAnalytics.Param.CONTENT_TYPE, "BACK_PRESS") + param(FirebaseAnalytics.Param.ITEM_ID, "OUT_INF_SIGN") + } view.findNavController().popBackStack() } diff --git a/app/src/main/java/com/teambeme/beme/signup/view/PermissionInfoFragment.kt b/app/src/main/java/com/teambeme/beme/signup/view/PermissionInfoFragment.kt index a2c1a82..a6d87a9 100644 --- a/app/src/main/java/com/teambeme/beme/signup/view/PermissionInfoFragment.kt +++ b/app/src/main/java/com/teambeme/beme/signup/view/PermissionInfoFragment.kt @@ -1,17 +1,29 @@ package com.teambeme.beme.signup.view +import android.content.Context import android.os.Bundle import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import androidx.fragment.app.Fragment import androidx.navigation.findNavController +import com.google.firebase.analytics.FirebaseAnalytics +import com.google.firebase.analytics.ktx.analytics +import com.google.firebase.analytics.ktx.logEvent +import com.google.firebase.ktx.Firebase import com.teambeme.beme.R import com.teambeme.beme.databinding.FragmentPermissionInfoBinding class PermissionInfoFragment : Fragment() { private var _binding: FragmentPermissionInfoBinding? = null private val binding get() = _binding!! + override fun onAttach(context: Context) { + super.onAttach(context) + Firebase.analytics.logEvent(FirebaseAnalytics.Event.SCREEN_VIEW) { + param(FirebaseAnalytics.Param.SCREEN_CLASS, "SignUpActivity") + param(FirebaseAnalytics.Param.SCREEN_NAME, "GUIDANCE_SIGN") + } + } override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, @@ -22,6 +34,10 @@ class PermissionInfoFragment : Fragment() { view.findNavController().navigate(R.id.action_permissionInfoFragment_to_termFragment) } binding.btnPermissionBack.setOnClickListener { + Firebase.analytics.logEvent(FirebaseAnalytics.Event.SELECT_ITEM) { + param(FirebaseAnalytics.Param.CONTENT_TYPE, "BACK_PRESS") + param(FirebaseAnalytics.Param.ITEM_ID, "OUT_GUIDANCE_SIGN") + } requireActivity().finish() } return binding.root diff --git a/app/src/main/java/com/teambeme/beme/signup/view/PersonalInfoFragment.kt b/app/src/main/java/com/teambeme/beme/signup/view/PersonalInfoFragment.kt index 70d92c0..b618b28 100644 --- a/app/src/main/java/com/teambeme/beme/signup/view/PersonalInfoFragment.kt +++ b/app/src/main/java/com/teambeme/beme/signup/view/PersonalInfoFragment.kt @@ -1,5 +1,6 @@ package com.teambeme.beme.signup.view +import android.content.Context import android.os.Bundle import android.view.LayoutInflater import android.view.View @@ -9,6 +10,10 @@ import androidx.databinding.DataBindingUtil import androidx.fragment.app.Fragment import androidx.fragment.app.activityViewModels import androidx.navigation.findNavController +import com.google.firebase.analytics.FirebaseAnalytics +import com.google.firebase.analytics.ktx.analytics +import com.google.firebase.analytics.ktx.logEvent +import com.google.firebase.ktx.Firebase import com.teambeme.beme.R import com.teambeme.beme.databinding.FragmentPersonalInfoBinding import com.teambeme.beme.signup.viewmodel.SignUpViewModel @@ -16,6 +21,14 @@ import com.teambeme.beme.signup.viewmodel.SignUpViewModel class PersonalInfoFragment : Fragment() { private lateinit var binding: FragmentPersonalInfoBinding private val signUpViewModel: SignUpViewModel by activityViewModels() + override fun onAttach(context: Context) { + super.onAttach(context) + Firebase.analytics.logEvent(FirebaseAnalytics.Event.SCREEN_VIEW) { + param(FirebaseAnalytics.Param.SCREEN_CLASS, "SignUpActivity") + param(FirebaseAnalytics.Param.SCREEN_NAME, "INF_SIGN") + } + } + override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, @@ -26,6 +39,10 @@ class PersonalInfoFragment : Fragment() { binding.lifecycleOwner = viewLifecycleOwner binding.signUpViewModel = signUpViewModel binding.btnPersonalBack.setOnClickListener { view -> + Firebase.analytics.logEvent(FirebaseAnalytics.Event.SELECT_ITEM) { + param(FirebaseAnalytics.Param.CONTENT_TYPE, "BACK_PRESS") + param(FirebaseAnalytics.Param.ITEM_ID, "OUT_INF_SIGN") + } view.findNavController().popBackStack() } setDoubleCheckListener() diff --git a/app/src/main/java/com/teambeme/beme/signup/view/TermFragment.kt b/app/src/main/java/com/teambeme/beme/signup/view/TermFragment.kt index 92fa04f..cbede3d 100644 --- a/app/src/main/java/com/teambeme/beme/signup/view/TermFragment.kt +++ b/app/src/main/java/com/teambeme/beme/signup/view/TermFragment.kt @@ -1,5 +1,6 @@ package com.teambeme.beme.signup.view +import android.content.Context import android.os.Bundle import android.view.LayoutInflater import android.view.View @@ -9,6 +10,10 @@ import androidx.fragment.app.Fragment import androidx.fragment.app.activityViewModels import androidx.navigation.findNavController import androidx.navigation.fragment.findNavController +import com.google.firebase.analytics.FirebaseAnalytics +import com.google.firebase.analytics.ktx.analytics +import com.google.firebase.analytics.ktx.logEvent +import com.google.firebase.ktx.Firebase import com.teambeme.beme.R import com.teambeme.beme.databinding.FragmentTermBinding import com.teambeme.beme.signup.viewmodel.SignUpViewModel @@ -16,6 +21,13 @@ import com.teambeme.beme.signup.viewmodel.SignUpViewModel class TermFragment : Fragment() { private lateinit var binding: FragmentTermBinding private val signUpViewModel: SignUpViewModel by activityViewModels() + override fun onAttach(context: Context) { + super.onAttach(context) + Firebase.analytics.logEvent(FirebaseAnalytics.Event.SCREEN_VIEW) { + param(FirebaseAnalytics.Param.SCREEN_CLASS, "SignUpActivity") + param(FirebaseAnalytics.Param.SCREEN_NAME, "TERMS_SIGN") + } + } override fun onCreateView( inflater: LayoutInflater, @@ -26,6 +38,10 @@ class TermFragment : Fragment() { binding.viewModel = signUpViewModel binding.lifecycleOwner = viewLifecycleOwner binding.btnTermBack.setOnClickListener { view -> + Firebase.analytics.logEvent(FirebaseAnalytics.Event.SELECT_ITEM) { + param(FirebaseAnalytics.Param.CONTENT_TYPE, "BACK_PRESS") + param(FirebaseAnalytics.Param.ITEM_ID, "OUT_TERM_SIGN") + } view.findNavController().popBackStack() } doneButtonClickListener() From 43e7b1b87b40bf46c86aaa1300fff167adfeae31 Mon Sep 17 00:00:00 2001 From: Hyun Woo Lee Date: Sun, 28 Feb 2021 19:39:40 +0900 Subject: [PATCH 3/6] =?UTF-8?q?#540=20[FEAT]=20:=20=ED=8C=8C=EC=9D=B4?= =?UTF-8?q?=EC=96=B4=EB=B2=A0=EC=9D=B4=EC=8A=A4=20=EB=A1=9C=EA=B7=B8=20?= =?UTF-8?q?=EB=8B=AC=EA=B8=B0(Login)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/teambeme/beme/login/view/LoginActivity.kt | 8 +++++++- .../beme/signup/view/ImageChooseFragment.kt | 6 ++---- .../beme/signup/view/PermissionInfoFragment.kt | 6 ++---- .../beme/signup/view/PersonalInfoFragment.kt | 6 ++---- .../com/teambeme/beme/signup/view/TermFragment.kt | 6 ++---- .../com/teambeme/beme/util/FirebaseEventUtil.kt | 13 +++++++++++++ app/src/main/res/layout/activity_login.xml | 2 ++ 7 files changed, 30 insertions(+), 17 deletions(-) create mode 100644 app/src/main/java/com/teambeme/beme/util/FirebaseEventUtil.kt diff --git a/app/src/main/java/com/teambeme/beme/login/view/LoginActivity.kt b/app/src/main/java/com/teambeme/beme/login/view/LoginActivity.kt index 8282667..14497f9 100644 --- a/app/src/main/java/com/teambeme/beme/login/view/LoginActivity.kt +++ b/app/src/main/java/com/teambeme/beme/login/view/LoginActivity.kt @@ -23,6 +23,7 @@ import com.teambeme.beme.main.view.MainActivity import com.teambeme.beme.signup.view.SignUpActivity import com.teambeme.beme.util.KeyboardVisibilityUtils import com.teambeme.beme.util.StatusBarUtil +import com.teambeme.beme.util.recordClickEvent class LoginActivity : BindingActivity(R.layout.activity_login) { private lateinit var keyboardVisibilityUtils: KeyboardVisibilityUtils @@ -47,7 +48,12 @@ class LoginActivity : BindingActivity(R.layout.activity_lo private fun setUIListener() { with(binding) { - btnLoginSignup.setOnClickListener { startActivity(Intent(this@LoginActivity, SignUpActivity::class.java)) } + btnLoginSignup.setOnClickListener { + recordClickEvent("BUTTON", "CLICK_SIGN_SIGN") + startActivity(Intent(this@LoginActivity, SignUpActivity::class.java)) + } + btnRegisterFindId.setOnClickListener { recordClickEvent("BUTTON", "CLICK_SEARCHID_LOGIN") } + btnRegisterFindPassword.setOnClickListener { recordClickEvent("BUTTON", "CLICK_FINDPWD_LOGIN") } txtlayoutLoginPassword.setEndIconOnClickListener { loginViewModel?.setShowPassword() } } keyboardVisibilityUtils = KeyboardVisibilityUtils(window, diff --git a/app/src/main/java/com/teambeme/beme/signup/view/ImageChooseFragment.kt b/app/src/main/java/com/teambeme/beme/signup/view/ImageChooseFragment.kt index 5be9e0b..fdabfd8 100644 --- a/app/src/main/java/com/teambeme/beme/signup/view/ImageChooseFragment.kt +++ b/app/src/main/java/com/teambeme/beme/signup/view/ImageChooseFragment.kt @@ -25,6 +25,7 @@ import com.gun0912.tedpermission.TedPermission import com.teambeme.beme.R import com.teambeme.beme.databinding.FragmentImageChooseBinding import com.teambeme.beme.signup.viewmodel.SignUpViewModel +import com.teambeme.beme.util.recordClickEvent import com.theartofdev.edmodo.cropper.CropImage import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers @@ -57,10 +58,7 @@ class ImageChooseFragment : Fragment() { binding.lifecycleOwner = viewLifecycleOwner binding.btnBack.setOnClickListener { view -> - Firebase.analytics.logEvent(FirebaseAnalytics.Event.SELECT_ITEM) { - param(FirebaseAnalytics.Param.CONTENT_TYPE, "BACK_PRESS") - param(FirebaseAnalytics.Param.ITEM_ID, "OUT_INF_SIGN") - } + recordClickEvent("BACK_PRESS", "OUT_PROFILE_SIGN") view.findNavController().popBackStack() } diff --git a/app/src/main/java/com/teambeme/beme/signup/view/PermissionInfoFragment.kt b/app/src/main/java/com/teambeme/beme/signup/view/PermissionInfoFragment.kt index a6d87a9..e18bb73 100644 --- a/app/src/main/java/com/teambeme/beme/signup/view/PermissionInfoFragment.kt +++ b/app/src/main/java/com/teambeme/beme/signup/view/PermissionInfoFragment.kt @@ -13,6 +13,7 @@ import com.google.firebase.analytics.ktx.logEvent import com.google.firebase.ktx.Firebase import com.teambeme.beme.R import com.teambeme.beme.databinding.FragmentPermissionInfoBinding +import com.teambeme.beme.util.recordClickEvent class PermissionInfoFragment : Fragment() { private var _binding: FragmentPermissionInfoBinding? = null @@ -34,10 +35,7 @@ class PermissionInfoFragment : Fragment() { view.findNavController().navigate(R.id.action_permissionInfoFragment_to_termFragment) } binding.btnPermissionBack.setOnClickListener { - Firebase.analytics.logEvent(FirebaseAnalytics.Event.SELECT_ITEM) { - param(FirebaseAnalytics.Param.CONTENT_TYPE, "BACK_PRESS") - param(FirebaseAnalytics.Param.ITEM_ID, "OUT_GUIDANCE_SIGN") - } + recordClickEvent("BACK_PRESS", "OUT_GUIDANCE_SIGN") requireActivity().finish() } return binding.root diff --git a/app/src/main/java/com/teambeme/beme/signup/view/PersonalInfoFragment.kt b/app/src/main/java/com/teambeme/beme/signup/view/PersonalInfoFragment.kt index b618b28..7eb4746 100644 --- a/app/src/main/java/com/teambeme/beme/signup/view/PersonalInfoFragment.kt +++ b/app/src/main/java/com/teambeme/beme/signup/view/PersonalInfoFragment.kt @@ -17,6 +17,7 @@ import com.google.firebase.ktx.Firebase import com.teambeme.beme.R import com.teambeme.beme.databinding.FragmentPersonalInfoBinding import com.teambeme.beme.signup.viewmodel.SignUpViewModel +import com.teambeme.beme.util.recordClickEvent class PersonalInfoFragment : Fragment() { private lateinit var binding: FragmentPersonalInfoBinding @@ -39,10 +40,7 @@ class PersonalInfoFragment : Fragment() { binding.lifecycleOwner = viewLifecycleOwner binding.signUpViewModel = signUpViewModel binding.btnPersonalBack.setOnClickListener { view -> - Firebase.analytics.logEvent(FirebaseAnalytics.Event.SELECT_ITEM) { - param(FirebaseAnalytics.Param.CONTENT_TYPE, "BACK_PRESS") - param(FirebaseAnalytics.Param.ITEM_ID, "OUT_INF_SIGN") - } + recordClickEvent("BACK_PRESS", "OUT_INF_SIGN") view.findNavController().popBackStack() } setDoubleCheckListener() diff --git a/app/src/main/java/com/teambeme/beme/signup/view/TermFragment.kt b/app/src/main/java/com/teambeme/beme/signup/view/TermFragment.kt index cbede3d..5dd5932 100644 --- a/app/src/main/java/com/teambeme/beme/signup/view/TermFragment.kt +++ b/app/src/main/java/com/teambeme/beme/signup/view/TermFragment.kt @@ -17,6 +17,7 @@ import com.google.firebase.ktx.Firebase import com.teambeme.beme.R import com.teambeme.beme.databinding.FragmentTermBinding import com.teambeme.beme.signup.viewmodel.SignUpViewModel +import com.teambeme.beme.util.recordClickEvent class TermFragment : Fragment() { private lateinit var binding: FragmentTermBinding @@ -38,10 +39,7 @@ class TermFragment : Fragment() { binding.viewModel = signUpViewModel binding.lifecycleOwner = viewLifecycleOwner binding.btnTermBack.setOnClickListener { view -> - Firebase.analytics.logEvent(FirebaseAnalytics.Event.SELECT_ITEM) { - param(FirebaseAnalytics.Param.CONTENT_TYPE, "BACK_PRESS") - param(FirebaseAnalytics.Param.ITEM_ID, "OUT_TERM_SIGN") - } + recordClickEvent("BACK_PRESS", "OUT_TERM_SIGN") view.findNavController().popBackStack() } doneButtonClickListener() diff --git a/app/src/main/java/com/teambeme/beme/util/FirebaseEventUtil.kt b/app/src/main/java/com/teambeme/beme/util/FirebaseEventUtil.kt new file mode 100644 index 0000000..4c8394b --- /dev/null +++ b/app/src/main/java/com/teambeme/beme/util/FirebaseEventUtil.kt @@ -0,0 +1,13 @@ +package com.teambeme.beme.util + +import com.google.firebase.analytics.FirebaseAnalytics +import com.google.firebase.analytics.ktx.analytics +import com.google.firebase.analytics.ktx.logEvent +import com.google.firebase.ktx.Firebase + +fun recordClickEvent(contentType: String, itemId: String) { + Firebase.analytics.logEvent(FirebaseAnalytics.Event.SELECT_ITEM) { + param(FirebaseAnalytics.Param.CONTENT_TYPE, contentType) + param(FirebaseAnalytics.Param.ITEM_ID, itemId) + } +} \ No newline at end of file diff --git a/app/src/main/res/layout/activity_login.xml b/app/src/main/res/layout/activity_login.xml index bc57242..4c58929 100644 --- a/app/src/main/res/layout/activity_login.xml +++ b/app/src/main/res/layout/activity_login.xml @@ -148,6 +148,7 @@ app:layout_constraintBottom_toBottomOf="parent"> @@ -158,6 +159,7 @@ android:text="|" /> From ff936a8ef77d6ad16a6cdb4592b947ddef465db5 Mon Sep 17 00:00:00 2001 From: Hyun Woo Lee Date: Sun, 28 Feb 2021 20:11:39 +0900 Subject: [PATCH 4/6] =?UTF-8?q?#540=20[FEAT]=20:=20=ED=8C=8C=EC=9D=B4?= =?UTF-8?q?=EC=96=B4=EB=B2=A0=EC=9D=B4=EC=8A=A4=20=EB=A1=9C=EA=B7=B8=20?= =?UTF-8?q?=EB=8B=AC=EA=B8=B0(Answer,=20Explore)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../teambeme/beme/answer/view/AnswerActivity.kt | 5 +++++ .../beme/explore/adapter/OtherMindsRcvAdapter.kt | 2 ++ .../teambeme/beme/explore/view/ExploreFragment.kt | 14 ++++++++++++++ 3 files changed, 21 insertions(+) diff --git a/app/src/main/java/com/teambeme/beme/answer/view/AnswerActivity.kt b/app/src/main/java/com/teambeme/beme/answer/view/AnswerActivity.kt index 64b134c..fa7dda3 100644 --- a/app/src/main/java/com/teambeme/beme/answer/view/AnswerActivity.kt +++ b/app/src/main/java/com/teambeme/beme/answer/view/AnswerActivity.kt @@ -26,6 +26,7 @@ import com.teambeme.beme.data.remote.singleton.RetrofitObjects import com.teambeme.beme.databinding.ActivityAnswerBinding import com.teambeme.beme.util.StatusBarUtil import com.teambeme.beme.util.dp +import com.teambeme.beme.util.recordClickEvent import kotlinx.coroutines.delay import kotlinx.coroutines.launch @@ -145,6 +146,7 @@ class AnswerActivity : BindingActivity(R.layout.activity_ val layoutParams = binding.linearAnswerPublic.layoutParams!! as ConstraintLayout.LayoutParams if (isPublic) { + recordClickEvent("SWITCH", "OPEN_ANSWER_ANSWERVIEW") val animator = setValueChangeAnimator(20.dp, 64.dp) val alphaAnimator = ValueAnimator.ofFloat(0f, 1f).apply { duration = 400 @@ -158,6 +160,7 @@ class AnswerActivity : BindingActivity(R.layout.activity_ binding.linearAnswerBlockComment.alpha = it.animatedValue as Float } } else { + recordClickEvent("SWITCH", "PRIVATE_ANSWER_ANSWERVIEW") val animator = setValueChangeAnimator(64.dp, 20.dp) animator.addUpdateListener { updatedAnimation -> layoutParams.setMargins(0, 0, 0, updatedAnimation.animatedValue as Int) @@ -174,6 +177,8 @@ class AnswerActivity : BindingActivity(R.layout.activity_ } binding.switchAnswerReplyCancel.setOnCheckedChangeListener { _, isChecked -> + if (isChecked) recordClickEvent("SWITCH", "OPEN_COMMENT_ANSWERVIEW") + else recordClickEvent("SWITCH", "PRIVATE_COMMENT_ANSWERVIEW") answerViewModel.setCommentBlockedStatus(isChecked) } } diff --git a/app/src/main/java/com/teambeme/beme/explore/adapter/OtherMindsRcvAdapter.kt b/app/src/main/java/com/teambeme/beme/explore/adapter/OtherMindsRcvAdapter.kt index d683068..823994b 100644 --- a/app/src/main/java/com/teambeme/beme/explore/adapter/OtherMindsRcvAdapter.kt +++ b/app/src/main/java/com/teambeme/beme/explore/adapter/OtherMindsRcvAdapter.kt @@ -13,6 +13,7 @@ import com.teambeme.beme.databinding.ItemExploreOtherMindsBinding import com.teambeme.beme.detail.view.DetailActivity import com.teambeme.beme.explore.model.ResponseExplorationMinds import com.teambeme.beme.explore.view.ExploreDetailActivity +import com.teambeme.beme.util.recordClickEvent import com.teambeme.beme.util.startActivity class OtherMindsRcvAdapter(private val context: Context) : @@ -52,6 +53,7 @@ class OtherMindsRcvAdapter(private val context: Context) : context: Context ) { binding.btnOtherMindsShowOtherAnswers.setOnClickListener { + recordClickEvent("BUTTON", "CLICK_SAME") context.startActivity(otherMindsData.questionTitle, otherMindsData.questionId) } } diff --git a/app/src/main/java/com/teambeme/beme/explore/view/ExploreFragment.kt b/app/src/main/java/com/teambeme/beme/explore/view/ExploreFragment.kt index 1f97519..431dc18 100644 --- a/app/src/main/java/com/teambeme/beme/explore/view/ExploreFragment.kt +++ b/app/src/main/java/com/teambeme/beme/explore/view/ExploreFragment.kt @@ -24,6 +24,7 @@ import com.teambeme.beme.explore.viewmodel.ExploreViewModelFactory import com.teambeme.beme.home.view.HomeFragment import com.teambeme.beme.idsearchfollowing.view.FollowingAfterIdSearchActivity import com.teambeme.beme.notification.view.NotificationActivity +import com.teambeme.beme.util.recordClickEvent class ExploreFragment : BindingFragment(R.layout.fragment_explore) { private val exploreViewModelFactory = ExploreViewModelFactory( @@ -65,9 +66,21 @@ class ExploreFragment : BindingFragment(R.layout.fragmen setIsMorePageObserve() setIntentAnswerObserve() setListenerForPullRefreshLayout() + setChipListener() return binding.root } + private fun setChipListener() { + with(binding) { + chipExploreThink.setOnClickListener { recordClickEvent("BUTTON", "CLICK_VALUES_SEARCH") } + chipExploreRelationship.setOnClickListener { recordClickEvent("BUTTON", "CLICK_RELATIONSHIP_SEARCH") } + chipExploreLove.setOnClickListener { recordClickEvent("BUTTON", "CLICK_LOVE_SEARCH") } + chipExploreDaily.setOnClickListener { recordClickEvent("BUTTON", "CLICK_DAILYLIFE_SEARCH") } + chipExploreMe.setOnClickListener { recordClickEvent("BUTTON", "CLICK_ABOUTME_SEARCH") } + chipExploreStory.setOnClickListener { recordClickEvent("BUTTON", "CLICK_STORY_SEARCH") } + } + } + private fun setIntentAnswerObserve() { exploreViewModel.questionForFirstAnswer.observe(viewLifecycleOwner) { it?.let { @@ -183,6 +196,7 @@ class ExploreFragment : BindingFragment(R.layout.fragmen private fun setClickListenerForIdSearchButton() { binding.btnExploreIdSearch.setOnClickListener { + recordClickEvent("BUTTON", "CLICK_SEARCHID_SEARCH") val intent = Intent(activity, FollowingAfterIdSearchActivity::class.java) startActivity(intent) } From 0090c4e148218af4ba4fce72ad95a03296ebdc67 Mon Sep 17 00:00:00 2001 From: Hyun Woo Lee Date: Sun, 28 Feb 2021 20:28:32 +0900 Subject: [PATCH 5/6] =?UTF-8?q?#540=20[FEAT]=20:=20=ED=8C=8C=EC=9D=B4?= =?UTF-8?q?=EC=96=B4=EB=B2=A0=EC=9D=B4=EC=8A=A4=20=EB=A1=9C=EA=B7=B8=20?= =?UTF-8?q?=EB=8B=AC=EA=B8=B0(Following)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../beme/explore/adapter/OtherQuestionsRcvAdapter.kt | 2 ++ .../com/teambeme/beme/following/view/FollowingFragment.kt | 2 ++ .../beme/idsearchfollowing/adapter/IdSearchAdapter.kt | 3 +++ .../view/FollowingAfterIdSearchActivity.kt | 6 ++---- 4 files changed, 9 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/com/teambeme/beme/explore/adapter/OtherQuestionsRcvAdapter.kt b/app/src/main/java/com/teambeme/beme/explore/adapter/OtherQuestionsRcvAdapter.kt index 216ff15..42c18de 100644 --- a/app/src/main/java/com/teambeme/beme/explore/adapter/OtherQuestionsRcvAdapter.kt +++ b/app/src/main/java/com/teambeme/beme/explore/adapter/OtherQuestionsRcvAdapter.kt @@ -21,6 +21,7 @@ import com.teambeme.beme.explore.view.ExploreDetailActivity import com.teambeme.beme.explore.viewmodel.ExploreViewModel import com.teambeme.beme.following.viewmodel.FollowingViewModel import com.teambeme.beme.otherpage.view.OtherPageActivity +import com.teambeme.beme.util.recordClickEvent import com.teambeme.beme.util.startActivity class OtherQuestionsRcvAdapter( @@ -177,6 +178,7 @@ class OtherQuestionsRcvAdapter( ) { binding.btnOtherQuestionsDoAnswer.setOnClickListener { Log.d("answer", "adapter") + recordClickEvent("BUTTON", "CLICK_ANSWERCHECK_FOLLOWING") otherQuestionButtonClickListener?.otherQuestionAnswerClickListener(otherQuestionsData.questionId) } } diff --git a/app/src/main/java/com/teambeme/beme/following/view/FollowingFragment.kt b/app/src/main/java/com/teambeme/beme/following/view/FollowingFragment.kt index e8e6187..b1c8844 100644 --- a/app/src/main/java/com/teambeme/beme/following/view/FollowingFragment.kt +++ b/app/src/main/java/com/teambeme/beme/following/view/FollowingFragment.kt @@ -24,6 +24,7 @@ import com.teambeme.beme.following.viewmodel.FollowingViewModel import com.teambeme.beme.following.viewmodel.FollowingViewModelFactory import com.teambeme.beme.idsearchfollowing.view.FollowingAfterIdSearchActivity import com.teambeme.beme.notification.view.NotificationActivity +import com.teambeme.beme.util.recordClickEvent class FollowingFragment : BindingFragment(R.layout.fragment_following) { private val followingViewModelFactory = FollowingViewModelFactory( @@ -273,6 +274,7 @@ class FollowingFragment : BindingFragment(R.layout.fra private fun setClickListenerForIdSearchButton() { binding.btnFollowingIdSearch.setOnClickListener { + recordClickEvent("BUTTON", "CLICK_SEARCHID_FOLLOWING") val intent = Intent(activity, FollowingAfterIdSearchActivity::class.java) startActivity(intent) } diff --git a/app/src/main/java/com/teambeme/beme/idsearchfollowing/adapter/IdSearchAdapter.kt b/app/src/main/java/com/teambeme/beme/idsearchfollowing/adapter/IdSearchAdapter.kt index 268b560..d2230b1 100644 --- a/app/src/main/java/com/teambeme/beme/idsearchfollowing/adapter/IdSearchAdapter.kt +++ b/app/src/main/java/com/teambeme/beme/idsearchfollowing/adapter/IdSearchAdapter.kt @@ -14,6 +14,7 @@ import com.teambeme.beme.databinding.ItemFollowingAfterIdsearchBinding import com.teambeme.beme.idsearchfollowing.model.ResponseIdSearchData import com.teambeme.beme.idsearchfollowing.viewmodel.IdSearchViewModel import com.teambeme.beme.otherpage.view.OtherPageActivity +import com.teambeme.beme.util.recordClickEvent class IdSearchAdapter( private val viewModel: IdSearchViewModel @@ -87,6 +88,7 @@ class IdSearchAdapter( ) { binding.btnFollowingFollowing.setOnClickListener { viewModel.requestFollowAndFollowing(data.id) + recordClickEvent("BUTTON", "FOLLOW_SEARCHID_FALSE") binding.btnFollowingFollow.visibility = View.VISIBLE binding.btnFollowingFollowing.visibility = View.INVISIBLE } @@ -99,6 +101,7 @@ class IdSearchAdapter( ) { binding.btnFollowingFollow.setOnClickListener { viewModel.requestFollowAndFollowing(data.id) + recordClickEvent("BUTTON", "FOLLOW_SEARCHID_TRUE") binding.btnFollowingFollow.visibility = View.INVISIBLE binding.btnFollowingFollowing.visibility = View.VISIBLE } diff --git a/app/src/main/java/com/teambeme/beme/idsearchfollowing/view/FollowingAfterIdSearchActivity.kt b/app/src/main/java/com/teambeme/beme/idsearchfollowing/view/FollowingAfterIdSearchActivity.kt index 4c9bf2c..ab75af3 100644 --- a/app/src/main/java/com/teambeme/beme/idsearchfollowing/view/FollowingAfterIdSearchActivity.kt +++ b/app/src/main/java/com/teambeme/beme/idsearchfollowing/view/FollowingAfterIdSearchActivity.kt @@ -59,10 +59,8 @@ class FollowingAfterIdSearchActivity : } private fun initBinding(binding: ActivityFollowingAfterIdSearchBinding) { - binding.apply { - idSearchViewModel = idSearchViewModel - lifecycleOwner = this@FollowingAfterIdSearchActivity - } + binding.idSearchViewModel = idSearchViewModel + binding.lifecycleOwner = this@FollowingAfterIdSearchActivity } private fun setRecentSearchAdapter(binding: ActivityFollowingAfterIdSearchBinding) { From f2087b62f5fc5a182b7914cbbee3c98815f027c4 Mon Sep 17 00:00:00 2001 From: Hyun Woo Lee Date: Sun, 28 Feb 2021 20:53:53 +0900 Subject: [PATCH 6/6] =?UTF-8?q?#540=20[FEAT]=20:=20=ED=8C=8C=EC=9D=B4?= =?UTF-8?q?=EC=96=B4=EB=B2=A0=EC=9D=B4=EC=8A=A4=20=EB=A1=9C=EA=B7=B8=20?= =?UTF-8?q?=EB=8B=AC=EA=B8=B0(MyPage)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../beme/mypage/model/CategoryFilter.kt | 22 +++++++++++++++++++ .../teambeme/beme/mypage/model/PublicRange.kt | 19 ++++++++++++++++ .../beme/mypage/view/BottomWriteFragment.kt | 6 ++++- .../beme/mypage/view/MyWriteFragment.kt | 5 +++++ .../notification/adapter/NoticeAdapter.kt | 2 ++ app/src/main/res/layout/fragment_my_write.xml | 1 - 6 files changed, 53 insertions(+), 2 deletions(-) create mode 100644 app/src/main/java/com/teambeme/beme/mypage/model/CategoryFilter.kt create mode 100644 app/src/main/java/com/teambeme/beme/mypage/model/PublicRange.kt diff --git a/app/src/main/java/com/teambeme/beme/mypage/model/CategoryFilter.kt b/app/src/main/java/com/teambeme/beme/mypage/model/CategoryFilter.kt new file mode 100644 index 0000000..0ded555 --- /dev/null +++ b/app/src/main/java/com/teambeme/beme/mypage/model/CategoryFilter.kt @@ -0,0 +1,22 @@ +package com.teambeme.beme.mypage.model + +import com.teambeme.beme.R + +enum class CategoryFilter( + private val checkId: Int, + private val itemId: String +) { + VALUES(R.id.chip_write_1, "CLICK_VALUES_MPFILTER"), + RELATIONSHIP(R.id.chip_write_2, "CLICK_RELATIONSHIP_MPFILTER"), + LOVE(R.id.chip_write_3, "CLICK_LOVE_MPFILTER"), + DAILYLIFE(R.id.chip_write_4, "CLICK_DAILYLIFE_MPFILTER"), + ME(R.id.chip_write_5, "CLICK_ME_MPFILTER"), + STORY(R.id.chip_write_6, "CLICK_STORY_MPFILTER"); + + companion object { + fun asItemId(checkId: Int): String { + return values().find { it.checkId == checkId }?.itemId + ?: throw IllegalArgumentException("무슨 범위여 이게 $checkId") + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/teambeme/beme/mypage/model/PublicRange.kt b/app/src/main/java/com/teambeme/beme/mypage/model/PublicRange.kt new file mode 100644 index 0000000..ceb601d --- /dev/null +++ b/app/src/main/java/com/teambeme/beme/mypage/model/PublicRange.kt @@ -0,0 +1,19 @@ +package com.teambeme.beme.mypage.model + +import com.teambeme.beme.R + +enum class PublicRange( + private val checkId: Int, + private val itemId: String +) { + ALL(R.id.chip_range_1, "CLICK_ALL_MPFILTER"), + OPEN(R.id.chip_range_2, "CLICK_OPEN_MPFILTER"), + PRIVATE(R.id.chip_range_3, "CLICK_PRIVATE_MPFILTER"); + + companion object { + fun asItemId(checkId: Int): String { + return values().find { it.checkId == checkId }?.itemId + ?: throw IllegalArgumentException("무슨 범위여 이게 $checkId") + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/teambeme/beme/mypage/view/BottomWriteFragment.kt b/app/src/main/java/com/teambeme/beme/mypage/view/BottomWriteFragment.kt index 4fc6866..7a6e32a 100644 --- a/app/src/main/java/com/teambeme/beme/mypage/view/BottomWriteFragment.kt +++ b/app/src/main/java/com/teambeme/beme/mypage/view/BottomWriteFragment.kt @@ -11,9 +11,12 @@ import com.teambeme.beme.R import com.teambeme.beme.data.remote.datasource.MyPageDataSourceImpl import com.teambeme.beme.data.remote.singleton.RetrofitObjects import com.teambeme.beme.databinding.ItemBottomWriteBinding +import com.teambeme.beme.mypage.model.CategoryFilter +import com.teambeme.beme.mypage.model.PublicRange import com.teambeme.beme.mypage.repository.MyPageRepositoryImpl import com.teambeme.beme.mypage.viewmodel.MyPageViewModel import com.teambeme.beme.mypage.viewmodel.MyPageViewModelFactory +import com.teambeme.beme.util.recordClickEvent class BottomWriteFragment(private val filter: Boolean) : BottomSheetDialogFragment() { private lateinit var binding: ItemBottomWriteBinding @@ -39,12 +42,13 @@ class BottomWriteFragment(private val filter: Boolean) : BottomSheetDialogFragme dismiss() } binding.chipGroupRange.setOnCheckedChangeListener { group, checkedId -> + recordClickEvent("BUTTON", PublicRange.asItemId(checkedId)) setRangeOnCheckedListner(checkedId) } binding.chipGroupWriteCategori.setOnCheckedChangeListener { group, checkedId -> + recordClickEvent("BUTTON", CategoryFilter.asItemId(checkedId)) setWriteOnCheckedListener(checkedId) } - return binding.root } diff --git a/app/src/main/java/com/teambeme/beme/mypage/view/MyWriteFragment.kt b/app/src/main/java/com/teambeme/beme/mypage/view/MyWriteFragment.kt index 621a9ca..b546fed 100644 --- a/app/src/main/java/com/teambeme/beme/mypage/view/MyWriteFragment.kt +++ b/app/src/main/java/com/teambeme/beme/mypage/view/MyWriteFragment.kt @@ -20,6 +20,7 @@ import com.teambeme.beme.mypage.repository.MyPageRepositoryImpl import com.teambeme.beme.mypage.view.BottomWriteFragment.Companion.WRITE_FILTER import com.teambeme.beme.mypage.viewmodel.MyPageViewModel import com.teambeme.beme.mypage.viewmodel.MyPageViewModelFactory +import com.teambeme.beme.util.recordClickEvent class MyWriteFragment : Fragment() { private lateinit var binding: FragmentMyWriteBinding @@ -56,6 +57,10 @@ class MyWriteFragment : Fragment() { mypageViewModel.isAnswerEmpty.observe(viewLifecycleOwner) { isEmptyListener(it) } + binding.imgWriteFilter.setOnClickListener { + recordClickEvent("BUTTON", "CLICK_FILTER_MYPAGE") + mypageViewModel.writeFilterOnClick() + } setSearchView() return binding.root } diff --git a/app/src/main/java/com/teambeme/beme/notification/adapter/NoticeAdapter.kt b/app/src/main/java/com/teambeme/beme/notification/adapter/NoticeAdapter.kt index 9c318ec..539bab3 100644 --- a/app/src/main/java/com/teambeme/beme/notification/adapter/NoticeAdapter.kt +++ b/app/src/main/java/com/teambeme/beme/notification/adapter/NoticeAdapter.kt @@ -13,6 +13,7 @@ import com.teambeme.beme.databinding.ItemRecentActivitiesBinding import com.teambeme.beme.detail.view.DetailActivity import com.teambeme.beme.notification.model.ResponseNoticeData import com.teambeme.beme.otherpage.view.OtherPageActivity +import com.teambeme.beme.util.recordClickEvent class NoticeAdapter : ListAdapter(NoticeDiffUtil()) { @@ -46,6 +47,7 @@ class NoticeAdapter : view.context.startActivity(intent) } itemView.setOnClickListener { view -> + recordClickEvent("BUTTON", "CLCIK_ALARM") if (getItem(position).questionTitle != null) { val intent = Intent(view.context, DetailActivity::class.java) intent.putExtra("answerId", getItem(holder.adapterPosition).answerId) diff --git a/app/src/main/res/layout/fragment_my_write.xml b/app/src/main/res/layout/fragment_my_write.xml index 3be9133..fc19091 100644 --- a/app/src/main/res/layout/fragment_my_write.xml +++ b/app/src/main/res/layout/fragment_my_write.xml @@ -43,7 +43,6 @@ android:layout_height="wrap_content" android:layout_marginEnd="28dp" android:backgroundTint="@android:color/transparent" - android:onClick="@{() -> myPageViewModel.writeFilterOnClick()}" app:layout_constraintBottom_toBottomOf="@+id/search_view_write_search" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintTop_toTopOf="@+id/search_view_write_search"