FCM推送消息在Oreo中未接收到。

3

我已经实现了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())

我已经在 三星S2一加6 上检查了这个。

除了在显示通知时设置通知通道之外,我是否需要为 Android O 做任何额外的事情?


你有没有查看这个**Oreo系统中通知不显示的问题**? - AskNilesh
是的,我在显示通知时添加了通道。 - Suneesh Ambatt
尝试在设置中开启自动启动后发送通知。 - Dev
@sunsun,这个问题有什么更新吗?你已经解决了吗? - Jo Dar Gaya Woh Mar Gaya
实际上,我在Vivo V9上遇到了同样的问题。在我的设备上,我无法获取FCM令牌。 - prakash Mp
显示剩余3条评论
2个回答

1

你是否将你的 FCM 设置为高优先级

在消息正文中添加以下内容:

{
  ...
  "priority":"high"
  ...
}

高优先级。FCM会立即尝试传递高优先级消息,允许在必要时唤醒休眠设备并运行一些有限的处理(包括非常有限的网络访问)。高优先级消息通常应导致用户与您的应用程序进行交互。如果FCM检测到它们不这样做的模式,则可能会降低您的消息优先级。
参考:https://firebase.google.com/docs/cloud-messaging/concept-options#setting-the-priority-of-a-message

嗨,我这里有一个类似的问题需要问,如果您能提供帮助就太好了。https://stackoverflow.com/questions/51571235/cloud-function-fcm-send-error。谢谢。 - Jo Dar Gaya Woh Mar Gaya

-1

检查一下,服务器端推送消息是以数据负载还是通知的形式发送的。 对于Android版本大于M的情况,需要在数据负载中发送通知。 通过在服务器端传递发送数据的方式实现。 也可以在应用程序后台运行时起作用。


数据负载作为通知发送。在Android L、M和N中,这正常工作(无论是在后台还是前台)。 - Suneesh Ambatt
检查一下这个问题是否只出现在后台。 - LadyEinstien
我建议您同时发送通知和数据负载 { "message":{ "token":"bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...", "notification":{ "title":"葡萄牙 vs 丹麦", "body":"精彩比赛!" }, "data" : { "Nick" : "马里奥", "Room" : "葡萄牙VSDenmark" } } } - LadyEinstien

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接