我已经实现了FCM
。消息正在Android N
及更低版本的设备中接收。
依赖性
implementation "com.google.firebase:firebase-messaging:17.1.0"
我尝试从firebase
控制台发送消息。它显示在Android N
中,但没有显示在Android O
中。
我尝试从服务器发送数据通知。 onMessageReceived()
中的Android O
上没有任何电话。
在显示通知时添加了频道
val notificationManager = getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
// Since android Oreo notification channel is needed.
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
val channel = NotificationChannel(channelId,
"CRW notification channel",
NotificationManager.IMPORTANCE_HIGH)
notificationManager.createNotificationChannel(channel)
}
notificationManager.notify(0 /* ID of notification */, notificationBuilder.build())
我已经在 Samsung S2
和 One plus 6
中进行了检查。
除了在显示通知时设置通知渠道外,我还需要为Android O
做其他事情吗?
答案 0 :(得分:1)
您是否将FCM设置为高优先级。
将此添加到您的邮件正文中:
{
...
"priority":"high"
...
}
高优先级。 FCM尝试立即传递高优先级消息,从而允许FCM服务在必要时唤醒睡眠设备并运行一些有限的处理(包括非常有限的网络访问)。高优先级消息通常应导致用户与您的应用进行交互。如果FCM检测到没有这种模式,则您的邮件可能会被取消优先级。
参考:https://firebase.google.com/docs/cloud-messaging/concept-options#setting-the-priority-of-a-message
答案 1 :(得分:-1)
在服务器端检查此内容,将推送消息作为数据有效负载或通知发送 对于大于M的Android版本,它需要在数据有效载荷中发送通知 通过传递发送数据(在服务器端)。 当应用程序在后台运行时也可以使用。