当设备无法从GCM接收消息时执行某些操作

时间:2012-07-24 11:05:40

标签: android google-cloud-messaging

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

2 个答案:

答案 0 :(得分:1)

GCM将保留您在TTL中指定的信息。 GCM是一种广播服务,这意味着您不应该知道设备是否已收到该消息。

您可以做的一件事就是跟踪推送消息。当应用程序启动时,它会提交最后收到的消息以与服务器核对。

即使设备处于开启和在线状态,也无法保证它会从GCM收到消息。

答案 1 :(得分: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);

如果您对此有任何疑问,请告诉我。非常乐意帮助您。