Skip to content

Commit

Permalink
Merge pull request #544 from TeamSparker/release-1.0.2
Browse files Browse the repository at this point in the history
Release 1.0.2
  • Loading branch information
yjooooo committed Oct 2, 2022
2 parents 5efe74a + 5cdb7a9 commit c09b34b
Show file tree
Hide file tree
Showing 9 changed files with 141 additions and 25 deletions.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
| 이창환 | 조재훈 | 이호재 | 손연주 |
|:-------:|:-------:|:-------:|:-------:|
|<img src="https://user-images.githubusercontent.com/91423342/148880108-08dddb1c-a862-4e1d-b0fd-4a33d4a4c2e8.jpeg" width="200" height="200"/> | <img src="https://user-images.githubusercontent.com/91423342/148880154-7848c470-824d-4198-aece-4940ad808ba8.png" width="200" height="200"/> | <img src="https://user-images.githubusercontent.com/91423342/148880221-86ea677f-d272-464c-9b67-90ae31620f3e.jpeg" width="200" height="200"/> | <img src="https://user-images.githubusercontent.com/91423342/148880265-18fd3045-96e7-4984-9497-39c971295a7a.png" width="200" height="200"/> |
| 홈, 방생성 역할 담당 | 습관방 역할 담당 | 보관함 역할 담당 | 온보딩 , 로그인 , 피드 역할 담당|
| 홈, 방생성 역할 담당 | 습관방 역할 담당 | 온보딩 , 보관함 역할 담당 | 로그인 , 피드 역할 담당|

## ⚡️팀 협업 방식
### 🔥Branch 전략
Expand Down
4 changes: 2 additions & 2 deletions app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,8 @@ android {
applicationId "com.teamsparker.android"
minSdk 26
targetSdk 31
versionCode 3
versionName "1.0.1"
versionCode 4
versionName "1.0.2"

testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
Expand Down
1 change: 1 addition & 0 deletions app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -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">
Expand Down
3 changes: 3 additions & 0 deletions app/src/main/java/com/teamsparker/android/SparkApplication.kt
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand All @@ -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() {
Expand Down
54 changes: 34 additions & 20 deletions app/src/main/java/com/teamsparker/android/SparkMessagingService.kt
Original file line number Diff line number Diff line change
Expand Up @@ -10,16 +10,14 @@ 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.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)
Expand All @@ -29,10 +27,14 @@ 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()) {
NotificationCategory.CERTIFICATION.category ->
transformImageUrlToBitmap(remoteMessage)
NotificationCategory.SPARK.category,
NotificationCategory.REMIND.category,
NotificationCategory.ROOM_START.category,
NotificationCategory.CONSIDER.category ->
createNotificationWithoutImage(remoteMessage)
}
}
}
Expand All @@ -52,11 +54,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())
Expand All @@ -74,9 +85,16 @@ class SparkMessagingService : FirebaseMessagingService() {
val category = remoteMessage.data["category"].toString()
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
}

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())
Expand Down Expand Up @@ -119,20 +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"
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"
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,14 +6,17 @@ 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
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.NotificationCategory
import com.teamsparker.android.util.initStatusBarColor
import dagger.hilt.android.AndroidEntryPoint

Expand All @@ -23,6 +26,9 @@ class IntroActivity : BaseActivity<ActivityIntroBinding>(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()
Expand Down Expand Up @@ -93,6 +99,13 @@ class IntroActivity : BaseActivity<ActivityIntroBinding>(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) != NotificationCategory.CERTIFICATION.category) {
putExtra(
SparkMessagingService.ROOM_ID,
intent.getIntExtra(SparkMessagingService.ROOM_ID, -1)
)
}
addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION)
})
finish()
Expand Down
39 changes: 37 additions & 2 deletions app/src/main/java/com/teamsparker/android/ui/main/MainActivity.kt
Original file line number Diff line number Diff line change
Expand Up @@ -8,12 +8,15 @@ 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.OPEN_FROM_PUSH_ALARM
import com.teamsparker.android.SparkMessagingService.Companion.ROOM_ID
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
Expand All @@ -24,6 +27,7 @@ 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
Expand Down Expand Up @@ -57,8 +61,24 @@ class MainActivity : BaseActivity<ActivityMainBinding>(R.layout.activity_main) {

override fun onResume() {
super.onResume()
mainViewModel.initTabPositionHome()
initTabPositionFromOthers()
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()
}
}

override fun onBackPressed() {
Expand Down Expand Up @@ -215,6 +235,21 @@ class MainActivity : BaseActivity<ActivityMainBinding>(R.layout.activity_main) {
}
}

private fun moveAfterOpenPushAlarm() {
when (intent.getStringExtra(OPEN_FROM_PUSH_ALARM)) {
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)
})
}
}
intent.removeExtra(OPEN_FROM_PUSH_ALARM)
}

companion object {
private const val BACK_BTN_WAIT_TIME = 2000L
const val FROM_WHERE = "fromWhere"
Expand Down
41 changes: 41 additions & 0 deletions app/src/main/java/com/teamsparker/android/util/CheckForeground.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
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

private 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++
}

override fun onActivityResumed(activity: Activity) {}

override fun onActivityPaused(activity: Activity) {}

override fun onActivityStopped(activity: Activity) {
activityCount--
}

override fun onActivitySaveInstanceState(activity: Activity, outState: Bundle) {}

override fun onActivityDestroyed(activity: Activity) {}

}
Original file line number Diff line number Diff line change
@@ -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")
}

0 comments on commit c09b34b

Please sign in to comment.