【发布时间】:2019-08-04 13:38:34
【问题描述】:
我正在开发一个使用firebase云消息接收通知的android应用程序,我将通知和数据从fcm发送到我的应用程序,当我的应用程序在点击通知栏时,我想根据fcm的数据进行操作背景,我使用下面的代码,当应用程序在前台时可以正常工作,但在后台它只是打开应用程序而不做任何操作:
class MyFirebaseMessagingService : FirebaseMessagingService() {
val TAG = "FirebaseMessagingService"
var count = 0
@SuppressLint("LongLogTag")
override fun onMessageReceived(remoteMessage: RemoteMessage) {
if (remoteMessage.data != null && remoteMessage.data.isNotEmpty()) {
val id = remoteMessage.data["id"].toString()
val activityName = remoteMessage.data["view"].toString()
val intent = Intent(this, NewsDetailesActivity::class.java)
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
NewsDetailesActivity.currentNewId = id
startActivity(intent)
showNotification(remoteMessage.notification?.title, remoteMessage.notification?.body,activityName,id)
}
}
private fun showNotification(title: String?, body: String?,activityName:String,id:String?) {
var intent = Intent(this, NewsDetailesActivity::class.java)
if (activityName == "news")
{
intent = Intent(this, NewsDetailesActivity::class.java)
}
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)
NewsDetailesActivity.currentNewId = id!!
val pendingIntent = PendingIntent.getActivity(
this, 0, intent,
PendingIntent.FLAG_ONE_SHOT
)
val soundUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION)
val notificationBuilder = NotificationCompat.Builder(this, "channelId")
.setSmallIcon(R.drawable.logo_orang)
.setContentTitle(title)
.setContentText(body)
.setAutoCancel(true)
.setSound(soundUri)
.setContentIntent(pendingIntent)
val notificationManager = getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
notificationManager.notify(count, notificationBuilder.build())
count += 1
}
}
如何修改我的应用以在后台运行?
【问题讨论】:
-
在您的应用处于后台时检查 this 关于数据负载的答案
标签: java android kotlin notifications firebase-cloud-messaging