как отправить сообщение FCM в MainActivity - PullRequest
0 голосов
/ 28 февраля 2020

Я хочу показать полученное сообщение FCM в моем mainActivity как значок bottomNavigation, но как я могу отправлять данные по активности из служб? Я использовал:

override fun onMessageReceived(p0: RemoteMessage) {
    super.onMessageReceived(p0)

        val intent = Intent(this, MainActivity::class.java)
        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
        intent.putExtra("badge", p0.notification?.body)
        startActivity(intent)
    }

, но этот код открывает новую функцию MainActivity, а есть еще один!

1 Ответ

1 голос
/ 28 февраля 2020

Вы можете попробовать отправить LocalBroadcast, если ваша служба и действие выполняются в одном и том же процессе.

// Inside the service
override fun onMessageReceived(p0: RemoteMessage) {
    super.onMessageReceived(p0)
    val lbm = LocalBroadcastManager.getInstance(this)
    val dataIntent = Intent().apply { 
        putExtra("badge", p0.notification?.body) 
    }
    lbm.sendBroadcast(dataIntent)
}

// Inside the activity
private val lbm by lazy { LocalBroadcastManager.getInstance(this) }
private val badgeListener = object : BroadcastReceiver() {
    override fun onReceive(ctx: Context, data: Intent) {        
         val count = intent.getIntExtra("badge")
         // Update the view here
    }
}


override fun onCreate(){
    // Other stuff
    lbm.registerReceiver(badgeListener)
}

override fun onDestroy() {
    lbm.unregisterReceiver(badgeListener)
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...