如果通知正文不包含“通知”参数,则当应用程序在后台时,方法onMessageReception()可以正常工作。所有数据都应该粘贴在“数据”中。像这样:
{
"to":"token",
"priority":"high",
"data": {
"title": "Carmen",
"text": "Популярные новости за сегодня!",
etc..
}
}
然后,您可以在代码中解析它,并在通知中显示标题和文本。
例如:
override fun onMessageReceived(remoteMessage: RemoteMessage?) {
Log.d("FirebaseService", "Receive notification: ${remoteMessage?.data}")
remoteMessage?.let { showNotification(remoteMessage) }
}
private fun showNotification(remoteMessage: RemoteMessage) {
val notificationModel: NotificationModel
= getNotificationModelFromMessageData(remoteMessage.data)
val intent = Intent(this, SplashActivity::class.java)
intent.putExtra(NOTIFICATION_ARGUMENT, notificationModel)
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)
val pendingIntent = PendingIntent.getActivity(
this, NOTIFICATION_RECEIVE_REQUEST_CODE,
intent, PendingIntent.FLAG_ONE_SHOT)
val defaultNotificationSound: Uri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION)
val notification: Notification
= NotificationCompat.Builder(this)
.setAutoCancel(true)
.setContentIntent(pendingIntent)
.setContentTitle(notificationModel.title)
.setContentText(notificationModel.text)
.setSmallIcon(R.mipmap.ic_launcher)
.setSound(defaultNotificationSound)
.build()
val notificationManager: NotificationManager
= getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
notificationManager.notify(NOTIFICATION_ID, notification)
}
private fun getNotificationModelFromMessageData(jsonData: MutableMap<String, String>): NotificationModel {
return NotificationModel(
jsonData[TITLE_PARAMETER] as String,
jsonData[TEXT_PARAMETER] as String,
jsonData[DAYS_PARAMETER] as String,
jsonData[MESSAGE_ID] as String)
}
希望有帮助!
在< code>onMessageReceived()方法中,可以尝试添加< code > start activity(intent)代码。这样,当应用程序收到FCM消息时,它就会启动应用程序。像这样...
@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
// Check if message contains a notification payload.
if (remoteMessage.getNotification() != null) {
startActivity(new Intent(this, MainActivity.class));
}
}
手机是OnePlus3T。oxygen OS版本为4.1.6。当应用程序在前台、后台但在内存中时,应用程序会收到通知。但当应用程序不在内存中(即从内存中刷出)时不会收到通知。其他安装了android操作系统版本4.2、5.1.1、6.0.1、7.1.1的设备也会收到通知,即使应用程序不在内存中。 好心建议点什么。提前道谢。
我正在处理FCM通知。当应用程序在后台时,我的通知工作正常,但当应用程序在前台时,我的通知无法接收。我几乎什么都试过了,但都不奏效。当应用程序处于前台时,不会收到通知。 manifest.xml: 代码(FirebaseMessagingService):
我正在发送纯FCM数据通知到一个Android客户端,它们是端到端加密的。android应用程序解密数据通知负载,并从加密的数据创建本地通知。只要应用程序在前台或后台运行,这就可以正常工作:通知负载会被接收、解密,甚至会显示在锁定屏幕上,但只有在应用程序运行的时候才可以。我还查看了消息优先级,并在通知消息的AndroidConfig成员和数据字段中将其设置为“high”(发送到FCM的应用服务器)
问题内容: 我尝试使用范围类型APPLICATION和带有@ Create,@ Beg的方法来注释类,但这似乎不起作用。 我想要的是在应用程序启动时立即启动无限循环。 问题答案: 如果希望在初始化后立即执行方法,则可以使用以下注释:
手动设置“自动取消”标志 改用builder.build() notificationmanger取消(id)和/或取消所有 使用NotificationCompat.Builder 对setContentIntent使用常规启动意图,而不是手动调用StartActivity
按照这个指南,我将一个Android应用程序连接到了Google Firebase云消息服务(FCM ), 我按照这个答案建立了FCM之间的连接 我可以成功接收从FCM控制台发送的消息,但不能从AWS SNS控制台接收。 AWS上记录的消息传递状态显示我发送的每一条消息都成功,而我的设备上没有显示任何通知。 有没有办法检查发生了什么?