对于Google Cloud Messaging,应该接收通知的应用程序是否必须在前台或后台运行才能处理推送通知消息?
发布于 2016-06-20 10:21:36
它根本不需要运行,这就是为什么你要向清单中添加一个广播接收器(即使你的应用程序不活动,它也会运行的GCMReceiver)。当系统接收到下行消息时,此接收器将触发一个组件(通常是处理传入流的服务)。
<receiver
android:name="com.google.android.gms.gcm.GcmReceiver"
android:exported="true"
android:permission="com.google.android.c2dm.permission.SEND" >
<intent-filter>
<action android:name="com.google.android.c2dm.intent.RECEIVE" />
<action android:name="com.google.android.c2dm.intent.REGISTRATION" />
<category android:name="YOUR_PACKAGE_NAME" />
</intent-filter>
</receiver>发布于 2016-06-20 10:27:37
不是
你的应用程序只需要注册广播即可。这通常按如下方式工作:
在Google服务器和您的应用程序中运行的GCM服务之间建立了一个套接字连接。因此,当你想向你的应用程序发送推送通知时,你只需要求谷歌推送服务器将消息推送到客户端即可。服务器将消息写入套接字,客户端的服务只发送一个广播。在接收时调用广播接收器,然后启动应用程序。
优点是,每个应用程序都不必与其服务器保持持续的套接字连接以进行实时更新。
如果您打算使用GCM,并在收到推流后在后台执行一些繁重的操作,请考虑阅读有关唤醒锁的内容。
https://stackoverflow.com/questions/37913818
复制相似问题