feat: 포그라운드 상태에서 FCM data-only 수신 시 인앱 팝업 표시
This commit is contained in:
parent
c0ad98f285
commit
b077a361b9
|
@ -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<T : ViewBinding>(
|
|||
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<T : ViewBinding>(
|
|||
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()
|
||||
}
|
||||
|
|
|
@ -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)
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue