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

fra*_*lbo 7 android firebase-cloud-messaging

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

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

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

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

你有这样的问题吗?

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

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

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

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

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

fra*_*lbo 6

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

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

所以我从FireBase quickstart-android 项目开始,我能说的是:

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

所以我向Firebase-support提出这个问题,希望得到一个好的答案。我真的很失望,答案是:

你好...团队,

感谢您与我们联系。

实际上,不应在后台接收数据负载。数据消息意图被传递到应用程序并在 onMessageReceived() 方法(不会在后台触发)内接收。当应用程序在后台时,仅发送显示消息/通知。

...

真诚的,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) }
Run Code Online (Sandbox Code Playgroud)

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

重要编辑从命令行工具
构建这种项目,例如FireBase quickstart-android 项目完美地工作,但当你从 IDE 调试按钮构建它时就不行了。如果您想从 IDE 调试按钮构建您的项目,请使用Android Studio 1.5奇怪但工作完美)。

完整的测试用例可在此处获得。

  • *数据消息意图被传递到应用程序并在 onMessageReceived() 方法内接收(不会在后台触发)。仅当应用程序处于后台时才发送显示消息/通知。* 这些陈述均不正确 (2认同)