feat: 포그라운드 상태에서 FCM data-only 수신 시 인앱 팝업 표시
This commit is contained in:
parent
c0ad98f285
commit
b077a361b9
|
@ -1,11 +1,16 @@
|
||||||
package kr.co.vividnext.sodalive.base
|
package kr.co.vividnext.sodalive.base
|
||||||
|
|
||||||
import android.annotation.SuppressLint
|
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.content.pm.ActivityInfo
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.view.LayoutInflater
|
import android.view.LayoutInflater
|
||||||
import android.widget.Toast
|
import android.widget.Toast
|
||||||
import androidx.appcompat.app.AppCompatActivity
|
import androidx.appcompat.app.AppCompatActivity
|
||||||
|
import androidx.localbroadcastmanager.content.LocalBroadcastManager
|
||||||
import androidx.viewbinding.ViewBinding
|
import androidx.viewbinding.ViewBinding
|
||||||
import io.reactivex.rxjava3.disposables.CompositeDisposable
|
import io.reactivex.rxjava3.disposables.CompositeDisposable
|
||||||
|
|
||||||
|
@ -26,6 +31,13 @@ abstract class BaseActivity<T : ViewBinding>(
|
||||||
resources.displayMetrics.heightPixels
|
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")
|
@SuppressLint("SourceLockedOrientationActivity")
|
||||||
override fun onCreate(savedInstanceState: Bundle?) {
|
override fun onCreate(savedInstanceState: Bundle?) {
|
||||||
super.onCreate(savedInstanceState)
|
super.onCreate(savedInstanceState)
|
||||||
|
@ -37,11 +49,33 @@ abstract class BaseActivity<T : ViewBinding>(
|
||||||
setupView()
|
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() {
|
override fun onDestroy() {
|
||||||
compositeDisposable.clear()
|
compositeDisposable.clear()
|
||||||
super.onDestroy()
|
super.onDestroy()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun showPointDialog(message: String) {
|
||||||
|
SodaDialog(
|
||||||
|
activity = this,
|
||||||
|
layoutInflater = layoutInflater,
|
||||||
|
title = "포인트 지급",
|
||||||
|
desc = message,
|
||||||
|
confirmButtonTitle = "확인",
|
||||||
|
confirmButtonClick = { finish() }
|
||||||
|
).show(screenWidth)
|
||||||
|
}
|
||||||
|
|
||||||
fun showToast(message: String) {
|
fun showToast(message: String) {
|
||||||
Toast.makeText(applicationContext, message, Toast.LENGTH_LONG).show()
|
Toast.makeText(applicationContext, message, Toast.LENGTH_LONG).show()
|
||||||
}
|
}
|
||||||
|
|
|
@ -8,6 +8,7 @@ import android.content.Intent
|
||||||
import android.media.RingtoneManager
|
import android.media.RingtoneManager
|
||||||
import android.os.Build
|
import android.os.Build
|
||||||
import androidx.core.app.NotificationCompat
|
import androidx.core.app.NotificationCompat
|
||||||
|
import androidx.localbroadcastmanager.content.LocalBroadcastManager
|
||||||
import com.google.firebase.messaging.FirebaseMessagingService
|
import com.google.firebase.messaging.FirebaseMessagingService
|
||||||
import com.google.firebase.messaging.RemoteMessage
|
import com.google.firebase.messaging.RemoteMessage
|
||||||
import kr.co.vividnext.sodalive.R
|
import kr.co.vividnext.sodalive.R
|
||||||
|
@ -20,7 +21,11 @@ class SodaFirebaseMessagingService : FirebaseMessagingService() {
|
||||||
if (SharedPreferenceManager.token.isNotBlank()) {
|
if (SharedPreferenceManager.token.isNotBlank()) {
|
||||||
when {
|
when {
|
||||||
remoteMessage.data.isNotEmpty() -> {
|
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)
|
sendNotification(remoteMessage.data)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue