Android的GCM(推送通知):如果应用程序已停止设备没有收到通知(Android GCM (p

2019-06-17 20:28发布

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

根据GCM教程中,我实现广播接收器,并在其注册AndroidManifest.xml

这种广播接收机应接收消息,即使我的应用程序被关闭(不只是如果我的应用程序是在幕后,但即使是力停止)。

但是,如我所料不工作。 onReceive()如果应用程序被关闭时不被调用的方法。 看来,我的广播接收机的理解是正确的,问题是我了解GCM预期。

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

提前致谢。

Answer 1:

这种广播接收机应接收消息,即使我的应用程序被关闭(不只是如果我的应用程序是在幕后,但即使是力停止)。

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

那么,是不是正确的,我的应用程序能够接收消息(和的onReceive()方法将在广播接收器调用),只有当它正在运行或在后台(而不是封闭的)?

有没有从应用的角度来看在Android的“封闭”的概念。 如果由“封闭”,你的意思是“有没有正在运行的进程,其中最后一个进程正常结束”,那么,你应该得到GCM消息和其他节目。 但是,再次发力,停止不“正常结束”。



Answer 2:

据弗朗西斯Nerieri在这个Android的GCM螺纹 :

所以,如果你强行停止应用程序,为ICS预期的行为是为应用程序不接收消息。 在JB这意味着GCM也将注销该应用程序,这是一个不幸的行为,我们正在努力(在JB的注销部分),以改变这种状况。



Answer 3:

在文件它说:

在Android设备上的Android应用程序并不需要运行接收消息。 当消息到达时,只要该应用程序设置为与适当的广播接收机和权限的系统,将唤醒经由意图广播Android应用。

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



文章来源: Android GCM (push notification): device doesn't receive notification if application is stopped