From 17caf9c759b033a6c72f9d8434a03c0ecccf2df7 Mon Sep 17 00:00:00 2001 From: MunJangHun <105299421+moondev03@users.noreply.github.com> Date: Mon, 9 Sep 2024 16:45:18 +0900 Subject: [PATCH] =?UTF-8?q?=F0=9F=90=9E=20PlayStore=20=EC=82=AC=EC=A0=84?= =?UTF-8?q?=20=EC=B6=9C=EC=8B=9C=20=EB=B3=B4=EA=B3=A0=EC=84=9C=20|=20?= =?UTF-8?q?=EB=B9=84=EC=A0=95=EC=83=81=20=EC=A2=85=EB=A3=8C=20=EB=B0=8F=20?= =?UTF-8?q?ANR=20(#20)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * 🐞 FirebaseCloudMessage | getToken Task 수정 * 🫡 Push Notification | Add App Logo --- .../fcm/MyFirebaseMessagingService.kt | 18 ++--------- .../thinkerbell/view/splash/StartActivity.kt | 11 +++++-- .../thinkerbell/view/splash/StartViewModel.kt | 30 ++++++------------- .../src/main/res/drawable/ic_thinkerbell.xml | 18 +++++++++++ 4 files changed, 37 insertions(+), 40 deletions(-) create mode 100644 ThinkerBell/presentation/src/main/res/drawable/ic_thinkerbell.xml diff --git a/ThinkerBell/presentation/src/main/java/com/neverland/thinkerbell/fcm/MyFirebaseMessagingService.kt b/ThinkerBell/presentation/src/main/java/com/neverland/thinkerbell/fcm/MyFirebaseMessagingService.kt index 7810804..2761946 100644 --- a/ThinkerBell/presentation/src/main/java/com/neverland/thinkerbell/fcm/MyFirebaseMessagingService.kt +++ b/ThinkerBell/presentation/src/main/java/com/neverland/thinkerbell/fcm/MyFirebaseMessagingService.kt @@ -13,7 +13,6 @@ import androidx.work.OneTimeWorkRequest import androidx.work.WorkManager import androidx.work.Worker import androidx.work.WorkerParameters -import com.google.firebase.messaging.FirebaseMessaging import com.google.firebase.messaging.FirebaseMessagingService import com.google.firebase.messaging.RemoteMessage import com.neverland.core.utils.LoggerUtil @@ -61,7 +60,7 @@ class MyFirebaseMessagingService : FirebaseMessagingService() { } private fun sendRegistrationToServer(token: String?) { - LoggerUtil.d("sendRegistrationTokenToServer($token)") + LoggerUtil.d("Send Registration New Token To Server:\n$token") } private fun sendNotification(title: String, body: String, url: String?) { @@ -80,7 +79,7 @@ class MyFirebaseMessagingService : FirebaseMessagingService() { val channelId = "fcm_default_channel" val defaultSoundUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION) val notificationBuilder = NotificationCompat.Builder(this, channelId) - .setSmallIcon(R.drawable.ic_launcher_foreground) + .setSmallIcon(R.drawable.ic_thinkerbell) .setContentTitle(title) .setContentText(body) .setAutoCancel(true) @@ -108,17 +107,4 @@ class MyFirebaseMessagingService : FirebaseMessagingService() { return Result.success() } } - - fun getRegistrationToken(callback: (String?) -> Unit) { - FirebaseMessaging.getInstance().token - .addOnCompleteListener { task -> - if (task.isSuccessful) { - val token = task.result - callback(token) - } else { - LoggerUtil.w("Fetching FCM Registration Token failed\n${task.exception}") - callback(null) - } - } - } } diff --git a/ThinkerBell/presentation/src/main/java/com/neverland/thinkerbell/view/splash/StartActivity.kt b/ThinkerBell/presentation/src/main/java/com/neverland/thinkerbell/view/splash/StartActivity.kt index ea8d3b9..dcf771d 100644 --- a/ThinkerBell/presentation/src/main/java/com/neverland/thinkerbell/view/splash/StartActivity.kt +++ b/ThinkerBell/presentation/src/main/java/com/neverland/thinkerbell/view/splash/StartActivity.kt @@ -2,8 +2,11 @@ package com.neverland.thinkerbell.view.splash import android.content.Intent import androidx.activity.viewModels +import com.google.firebase.messaging.FirebaseMessaging +import com.neverland.core.utils.LoggerUtil import com.neverland.thinkerbell.R import com.neverland.thinkerbell.base.BaseActivity +import com.neverland.thinkerbell.base.ThinkerBellApplication import com.neverland.thinkerbell.databinding.ActivityStartBinding import com.neverland.thinkerbell.utils.UiState import com.neverland.thinkerbell.view.HomeActivity @@ -14,7 +17,10 @@ class StartActivity : BaseActivity() { private val viewModel: StartViewModel by viewModels() override fun initView() { - viewModel.saveDeviceInfo() + FirebaseMessaging.getInstance().token.addOnCompleteListener { task -> + viewModel.saveDeviceInfo(task.result) + } + setStatusBarColor(R.color.primary2, false) } @@ -24,9 +30,8 @@ class StartActivity : BaseActivity() { viewModel.fcmState.observe(this) { when (it) { is UiState.Loading -> {} - is UiState.Error -> {} is UiState.Empty -> {} - is UiState.Success -> { + else -> { moveHome() } } diff --git a/ThinkerBell/presentation/src/main/java/com/neverland/thinkerbell/view/splash/StartViewModel.kt b/ThinkerBell/presentation/src/main/java/com/neverland/thinkerbell/view/splash/StartViewModel.kt index 1dc4948..17e1144 100644 --- a/ThinkerBell/presentation/src/main/java/com/neverland/thinkerbell/view/splash/StartViewModel.kt +++ b/ThinkerBell/presentation/src/main/java/com/neverland/thinkerbell/view/splash/StartViewModel.kt @@ -8,7 +8,6 @@ import androidx.lifecycle.viewModelScope import com.neverland.core.utils.LoggerUtil import com.neverland.domain.usecase.user.PostUserInfoUseCase import com.neverland.thinkerbell.base.ThinkerBellApplication.Companion.application -import com.neverland.thinkerbell.fcm.MyFirebaseMessagingService import com.neverland.thinkerbell.utils.UiState import dagger.hilt.android.lifecycle.HiltViewModel import kotlinx.coroutines.launch @@ -23,29 +22,18 @@ class StartViewModel @Inject constructor( val fcmState: LiveData> get() = _fcmState @SuppressLint("HardwareIds") - fun saveDeviceInfo() { + fun saveDeviceInfo(token: String) { _fcmState.value = UiState.Loading - try { - MyFirebaseMessagingService().getRegistrationToken { token -> - if (token != null) { - viewModelScope.launch { - postUserInfoUseCase(application.getAndroidId(), token) - .onSuccess { - _fcmState.value = UiState.Success(Unit) - } - .onFailure { e -> - _fcmState.value = UiState.Error(e) - LoggerUtil.e("Register fcm failed: ${e.message}") - } - } - } else { - throw Exception("Null Fcm Token Exception") + viewModelScope.launch { + postUserInfoUseCase(application.getAndroidId(), token) + .onSuccess { + _fcmState.value = UiState.Success(Unit) + } + .onFailure { e -> + _fcmState.value = UiState.Error(e) + LoggerUtil.e("Register fcm failed: ${e.message}") } - } - } catch (e: Exception) { - _fcmState.value = UiState.Error(e) - LoggerUtil.e("Register fcm exception: ${e.message}") } } diff --git a/ThinkerBell/presentation/src/main/res/drawable/ic_thinkerbell.xml b/ThinkerBell/presentation/src/main/res/drawable/ic_thinkerbell.xml new file mode 100644 index 0000000..b0c7d53 --- /dev/null +++ b/ThinkerBell/presentation/src/main/res/drawable/ic_thinkerbell.xml @@ -0,0 +1,18 @@ + + + + +