当应用程序处于后台时,Android中未收到FCM数据消息

时间:2016-07-02 16:21:28

标签: android firebase-cloud-messaging

我面临一个非常奇怪的问题;我使用GCM 8.4.0发布了我的应用程序的先前版本,该版本运行良好。我更新了一些代码,没有改变任何关于GCM的内容,我意识到当应用程序在后台时不再收到的消息。这在几个不同的设备上。

由于我无法找到任何解释,我迁移到了FCM。我做了一些不成功的尝试,它开始工作了!?!然后我能够成功发送几个不同的消息,而不会改变任何东西! Houra !!!!

在生成我签名的APK之前,我做了最后一次测试!当应用程序处于后台时,Arrggghhhhh ....消息不再被收到!!!!

我使用我的服务器进行测试,使用高级REST请求,条件与我用于成功尝试的条件相同,但是,当应用程序处于前台时,它可以正常工作,但当应用程序处于后台时,它根本不再有用! !!

你是否经历过这样的问题?

我确切地说,当我收到前景中的应用程序的消息并从中生成通知时,有两种不同的行为:

  • 当应用程序能够在后台接收时,当我从最近的应用列表中滑出应用时,通知仍然存在。

  • 当应用程序无法在后台接收时,就像我目前的情况一样,当我将应用程序滑出时,生成的通知将被删除。

这是否意味着有用的东西?

修改
我更新到9.2.0但问题仍然存在。

2 个答案:

答案 0 :(得分:4)

所以我几周前就开始工作,但是用几个更新,工作室,sdk,java重建项目,我现在不能再使用同一个项目了。

我花了几个小时来探索网络,特别是关于这个问题的Stackoverflow,我能做的答案是“这取决于......”我个人得到它的工作,它不再起作用,对你们中的一些人来说有效,对其他一些人来说......

所以我从FireBase quickstart-android project开始,我可以说:

不,当应用程序处于后台时,不会收到数据消息。或许我会说:当应用程序处于后台时,不再收到数据消息。

所以我问这个问题Firebase-support期待一个好的答案。我真的很失望,答案是:

  

你好......团队,

     

感谢您与我们联系。

     

实际上不应该在后台接收数据有效负载。数据消息意图被传递给应用程序并在onMessageReceived()方法中接收(在后台不会触发)。仅当应用程序处于后台时才会显示消息/通知。

     

...

     

此致   ķ...

我不知道你对此的看法,但对我来说这是一场真正的灾难!

我不知道这是不是暂时的情况,也许有人可以获得更准确的信息,因为我无法相信不再支持背景信息接收。或者至少对我们来说,因为根据我的日志,设备会收到显示以下消息的背景消息:

07-18 15:28:34.371 3068-3068/? W/GCM-DMM: broadcast intent callback: result=CANCELLED forIntent { act=com.google.android.c2dm.intent.RECEIVE flg=0x10000000 pkg=com.google.firebase.quickstart.fcm (has extras) }

但是没有调用onMessageReceive()回调!

重要编辑
从命令行工具构建此类项目(例如FireBase quickstart-android project)可以完美地工作,但是当您从IDE调试按钮构建它时则不行。 如果您想从IDE调试按钮构建项目,请使用Android Studio 1.5奇怪但功能完美。

完整的测试用例可用here

答案 1 :(得分:3)

抱歉,我没有注意delay_while_idle错误设置为真。

修改
这种行为无论如何都是奇怪的,因为即使使用delay_while_idle= true,我以前发布的使用GCM 8.4.0并使用Studio 1.5.2构建的应用程序也会在后台接收消息。
使用Studio 2.1.2重建了同一个项目。 (除了要求更新到gradle 2.1.2之外,项目中没有任何变化)在后台没有收到消息,这是预期的行为。
但它在进入前景时并没有收到它! 更新到FCM 9.2.0的工作方式类似,即它在后台没有收到消息,好的,但它在进入前台时没有收到它,这似乎不正确。

**编辑2 **

我明确无法让它继续工作