我已经实现了FCM
。消息在Android N
和更低的设备中接收。
依赖性
implementation "com.google.firebase:firebase-messaging:17.1.0"
我已尝试从firebase
控制台发送消息。它在Android N
中显示,而在Android O
中不显示。
我已尝试从服务器发送数据通知。在Android O
中没有接到任何关于onMessageReceived()
的电话。
显示通知时添加通道
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
做任何额外的事情吗?
您是否将FCM设置为高优先级。
将此添加到您的消息正文:
{
...
"priority":"high"
...
}
高优先级。FCM尝试立即传递高优先级消息,允许FCM服务在必要时唤醒休眠设备,并运行一些有限的处理(包括非常有限的网络访问(。高优先级消息通常会导致用户与您的应用程序进行交互。如果FCM检测到他们没有检测到的模式,您的消息可能会被取消优先级。
参考:https://firebase.google.com/docs/cloud-messaging/concept-options#setting-消息的优先级
在服务器端检查此项,推送消息将作为数据有效负载或通知发送对于大于M的android版本,它需要在数据负载中发送通知通过传递发送数据(在服务器端(。当应用程序在后台运行时也适用。