我想让我的服务器知道设备是否无法再从 GCM 接收消息。例如,当手机关闭或GCMBaseIntentService
被杀时。这可能吗?
问问题
1782 次
2 回答
1
GCM 将保留您在 TTL 中指定的信息。GCM 是一种广播服务,这意味着您不应该知道设备是否收到了消息。
您可以做的一件事是跟踪您的推送消息。当应用程序启动时,它会提交最后收到的消息以与服务器进行检查。
即使设备已开启并在线,也不能保证它会收到来自 GCM 的消息。
于 2012-07-24T11:20:54.930 回答
1
您可以做的一件事是当您从应用程序中注销时,从服务器上注销您的 GCM 服务。这样如果服务器将推送通知发送到设备,则设备不会收到它。并且每当您再次登录您的应用程序时,您都必须再次将您的设备注册到服务器。
您无法通过以下代码注册和取消注册您的 GCM 服务:
登记:
GCMRegistrar.checkDevice(this);
GCMRegistrar.checkManifest(this);
final String regId = GCMRegistrar.getRegistrationId(this);
if (regId.equals("")) {
GCMRegistrar.register(this, SENDER_ID);
} else {
Log.v(TAG, "Already registered");
}
registerReceiver(mHandleMessageReceiver,
new IntentFilter(DISPLAY_MESSAGE_ACTION));
注销:
在 OnDestroy 方法中编写以下代码:
unregisterReceiver(mHandleMessageReceiver);
GCMRegistrar.onDestroy(this);
如果您对此有任何疑问,请告诉我。很乐意为您提供帮助。
于 2012-07-26T07:22:02.607 回答