我想让我的服务器知道设备是否无法再从GCM接收消息。例如,当手机关机或GCMBaseIntentService
被杀时。这可能吗?
答案 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);
如果您对此有任何疑问,请告诉我。非常乐意帮助您。