From e98df9a54f4707921737cf3ab28e7d298109d06b Mon Sep 17 00:00:00 2001 From: Grandelwald <91423342+Grandelwald@users.noreply.github.com> Date: Sat, 2 Jul 2022 17:18:27 +0900 Subject: [PATCH 1/5] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index a3258fe1..7c2b88cb 100644 --- a/README.md +++ b/README.md @@ -20,7 +20,7 @@ | 이창환 | 조재훈 | 이호재 | 손연주 | |:-------:|:-------:|:-------:|:-------:| | | | | | -| 홈, 방생성 역할 담당 | 습관방 역할 담당 | 보관함 역할 담당 | 온보딩 , 로그인 , 피드 역할 담당| +| 홈, 방생성 역할 담당 | 습관방 역할 담당 | 온보딩 , 보관함 역할 담당 | 로그인 , 피드 역할 담당| ## ⚡️팀 협업 방식 ### 🔥Branch 전략 From 34b97638b9fac00230401d363bf69a9d0a070801 Mon Sep 17 00:00:00 2001 From: Yunjoo Son Date: Fri, 23 Sep 2022 16:47:06 +0900 Subject: [PATCH 2/5] =?UTF-8?q?#540=20[feat]=20=ED=91=B8=EC=89=AC=EC=95=8C?= =?UTF-8?q?=EB=A6=BC=20=ED=81=B4=EB=A6=AD=EC=9C=BC=EB=A1=9C=20=EC=95=B1=20?= =?UTF-8?q?=EC=8B=A4=ED=96=89=20=EC=8B=9C=20=EC=B9=B4=ED=85=8C=EA=B3=A0?= =?UTF-8?q?=EB=A6=AC=20=EB=B3=84=20=ED=99=94=EB=A9=B4=20=EC=9D=B4=EB=8F=99?= =?UTF-8?q?=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/AndroidManifest.xml | 1 + .../android/SparkMessagingService.kt | 46 ++++++++++++++----- .../android/ui/intro/IntroActivity.kt | 3 ++ .../android/ui/main/MainActivity.kt | 33 ++++++++++++- 4 files changed, 70 insertions(+), 13 deletions(-) diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index b416174d..09d28f8b 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -21,6 +21,7 @@ android:fullBackupOnly="false" android:icon="@mipmap/ic_app_logo" android:label="@string/app_name" + android:launchMode="singleInstance" android:roundIcon="@mipmap/ic_app_logo_round" android:supportsRtl="true" android:theme="@style/Theme.SparkAndroid"> diff --git a/app/src/main/java/com/teamsparker/android/SparkMessagingService.kt b/app/src/main/java/com/teamsparker/android/SparkMessagingService.kt index 4ff65016..e99e985b 100644 --- a/app/src/main/java/com/teamsparker/android/SparkMessagingService.kt +++ b/app/src/main/java/com/teamsparker/android/SparkMessagingService.kt @@ -10,6 +10,7 @@ import androidx.core.app.NotificationCompat import com.google.firebase.messaging.FirebaseMessagingService import com.google.firebase.messaging.RemoteMessage import com.teamsparker.android.ui.intro.IntroActivity +import com.teamsparker.android.ui.main.MainActivity import com.teamsparker.android.util.ImageCropUtil import com.teamsparker.android.util.useBitmapImg import timber.log.Timber @@ -29,10 +30,9 @@ class SparkMessagingService : FirebaseMessagingService() { override fun onMessageReceived(remoteMessage: RemoteMessage) { super.onMessageReceived(remoteMessage) if (remoteMessage.data.isNotEmpty()) { - if (remoteMessage.data["imageUrl"].toString().isNotBlank()) { - transformImageUrlToBitmap(remoteMessage) - } else { - createNotificationWithoutImage(remoteMessage) + when (remoteMessage.data["category"].toString()) { + CERTIFICATION -> transformImageUrlToBitmap(remoteMessage) + else -> createNotificationWithoutImage(remoteMessage) } } } @@ -52,11 +52,20 @@ class SparkMessagingService : FirebaseMessagingService() { private fun createNotificationWithoutImage(remoteMessage: RemoteMessage) { val alarmId = remoteMessage.sentTime.toInt() val category = remoteMessage.data["category"].toString() + val roomId = requireNotNull(remoteMessage.data["roomId"]).toInt() val intent = Intent(this, IntroActivity::class.java).apply { putExtra(OPEN_FROM_PUSH_ALARM, category) + putExtra(ROOM_ID, roomId) + flags = Intent.FLAG_ACTIVITY_SINGLE_TOP or Intent.FLAG_ACTIVITY_CLEAR_TOP } + val pendingIntent = - PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_IMMUTABLE) + PendingIntent.getActivity( + this, + 0, + intent, + PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE + ) val builder = NotificationCompat.Builder(this, getChannelId(category)) .setContentTitle(remoteMessage.data["title"].toString()) @@ -72,11 +81,18 @@ class SparkMessagingService : FirebaseMessagingService() { private fun createNotificationWithImage(remoteMessage: RemoteMessage, bitmap: Bitmap) { val alarmId = remoteMessage.sentTime.toInt() val category = remoteMessage.data["category"].toString() - val intent = Intent(this, IntroActivity::class.java).apply { + val intent = Intent(this, MainActivity::class.java).apply { putExtra(OPEN_FROM_PUSH_ALARM, category) + flags = Intent.FLAG_ACTIVITY_SINGLE_TOP or Intent.FLAG_ACTIVITY_CLEAR_TOP } + val pendingIntent = - PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_IMMUTABLE) + PendingIntent.getActivity( + this, + 0, + intent, + PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE + ) val builder = NotificationCompat.Builder(this, getChannelId(category)) .setContentTitle(remoteMessage.data["title"].toString()) .setContentText(remoteMessage.data["body"].toString()) @@ -129,10 +145,16 @@ class SparkMessagingService : FirebaseMessagingService() { companion object { const val OPEN_FROM_PUSH_ALARM = "openPushAlarm" - private val CATEGORY_CERTIFICATION = NotificationCategory(0, "certification") - private val CATEGORY_SPARK = NotificationCategory(1, "spark") - private val CATEGORY_REMIND = NotificationCategory(2, "remind") - private val CATEGORY_ROOM_START = NotificationCategory(3, "roomStart") - private val CATEGORY_CONSIDER = NotificationCategory(4, "consider") + const val ROOM_ID = "roomId" + const val CERTIFICATION = "certification" + const val SPARK = "spark" + const val REMIND = "remind" + const val ROOM_START = "roomStart" + const val CONSIDER = "consider" + private val CATEGORY_CERTIFICATION = NotificationCategory(0, CERTIFICATION) + private val CATEGORY_SPARK = NotificationCategory(1, SPARK) + private val CATEGORY_REMIND = NotificationCategory(2, REMIND) + private val CATEGORY_ROOM_START = NotificationCategory(3, ROOM_START) + private val CATEGORY_CONSIDER = NotificationCategory(4, CONSIDER) } } diff --git a/app/src/main/java/com/teamsparker/android/ui/intro/IntroActivity.kt b/app/src/main/java/com/teamsparker/android/ui/intro/IntroActivity.kt index 16cd0c1e..59498b1d 100644 --- a/app/src/main/java/com/teamsparker/android/ui/intro/IntroActivity.kt +++ b/app/src/main/java/com/teamsparker/android/ui/intro/IntroActivity.kt @@ -6,6 +6,7 @@ import android.net.Uri import android.os.Bundle import androidx.activity.viewModels import com.teamsparker.android.R +import com.teamsparker.android.SparkMessagingService import com.teamsparker.android.SparkMessagingService.Companion.OPEN_FROM_PUSH_ALARM import com.teamsparker.android.databinding.ActivityIntroBinding import com.teamsparker.android.ui.base.BaseActivity @@ -93,6 +94,8 @@ class IntroActivity : BaseActivity(R.layout.activity_intro private fun moveToMainActivity() { startActivity(Intent(this, MainActivity::class.java).apply { + putExtra(OPEN_FROM_PUSH_ALARM, intent.getStringExtra(OPEN_FROM_PUSH_ALARM)) + putExtra(SparkMessagingService.ROOM_ID, intent.getIntExtra(SparkMessagingService.ROOM_ID, -1)) addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION) }) finish() diff --git a/app/src/main/java/com/teamsparker/android/ui/main/MainActivity.kt b/app/src/main/java/com/teamsparker/android/ui/main/MainActivity.kt index 8c71735a..a38a345b 100644 --- a/app/src/main/java/com/teamsparker/android/ui/main/MainActivity.kt +++ b/app/src/main/java/com/teamsparker/android/ui/main/MainActivity.kt @@ -8,12 +8,20 @@ import androidx.core.app.ActivityCompat import androidx.navigation.NavController import androidx.navigation.fragment.NavHostFragment import com.teamsparker.android.R +import com.teamsparker.android.SparkMessagingService.Companion.CERTIFICATION +import com.teamsparker.android.SparkMessagingService.Companion.CONSIDER +import com.teamsparker.android.SparkMessagingService.Companion.OPEN_FROM_PUSH_ALARM +import com.teamsparker.android.SparkMessagingService.Companion.REMIND +import com.teamsparker.android.SparkMessagingService.Companion.ROOM_ID +import com.teamsparker.android.SparkMessagingService.Companion.ROOM_START +import com.teamsparker.android.SparkMessagingService.Companion.SPARK import com.teamsparker.android.databinding.ActivityMainBinding import com.teamsparker.android.ui.base.BaseActivity import com.teamsparker.android.ui.certify.CertifyActivity.Companion.FROM_CERTIFY_ACTIVITY import com.teamsparker.android.ui.feed.FeedFragmentDirections import com.teamsparker.android.ui.feedreport.FeedReportActivity.Companion.FEED_REPORT_SUCCESS import com.teamsparker.android.ui.feedreport.FeedReportActivity.Companion.FROM_FEED_REPORT_ACTIVITY +import com.teamsparker.android.ui.habit.HabitActivity import com.teamsparker.android.ui.home.HomeMainFragmentDirections import com.teamsparker.android.ui.joincode.inputcode.InputCodeFragmentDialog import com.teamsparker.android.ui.main.viewmodel.MainViewModel @@ -28,6 +36,7 @@ import com.teamsparker.android.util.getToast import com.teamsparker.android.util.initStatusBarColor import com.teamsparker.android.util.initStatusBarTextColorToWhite import dagger.hilt.android.AndroidEntryPoint +import timber.log.Timber import java.lang.IllegalStateException import kotlin.system.exitProcess @@ -53,11 +62,17 @@ class MainActivity : BaseActivity(R.layout.activity_main) { } initTabPositionObserver() initBlackBgClickListener() + //moveAfterOpenPushAlarm() } override fun onResume() { super.onResume() - mainViewModel.initTabPositionHome() + if (intent.getStringExtra(OPEN_FROM_PUSH_ALARM) != CERTIFICATION) { + mainViewModel.initTabPositionHome() + moveAfterOpenPushAlarm() + } else { + mainViewModel.initTabPositionFeed() + } initTabPositionFromOthers() } @@ -215,6 +230,22 @@ class MainActivity : BaseActivity(R.layout.activity_main) { } } + private fun moveAfterOpenPushAlarm() { + Timber.tag("fcm").d(intent.getStringExtra(OPEN_FROM_PUSH_ALARM)) + when (intent.getStringExtra(OPEN_FROM_PUSH_ALARM)) { + CERTIFICATION -> { + //mainViewModel.initTabPositionFeed() + } + ROOM_START, REMIND, SPARK, CONSIDER -> { + startActivity(Intent(this, HabitActivity::class.java).apply { + putExtra(ROOM_ID, intent.getIntExtra(ROOM_ID, -1)) + addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION) + }) + } + } + intent.removeExtra(OPEN_FROM_PUSH_ALARM) + } + companion object { private const val BACK_BTN_WAIT_TIME = 2000L const val FROM_WHERE = "fromWhere" From ada8ed85affe84cc8fd9f2ade4d08c9518f6eb88 Mon Sep 17 00:00:00 2001 From: Yunjoo Son Date: Mon, 26 Sep 2022 19:06:55 +0900 Subject: [PATCH 3/5] =?UTF-8?q?#540=20[feat]=20Foreground,=20Background=20?= =?UTF-8?q?=EA=B0=90=EC=A7=80=20=EC=8B=B1=EA=B8=80=ED=86=A4=20=EC=83=9D?= =?UTF-8?q?=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../android/util/CheckForeground.kt | 43 +++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 app/src/main/java/com/teamsparker/android/util/CheckForeground.kt diff --git a/app/src/main/java/com/teamsparker/android/util/CheckForeground.kt b/app/src/main/java/com/teamsparker/android/util/CheckForeground.kt new file mode 100644 index 00000000..8b914ae2 --- /dev/null +++ b/app/src/main/java/com/teamsparker/android/util/CheckForeground.kt @@ -0,0 +1,43 @@ +package com.teamsparker.android.util + +import android.app.Activity +import android.app.Application +import android.os.Bundle +import timber.log.Timber + + +object CheckForeground : Application.ActivityLifecycleCallbacks { + private var instance: CheckForeground? = null + + var activityCount = 0 + + fun init(app: Application) { + if (instance == null) { + instance = CheckForeground + app.registerActivityLifecycleCallbacks(instance) + } + } + + fun isForeground(): Boolean = activityCount >= 1 + + override fun onActivityCreated(activity: Activity, savedInstanceState: Bundle?) {} + + override fun onActivityStarted(activity: Activity) { + activityCount++ + Timber.tag("push_alarm").d("${activityCount} activity_started") + } + + override fun onActivityResumed(activity: Activity) {} + + override fun onActivityPaused(activity: Activity) {} + + override fun onActivityStopped(activity: Activity) { + activityCount-- + Timber.tag("push_alarm").d("${activityCount} activity_stopped-------------") + } + + override fun onActivitySaveInstanceState(activity: Activity, outState: Bundle) {} + + override fun onActivityDestroyed(activity: Activity) {} + +} From bc477937c390cc8c49edee52bfe165172baf13ed Mon Sep 17 00:00:00 2001 From: Yunjoo Son Date: Mon, 26 Sep 2022 19:09:01 +0900 Subject: [PATCH 4/5] =?UTF-8?q?=20#540=20[feat]=20Foreground,=20Background?= =?UTF-8?q?=20=EC=83=81=ED=99=A9=EC=97=90=20=EB=94=B0=EB=A5=B8=20=ED=91=B8?= =?UTF-8?q?=EC=8B=9C=EC=95=8C=EB=A6=BC=20=ED=81=B4=EB=A6=AD=20=EC=8B=9C=20?= =?UTF-8?q?=ED=99=94=EB=A9=B4=20=EC=9D=B4=EB=8F=99=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../teamsparker/android/SparkApplication.kt | 3 +++ .../android/SparkMessagingService.kt | 2 +- .../android/ui/intro/IntroActivity.kt | 13 +++++++++++- .../android/ui/main/MainActivity.kt | 21 ++++++++++--------- .../android/util/CheckForeground.kt | 4 +--- 5 files changed, 28 insertions(+), 15 deletions(-) diff --git a/app/src/main/java/com/teamsparker/android/SparkApplication.kt b/app/src/main/java/com/teamsparker/android/SparkApplication.kt index 5fa13e83..859509da 100644 --- a/app/src/main/java/com/teamsparker/android/SparkApplication.kt +++ b/app/src/main/java/com/teamsparker/android/SparkApplication.kt @@ -4,6 +4,7 @@ import android.app.Application import com.kakao.sdk.common.KakaoSdk import com.kakao.sdk.common.util.Utility import com.teamsparker.android.data.remote.LocalPreferences +import com.teamsparker.android.util.CheckForeground import dagger.hilt.android.HiltAndroidApp import timber.log.Timber @@ -18,6 +19,8 @@ class SparkApplication : Application() { KakaoSdk.init(this, getString(R.string.kakao_native_app_key)) // Kakao 키 해시 호출하기 Timber.tag("kakao_keyHash").d(Utility.getKeyHash(this)) + // Foreground, Background 감지 클래스 초기화 + CheckForeground.init(this@SparkApplication) } private fun initTimber() { diff --git a/app/src/main/java/com/teamsparker/android/SparkMessagingService.kt b/app/src/main/java/com/teamsparker/android/SparkMessagingService.kt index e99e985b..ee4ceb1a 100644 --- a/app/src/main/java/com/teamsparker/android/SparkMessagingService.kt +++ b/app/src/main/java/com/teamsparker/android/SparkMessagingService.kt @@ -81,7 +81,7 @@ class SparkMessagingService : FirebaseMessagingService() { private fun createNotificationWithImage(remoteMessage: RemoteMessage, bitmap: Bitmap) { val alarmId = remoteMessage.sentTime.toInt() val category = remoteMessage.data["category"].toString() - val intent = Intent(this, MainActivity::class.java).apply { + val intent = Intent(this, IntroActivity::class.java ).apply { putExtra(OPEN_FROM_PUSH_ALARM, category) flags = Intent.FLAG_ACTIVITY_SINGLE_TOP or Intent.FLAG_ACTIVITY_CLEAR_TOP } diff --git a/app/src/main/java/com/teamsparker/android/ui/intro/IntroActivity.kt b/app/src/main/java/com/teamsparker/android/ui/intro/IntroActivity.kt index 59498b1d..2e41f88f 100644 --- a/app/src/main/java/com/teamsparker/android/ui/intro/IntroActivity.kt +++ b/app/src/main/java/com/teamsparker/android/ui/intro/IntroActivity.kt @@ -7,16 +7,19 @@ import android.os.Bundle import androidx.activity.viewModels import com.teamsparker.android.R import com.teamsparker.android.SparkMessagingService +import com.teamsparker.android.SparkMessagingService.Companion.CERTIFICATION import com.teamsparker.android.SparkMessagingService.Companion.OPEN_FROM_PUSH_ALARM import com.teamsparker.android.databinding.ActivityIntroBinding import com.teamsparker.android.ui.base.BaseActivity import com.teamsparker.android.ui.main.MainActivity import com.teamsparker.android.ui.onboarding.OnBoardingActivity +import com.teamsparker.android.util.CheckForeground import com.teamsparker.android.util.DialogUtil import com.teamsparker.android.util.DialogUtil.Companion.UPDATE_CHECK import com.teamsparker.android.util.FirebaseLogUtil import com.teamsparker.android.util.initStatusBarColor import dagger.hilt.android.AndroidEntryPoint +import timber.log.Timber @AndroidEntryPoint class IntroActivity : BaseActivity(R.layout.activity_intro) { @@ -24,6 +27,9 @@ class IntroActivity : BaseActivity(R.layout.activity_intro override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) + if (CheckForeground.isForeground()) { + moveToMainActivity() + } initStatusBarColor(R.color.spark_more_deep_gray) checkOpenFromPushAlarm() introViewModel.versionCheck() @@ -95,7 +101,12 @@ class IntroActivity : BaseActivity(R.layout.activity_intro private fun moveToMainActivity() { startActivity(Intent(this, MainActivity::class.java).apply { putExtra(OPEN_FROM_PUSH_ALARM, intent.getStringExtra(OPEN_FROM_PUSH_ALARM)) - putExtra(SparkMessagingService.ROOM_ID, intent.getIntExtra(SparkMessagingService.ROOM_ID, -1)) + if (intent.getStringExtra(OPEN_FROM_PUSH_ALARM) != CERTIFICATION) { + putExtra( + SparkMessagingService.ROOM_ID, + intent.getIntExtra(SparkMessagingService.ROOM_ID, -1) + ) + } addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION) }) finish() diff --git a/app/src/main/java/com/teamsparker/android/ui/main/MainActivity.kt b/app/src/main/java/com/teamsparker/android/ui/main/MainActivity.kt index a38a345b..947cc131 100644 --- a/app/src/main/java/com/teamsparker/android/ui/main/MainActivity.kt +++ b/app/src/main/java/com/teamsparker/android/ui/main/MainActivity.kt @@ -62,16 +62,21 @@ class MainActivity : BaseActivity(R.layout.activity_main) { } initTabPositionObserver() initBlackBgClickListener() - //moveAfterOpenPushAlarm() } override fun onResume() { super.onResume() - if (intent.getStringExtra(OPEN_FROM_PUSH_ALARM) != CERTIFICATION) { - mainViewModel.initTabPositionHome() - moveAfterOpenPushAlarm() - } else { - mainViewModel.initTabPositionFeed() + when (intent.getStringExtra(OPEN_FROM_PUSH_ALARM)) { + CERTIFICATION -> { + mainViewModel.initTabPositionFeed() + intent.removeExtra(OPEN_FROM_PUSH_ALARM) + } + else -> { + mainViewModel.initTabPositionHome() + if (intent.getStringExtra(OPEN_FROM_PUSH_ALARM) != null) { + moveAfterOpenPushAlarm() + } + } } initTabPositionFromOthers() } @@ -231,11 +236,7 @@ class MainActivity : BaseActivity(R.layout.activity_main) { } private fun moveAfterOpenPushAlarm() { - Timber.tag("fcm").d(intent.getStringExtra(OPEN_FROM_PUSH_ALARM)) when (intent.getStringExtra(OPEN_FROM_PUSH_ALARM)) { - CERTIFICATION -> { - //mainViewModel.initTabPositionFeed() - } ROOM_START, REMIND, SPARK, CONSIDER -> { startActivity(Intent(this, HabitActivity::class.java).apply { putExtra(ROOM_ID, intent.getIntExtra(ROOM_ID, -1)) diff --git a/app/src/main/java/com/teamsparker/android/util/CheckForeground.kt b/app/src/main/java/com/teamsparker/android/util/CheckForeground.kt index 8b914ae2..36544546 100644 --- a/app/src/main/java/com/teamsparker/android/util/CheckForeground.kt +++ b/app/src/main/java/com/teamsparker/android/util/CheckForeground.kt @@ -9,7 +9,7 @@ import timber.log.Timber object CheckForeground : Application.ActivityLifecycleCallbacks { private var instance: CheckForeground? = null - var activityCount = 0 + private var activityCount = 0 fun init(app: Application) { if (instance == null) { @@ -24,7 +24,6 @@ object CheckForeground : Application.ActivityLifecycleCallbacks { override fun onActivityStarted(activity: Activity) { activityCount++ - Timber.tag("push_alarm").d("${activityCount} activity_started") } override fun onActivityResumed(activity: Activity) {} @@ -33,7 +32,6 @@ object CheckForeground : Application.ActivityLifecycleCallbacks { override fun onActivityStopped(activity: Activity) { activityCount-- - Timber.tag("push_alarm").d("${activityCount} activity_stopped-------------") } override fun onActivitySaveInstanceState(activity: Activity, outState: Bundle) {} From 1d05de4f75f07da051bc31e9c65b5ed74ebc4820 Mon Sep 17 00:00:00 2001 From: Yunjoo Son Date: Sun, 2 Oct 2022 16:35:21 +0900 Subject: [PATCH 5/5] =?UTF-8?q?#540=20[feat]=20=ED=91=B8=EC=89=AC=EC=95=8C?= =?UTF-8?q?=EB=A6=BC=20=EC=B9=B4=ED=85=8C=EA=B3=A0=EB=A6=AC=20Enum=20class?= =?UTF-8?q?=EB=A1=9C=20=EC=A0=95=EC=9D=98=20=ED=9B=84=20=EC=BD=94=EB=93=9C?= =?UTF-8?q?=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../android/SparkMessagingService.kt | 36 ++++++++----------- .../android/ui/intro/IntroActivity.kt | 5 ++- .../android/ui/main/MainActivity.kt | 35 +++++++++--------- .../android/util/NotificationCategory.kt | 9 +++++ 4 files changed, 44 insertions(+), 41 deletions(-) create mode 100644 app/src/main/java/com/teamsparker/android/util/NotificationCategory.kt diff --git a/app/src/main/java/com/teamsparker/android/SparkMessagingService.kt b/app/src/main/java/com/teamsparker/android/SparkMessagingService.kt index ee4ceb1a..d1e4b02e 100644 --- a/app/src/main/java/com/teamsparker/android/SparkMessagingService.kt +++ b/app/src/main/java/com/teamsparker/android/SparkMessagingService.kt @@ -12,15 +12,12 @@ import com.google.firebase.messaging.RemoteMessage import com.teamsparker.android.ui.intro.IntroActivity import com.teamsparker.android.ui.main.MainActivity import com.teamsparker.android.util.ImageCropUtil +import com.teamsparker.android.util.NotificationCategory import com.teamsparker.android.util.useBitmapImg import timber.log.Timber import java.lang.IllegalArgumentException class SparkMessagingService : FirebaseMessagingService() { - data class NotificationCategory( - val summaryId: Int, - val groupName: String - ) override fun onNewToken(token: String) { super.onNewToken(token) @@ -31,8 +28,13 @@ class SparkMessagingService : FirebaseMessagingService() { super.onMessageReceived(remoteMessage) if (remoteMessage.data.isNotEmpty()) { when (remoteMessage.data["category"].toString()) { - CERTIFICATION -> transformImageUrlToBitmap(remoteMessage) - else -> createNotificationWithoutImage(remoteMessage) + NotificationCategory.CERTIFICATION.category -> + transformImageUrlToBitmap(remoteMessage) + NotificationCategory.SPARK.category, + NotificationCategory.REMIND.category, + NotificationCategory.ROOM_START.category, + NotificationCategory.CONSIDER.category -> + createNotificationWithoutImage(remoteMessage) } } } @@ -81,7 +83,7 @@ class SparkMessagingService : FirebaseMessagingService() { private fun createNotificationWithImage(remoteMessage: RemoteMessage, bitmap: Bitmap) { val alarmId = remoteMessage.sentTime.toInt() val category = remoteMessage.data["category"].toString() - val intent = Intent(this, IntroActivity::class.java ).apply { + val intent = Intent(this, IntroActivity::class.java).apply { putExtra(OPEN_FROM_PUSH_ALARM, category) flags = Intent.FLAG_ACTIVITY_SINGLE_TOP or Intent.FLAG_ACTIVITY_CLEAR_TOP } @@ -135,26 +137,16 @@ class SparkMessagingService : FirebaseMessagingService() { } private fun getSummaryId(category: String) = when (category) { - CATEGORY_CERTIFICATION.groupName -> CATEGORY_CERTIFICATION.summaryId - CATEGORY_SPARK.groupName -> CATEGORY_SPARK.summaryId - CATEGORY_REMIND.groupName -> CATEGORY_REMIND.summaryId - CATEGORY_ROOM_START.groupName -> CATEGORY_ROOM_START.summaryId - CATEGORY_CONSIDER.groupName -> CATEGORY_CONSIDER.summaryId + NotificationCategory.CERTIFICATION.category -> NotificationCategory.CERTIFICATION.summaryId + NotificationCategory.SPARK.category -> NotificationCategory.SPARK.summaryId + NotificationCategory.REMIND.category -> NotificationCategory.REMIND.summaryId + NotificationCategory.ROOM_START.category -> NotificationCategory.ROOM_START.summaryId + NotificationCategory.CONSIDER.category -> NotificationCategory.CONSIDER.summaryId else -> throw IllegalArgumentException("FCM category 필드 오류") } companion object { const val OPEN_FROM_PUSH_ALARM = "openPushAlarm" const val ROOM_ID = "roomId" - const val CERTIFICATION = "certification" - const val SPARK = "spark" - const val REMIND = "remind" - const val ROOM_START = "roomStart" - const val CONSIDER = "consider" - private val CATEGORY_CERTIFICATION = NotificationCategory(0, CERTIFICATION) - private val CATEGORY_SPARK = NotificationCategory(1, SPARK) - private val CATEGORY_REMIND = NotificationCategory(2, REMIND) - private val CATEGORY_ROOM_START = NotificationCategory(3, ROOM_START) - private val CATEGORY_CONSIDER = NotificationCategory(4, CONSIDER) } } diff --git a/app/src/main/java/com/teamsparker/android/ui/intro/IntroActivity.kt b/app/src/main/java/com/teamsparker/android/ui/intro/IntroActivity.kt index 2e41f88f..c058d3f6 100644 --- a/app/src/main/java/com/teamsparker/android/ui/intro/IntroActivity.kt +++ b/app/src/main/java/com/teamsparker/android/ui/intro/IntroActivity.kt @@ -7,7 +7,6 @@ import android.os.Bundle import androidx.activity.viewModels import com.teamsparker.android.R import com.teamsparker.android.SparkMessagingService -import com.teamsparker.android.SparkMessagingService.Companion.CERTIFICATION import com.teamsparker.android.SparkMessagingService.Companion.OPEN_FROM_PUSH_ALARM import com.teamsparker.android.databinding.ActivityIntroBinding import com.teamsparker.android.ui.base.BaseActivity @@ -17,9 +16,9 @@ import com.teamsparker.android.util.CheckForeground import com.teamsparker.android.util.DialogUtil import com.teamsparker.android.util.DialogUtil.Companion.UPDATE_CHECK import com.teamsparker.android.util.FirebaseLogUtil +import com.teamsparker.android.util.NotificationCategory import com.teamsparker.android.util.initStatusBarColor import dagger.hilt.android.AndroidEntryPoint -import timber.log.Timber @AndroidEntryPoint class IntroActivity : BaseActivity(R.layout.activity_intro) { @@ -101,7 +100,7 @@ class IntroActivity : BaseActivity(R.layout.activity_intro private fun moveToMainActivity() { startActivity(Intent(this, MainActivity::class.java).apply { putExtra(OPEN_FROM_PUSH_ALARM, intent.getStringExtra(OPEN_FROM_PUSH_ALARM)) - if (intent.getStringExtra(OPEN_FROM_PUSH_ALARM) != CERTIFICATION) { + if (intent.getStringExtra(OPEN_FROM_PUSH_ALARM) != NotificationCategory.CERTIFICATION.category) { putExtra( SparkMessagingService.ROOM_ID, intent.getIntExtra(SparkMessagingService.ROOM_ID, -1) diff --git a/app/src/main/java/com/teamsparker/android/ui/main/MainActivity.kt b/app/src/main/java/com/teamsparker/android/ui/main/MainActivity.kt index 947cc131..7be316f2 100644 --- a/app/src/main/java/com/teamsparker/android/ui/main/MainActivity.kt +++ b/app/src/main/java/com/teamsparker/android/ui/main/MainActivity.kt @@ -8,13 +8,8 @@ import androidx.core.app.ActivityCompat import androidx.navigation.NavController import androidx.navigation.fragment.NavHostFragment import com.teamsparker.android.R -import com.teamsparker.android.SparkMessagingService.Companion.CERTIFICATION -import com.teamsparker.android.SparkMessagingService.Companion.CONSIDER import com.teamsparker.android.SparkMessagingService.Companion.OPEN_FROM_PUSH_ALARM -import com.teamsparker.android.SparkMessagingService.Companion.REMIND import com.teamsparker.android.SparkMessagingService.Companion.ROOM_ID -import com.teamsparker.android.SparkMessagingService.Companion.ROOM_START -import com.teamsparker.android.SparkMessagingService.Companion.SPARK import com.teamsparker.android.databinding.ActivityMainBinding import com.teamsparker.android.ui.base.BaseActivity import com.teamsparker.android.ui.certify.CertifyActivity.Companion.FROM_CERTIFY_ACTIVITY @@ -32,11 +27,11 @@ import com.teamsparker.android.ui.makeroom.MakeRoomActivity import com.teamsparker.android.ui.storage.StorageFragmentDirections import com.teamsparker.android.util.AnimationUtil import com.teamsparker.android.ui.storage.photo.StoragePhotoCollectionActivity.Companion.FROM_STORAGE_PHOTO_COLLECTION_ACTIVITY +import com.teamsparker.android.util.NotificationCategory import com.teamsparker.android.util.getToast import com.teamsparker.android.util.initStatusBarColor import com.teamsparker.android.util.initStatusBarTextColorToWhite import dagger.hilt.android.AndroidEntryPoint -import timber.log.Timber import java.lang.IllegalStateException import kotlin.system.exitProcess @@ -66,19 +61,24 @@ class MainActivity : BaseActivity(R.layout.activity_main) { override fun onResume() { super.onResume() - when (intent.getStringExtra(OPEN_FROM_PUSH_ALARM)) { - CERTIFICATION -> { - mainViewModel.initTabPositionFeed() - intent.removeExtra(OPEN_FROM_PUSH_ALARM) - } - else -> { - mainViewModel.initTabPositionHome() - if (intent.getStringExtra(OPEN_FROM_PUSH_ALARM) != null) { + if (intent.getStringExtra(OPEN_FROM_PUSH_ALARM) != null) { + when (intent.getStringExtra(OPEN_FROM_PUSH_ALARM)) { + NotificationCategory.CERTIFICATION.category -> { + mainViewModel.initTabPositionFeed() + intent.removeExtra(OPEN_FROM_PUSH_ALARM) + } + NotificationCategory.SPARK.category, + NotificationCategory.REMIND.category, + NotificationCategory.ROOM_START.category, + NotificationCategory.CONSIDER.category -> { + mainViewModel.initTabPositionHome() moveAfterOpenPushAlarm() } } + } else { + mainViewModel.initTabPositionHome() + initTabPositionFromOthers() } - initTabPositionFromOthers() } override fun onBackPressed() { @@ -237,7 +237,10 @@ class MainActivity : BaseActivity(R.layout.activity_main) { private fun moveAfterOpenPushAlarm() { when (intent.getStringExtra(OPEN_FROM_PUSH_ALARM)) { - ROOM_START, REMIND, SPARK, CONSIDER -> { + NotificationCategory.SPARK.category, + NotificationCategory.REMIND.category, + NotificationCategory.ROOM_START.category, + NotificationCategory.CONSIDER.category -> { startActivity(Intent(this, HabitActivity::class.java).apply { putExtra(ROOM_ID, intent.getIntExtra(ROOM_ID, -1)) addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION) diff --git a/app/src/main/java/com/teamsparker/android/util/NotificationCategory.kt b/app/src/main/java/com/teamsparker/android/util/NotificationCategory.kt new file mode 100644 index 00000000..ae739cbc --- /dev/null +++ b/app/src/main/java/com/teamsparker/android/util/NotificationCategory.kt @@ -0,0 +1,9 @@ +package com.teamsparker.android.util + +enum class NotificationCategory(val summaryId: Int, val category: String) { + CERTIFICATION(0, "certification"), + SPARK(1, "spark"), + REMIND(2, "remind"), + ROOM_START(3, "roomStart"), + CONSIDER(4, "consider") +}