firebase云消息-当应用程序在后台时,FCM数据消息不会在Android中收到



我面临一个很奇怪的问题;我使用GCM 8.4.0发布了以前版本的应用程序,它工作得很好。我更新了一些代码,没有改变任何关于GCM的东西,我意识到当应用程序在后台时不再接收消息。

由于我找不到任何解释,我迁移到FCM。我做了几次不成功的尝试,它开始起作用了!然后我可以成功地发送几个不同的消息,而不需要更改任何内容!Houra ! !

在生成我的签名APK之前,我做了最后一个测试!Arrggghhhhh……当应用程序在后台时,消息不再接收!!!!

我用我的服务器进行了测试,使用高级REST请求,在与我用于成功尝试的相同条件下,没有办法,当应用程序处于前台时,它可以工作,但当应用程序处于后台时,它就不再工作了!!

你遇到过这样的问题吗?

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

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

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

它意味着有用的东西吗?

编辑
我更新到9.2.0,但问题仍然存在。

所以我在几周前得到了它的工作,但重建了几个更新,工作室,sdk, java的项目,我不能得到相同的项目现在工作了。

我花了几个小时探索网络,特别是关于这个问题的Stackoverflow,我能做的答案是"这取决于...."。我个人让它工作,它不再工作了,对你们中的一些人来说它工作,对其他人来说它不工作…

所以我从FireBase快速入门-android项目开始,我能说的是:

不,当应用程序在后台时不接收数据消息。或者我可以说:当应用程序在后台时,不再接收数据消息。

所以我向firebase支持人员询问这个问题,希望得到一个好的答案。我真的很失望,答案是:

你好……团队,

谢谢你联系我们。

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

真诚,K…

我不知道你是怎么想的,但对我来说,这真是一场灾难!

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

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项目从命令行工具完美工作,但不是当你从IDE调试按钮构建它。如果你想从IDE调试按钮构建你的项目,使用Android Studio 1.5(奇怪但工作完美)。

完整的测试用例在这里可用

对不起,我没有注意到delay_while_idle被错误地设置为true

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

** EDIT 2 **

我肯定不能让它工作了

最新更新