当前位置: 首页 > 知识库问答 >
问题:

Android GCM(消息推送):如果应用程序停止,设备不会收到通知

颛孙轩昂
2023-03-14

我在Android项目中使用推送通知(GCM)。

根据GCM教程,我实现了广播接收器,并将其注册到AndroidManifest中。xml

这种广播接收器应该接收消息,即使我的应用程序是关闭的(不仅如果我的应用程序是在后台,但即使它是强制停止)。

但它并不像我预期的那样有效<如果应用程序关闭,则不会调用code>onReceive()方法。看来我对广播接收机的理解是正确的,问题在于我对GCM的期望。

其中一个可能的原因是,如果应用程序关闭,谷歌服务器甚至不会向设备发送通知。所以,它是正确的,我的应用程序可以接收消息(和onRecture()方法将在广播接收器中调用),只有当它运行或在后台(但不关闭)?

提前感谢。

共有3个答案

陶涵育
2023-03-14

文件中说:

Android设备上的Android应用程序无需运行即可接收消息。当消息到达时,系统将通过意向广播唤醒Android应用程序,只要应用程序设置了正确的广播接收器和权限。

检查广播接收器的实现和权限。

张淳
2023-03-14

根据Francesco Nerieri在android gcm线程中的说法:

因此,如果强制停止应用,ICS的预期行为是应用无法接收消息。在JB中,这意味着GCM也将注销应用程序,这是一个不幸的行为,我们正在努力改变这一点(JB中的注销部分)。

戈曾琪
2023-03-14

这种广播接收器应该接收消息,即使我的应用程序是关闭的(不仅如果我的应用程序是在后台,但即使它是强制停止)。

如果用户从设置强制停止您的应用程序,您的代码将永远不会再运行,直到有人手动运行您的组件之一,通常是用户手动启动活动(如Android 3.1)。因此,如果用户从设置强制停止应用,则在较新的设备/模拟器上不会收到GCM消息。

所以,我的应用程序只有在运行或在后台(但未关闭)时才能接收消息(并且在广播接收器中调用onReceive()方法),这是否正确?

从应用程序的角度来看,Android中没有“封闭”的概念。如果“关闭”,您的意思是“没有正在运行的进程,最后一个进程正常终止”,那么是的,您应该接收GCM消息和其他广播。但是,再次强调,强制停止并非“正常终止”。

 类似资料:
  • 所以我在firebase消息传递中经历了一个奇怪的行为。我在我的firebase messaging FCM调用中同时发送[通知]和[数据]对象,当应用程序在后台时,我可以接收到我调用FCM请求的多个推送通知。但现在的问题是,当我在打开应用程序时收到推送通知时,如果我点击了该通知,我将不再收到任何进一步的推送通知。 注意:如果我强行停止然后重新打开,我会再次开始收到通知。 我在几个安卓版本的安卓设

  • 即使应用程序从后台被杀死或从内存中被刷出,我如何接收到设备的fcm通知。我使用维梧、Oppo、松下设备。但在应用程序被终止时未收到通知。

  • 我知道这个问题已经问过很多次了,但是我仍然无法从parse.com获得推送通知 推送通知正在从parse.com成功发送,但我的应用程序没有接收到它们。 大多数人用这个解决了他们的问题:我不能在应用程序中接收来自对我不起作用的Parse bt的推送通知。 我也试过Android--不能接收来自parse.com的推送。 有些人建议改变包的名称,我做了,甚至做了一个新的应用程序,但没有帮助。 这是我

  • 我想更新传入的未读消息徽章计数应用程序的图标,如果设备收到消息推送从fcm和应用程序是在死亡状态。我能够这样做,如果应用程序是在后台,但不能这样做,如果应用程序是在死亡状态。如果我收到fcm消息推送,那么它只显示在通知托盘,但一些我想如何传递或与被杀死的应用程序通信。那么对此有什么解决办法吗

  • 我使用FCM向单个iOS设备发送推送通知,触发http请求到Firebase云功能。在遵循FCM和APNs文档之后,当应用程序在后台运行时,一切都正常工作。我在所有情况下都成功地收到了通知。 唯一的问题是:推送通知不会从睡眠中点亮我的锁屏。我仍然收到推送通知,当我按下home按钮手动唤醒设备时,可以看到它。但是通知本身不会唤醒我的设备。 null 我已经打开了“后台模式”功能>同时选择了“远程通知

  • null 我还试了一下: 关闭应用程序进程-&>;关闭设备-&>;打开设备电源-&>;发送通知。。。并且没有收到通知! 看起来firebase只有在设备启动了应用程序而不是100%关闭的情况下才能收到通知,我的意思是,只需用后退键关闭它而不是关闭应用程序进程。 这怎么可能呢?据推测,即使应用程序关闭,firebase也应该收到通知。 我正在Nexus5X和Android 8.0上进行测试,我使用的