From b077a361b9acc41474c08642fc1a2cc30b665819 Mon Sep 17 00:00:00 2001 From: klaus Date: Tue, 22 Apr 2025 18:06:47 +0900 Subject: [PATCH] =?UTF-8?q?feat:=20=ED=8F=AC=EA=B7=B8=EB=9D=BC=EC=9A=B4?= =?UTF-8?q?=EB=93=9C=20=EC=83=81=ED=83=9C=EC=97=90=EC=84=9C=20FCM=20data-o?= =?UTF-8?q?nly=20=EC=88=98=EC=8B=A0=20=EC=8B=9C=20=EC=9D=B8=EC=95=B1=20?= =?UTF-8?q?=ED=8C=9D=EC=97=85=20=ED=91=9C=EC=8B=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../vividnext/sodalive/base/BaseActivity.kt | 34 +++++++++++++++++++ .../fcm/SodaFirebaseMessagingService.kt | 7 +++- 2 files changed, 40 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/kr/co/vividnext/sodalive/base/BaseActivity.kt b/app/src/main/java/kr/co/vividnext/sodalive/base/BaseActivity.kt index 2bf6b7e..40206ce 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/base/BaseActivity.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/base/BaseActivity.kt @@ -1,11 +1,16 @@ package kr.co.vividnext.sodalive.base import android.annotation.SuppressLint +import android.content.BroadcastReceiver +import android.content.Context +import android.content.Intent +import android.content.IntentFilter import android.content.pm.ActivityInfo import android.os.Bundle import android.view.LayoutInflater import android.widget.Toast import androidx.appcompat.app.AppCompatActivity +import androidx.localbroadcastmanager.content.LocalBroadcastManager import androidx.viewbinding.ViewBinding import io.reactivex.rxjava3.disposables.CompositeDisposable @@ -26,6 +31,13 @@ abstract class BaseActivity( resources.displayMetrics.heightPixels } + private val pointReceiver = object : BroadcastReceiver() { + override fun onReceive(context: Context?, intent: Intent?) { + val message = intent?.getStringExtra("message") ?: return + showPointDialog(message) + } + } + @SuppressLint("SourceLockedOrientationActivity") override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) @@ -37,11 +49,33 @@ abstract class BaseActivity( setupView() } + override fun onStart() { + super.onStart() + LocalBroadcastManager.getInstance(this) + .registerReceiver(pointReceiver, IntentFilter("ACTION_POINT_GRANTED")) + } + + override fun onStop() { + super.onStop() + LocalBroadcastManager.getInstance(this).unregisterReceiver(pointReceiver) + } + override fun onDestroy() { compositeDisposable.clear() super.onDestroy() } + private fun showPointDialog(message: String) { + SodaDialog( + activity = this, + layoutInflater = layoutInflater, + title = "포인트 지급", + desc = message, + confirmButtonTitle = "확인", + confirmButtonClick = { finish() } + ).show(screenWidth) + } + fun showToast(message: String) { Toast.makeText(applicationContext, message, Toast.LENGTH_LONG).show() } diff --git a/app/src/main/java/kr/co/vividnext/sodalive/fcm/SodaFirebaseMessagingService.kt b/app/src/main/java/kr/co/vividnext/sodalive/fcm/SodaFirebaseMessagingService.kt index d87daa6..ceaf17c 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/fcm/SodaFirebaseMessagingService.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/fcm/SodaFirebaseMessagingService.kt @@ -8,6 +8,7 @@ import android.content.Intent import android.media.RingtoneManager import android.os.Build import androidx.core.app.NotificationCompat +import androidx.localbroadcastmanager.content.LocalBroadcastManager import com.google.firebase.messaging.FirebaseMessagingService import com.google.firebase.messaging.RemoteMessage import kr.co.vividnext.sodalive.R @@ -20,7 +21,11 @@ class SodaFirebaseMessagingService : FirebaseMessagingService() { if (SharedPreferenceManager.token.isNotBlank()) { when { remoteMessage.data.isNotEmpty() -> { - if (remoteMessage.data["message"]?.isNotBlank() == true) { + if (remoteMessage.data["type"] == "POINT_GRANTED") { + val intent = Intent("ACTION_POINT_GRANTED") + intent.putExtra("message", remoteMessage.data["message"]) + LocalBroadcastManager.getInstance(this).sendBroadcast(intent) + } else if (remoteMessage.data["message"]?.isNotBlank() == true) { sendNotification(remoteMessage.data) } }