1

我想让我的服务器知道设备是否无法再从 GCM 接收消息。例如,当手机关闭或GCMBaseIntentService被杀时。这可能吗?

4

2 回答 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 回答