从 GCM 中删除消息

Remove message from GCM

我有一个应用程序,用户在其中登录,从 GCM 获取注册 ID 并将其发送到服务器。我的服务器将使用该注册 ID 和 GCM 向用户发送通知。现在,我遇到以下情况:用户离线,服务器向他发送通知,但下次他登录时,他正在另一台设备上获取新的注册 ID。是否可以从服务器发送到旧设备的 GCM 中删除所有通知?

如果用户最终重新登录到第一台设备,或者新用户将来登录到该设备,则通常不需要(甚至不建议)频繁调用 unregister()。

无法 "take back" GCM 服务器已发送的消息。但是,您可以 "screen" 根据预期用户传入消息。比方说,如果用户 X 已登录,并且收到一条消息并打算发送给用户 Y。您可以在 data 条目中将用户 Y 指定为收件人。由于用户 Y 不是登录用户,discard/ignore 消息。

您可能需要根据需要查看的其他设置:time_to_livedelay_while_idle(说明 here)。

希望我理解你的担忧。