【问题标题】:onMessageReceived not called when phone is asleep手机休眠时未调用 onMessageReceived
【发布时间】:2017-12-09 11:47:30
【问题描述】:

我创建了一个应用程序,当收到来自 FCM 的消息时会启动警报。应用在前台、后台或 Activity 关闭时都能正常工作。

但是当手机长时间处于睡眠模式(不知道确切时间)时,onMessageReceived方法不会被调用,直到手机被手动唤醒。 FCM消息是具有高优先级的数据消息,根据文档应该能够唤醒手机。

有什么方法可以解决这个问题? 使用 WakeLock 是正确的方式,还是会增加电池寿命?

【问题讨论】:

  • 我猜他们必须是主题消息??对吗?
  • 是的,我将消息发送到所有应用用户都自动订阅的主题。
  • 就是这样@PaulB,你总是会有一些奇怪的行为,因为主题消息虽然可以优先high,但它们总是倾向于被赋予自己的优先级并且看起来优先级较低(有时),因为它们被考虑很宽泛,也不紧急。如果您的案例需要最快的方式,请发送到设备或设备组。这不仅仅是我的经验!
  • 好的,谢谢您的意见。我将尝试将其直接发送到设备,看看会发生什么。
  • 我敢肯定,如果您将优先级设置为高,这将始终有效。祝您编码愉快!

标签: android firebase-cloud-messaging android-wake-lock


【解决方案1】:

从后端发送这种格式的通知:

{ 


"notification" : {
    "click_action" : ".MainActivity", 
    "body" : "new Symulti update !", 
    "title" : "new Symulti update !", 
    "icon" : "ic_notif_symulti" }, 



"data": { ... },


"to" : "c9Vaa3ReGdk:APA91bH-AuXgg3lDN2WMcBrNhJZoFtYF9" }

这里的关键是添加

"click_action" : ".MainActivity"

用于处理点击动作。

【讨论】:

  • 当我首先点击通知时,这不会有任何影响吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-08-23
  • 1970-01-01
  • 1970-01-01
  • 2020-08-31
  • 2011-01-30
  • 1970-01-01
  • 2016-03-24
相关资源
最近更新 更多