我正在测试来自谷歌的gcm通知的示例项目 https://developers.google.com/cloud-messaging/android/start
此项目使用的是com.google.android.gms:play-services-gcm:9.0.0
我通过android studio将应用程序安装到手机上。 我从手机上杀了应用程序(不是从设置强行杀死)。 然后,我尝试根据谷歌指令发送通知消息。
通知无法在手机上显示。当我检查logcat时。我找到了关于GCM的以下日志。
06-08 11:19:37.859 5080-5080/? W/GCM-DMM: broadcast intent callback: result=CANCELLED forIntent { act=com.google.android.c2dm.intent.RECEIVE pkg=gcm.play.android.samples.com.gcmquickstart (has extras) }
之后,我在手机中启动应用程序并再次终止该应用程序,然后再次将GCM发送到我的手机。那时,通知可以在我的手机中正确显示。 看来,应用程序需要重新启动一次接收gcm通知或应用程序应该在用户终止应用程序之前收到通知。
我该如何解决这个问题? 据我所知,较低版本的play-services-gcm:9.0.0没有这种问题。
答案 0 :(得分:1)
编辑:也许您的健身房令牌没有时间向服务器注册。您是否从服务器获得令牌和注册确认?
如果您刚开始使用GCM,那么我建议使用FCM,它正在取代GCM。 https://firebase.google.com/docs/cloud-messaging/
同样的事情,但有支持和新的例子。它看起来比GCM更容易使用。
答案 1 :(得分:1)
这是Android平台的一项功能。用户强制停止应用程序会将应用程序置于停止状态,并且不会运行任何代码,包括清单中声明的任何广播接收器。只有当用户明确启动应用程序时,它才处于接收器被触发的状态。
答案 2 :(得分:1)
当我使用apk文件安装应用程序时,不会发生此问题。这个问题只有在我通过在android studio中运行项目安装应用程序时才会发生。感谢您的所有建议和答案。
答案 3 :(得分:0)
我到目前为止最好的解决方法是拔掉手机,杀死应用程序,重新启动应用程序然后再次杀死它。这样做即使在通过android studio安装后也会显示通知。 以下是有关该问题的另一个主题:https://code.google.com/p/android/issues/detail?id=219084