在执行操作之前,如何处理 Android 中的多个推送通知

How can I process multiple push notifications in Android, before doing action

在我的聊天应用程序中,我发送新消息的推送通知。通常,当应用程序收到推送时,它会向服务器发送请求以获取新消息的信息。当用户长时间离线时,我的问题就会出现,并且为该用户积累了大量推送。然后,当他重新上线时,他会立即收到所有推送。 因此,当许多推送到来时,我的应用程序开始为每次推送发出请求。 如何先处理所有推送,然后再向服务器发出单个请求。

编辑 1

为了从服务器获取新消息,我构建了一个请求,将我在本地拥有的最后一条消息 ID 放在那里。然后服务器将 return 我在该消息 ID 之后的所有新消息。 这是我的改造代码。

public interface GroupChatFromDateInterface {
        @GET("/groups/{groupId}/show_messages.json")
        List<Message> groupMessages(@Path("groupId") int groupId,
                                    @Query("auth_token") String token,
                                    @Query("after_message_id") int messageId);
    }

处理此问题的最简单方法是在您发送的 GCM 消息中使用 collapse_key

如果您的所有 GCM 消息都具有相同的 collapse_key,当设备处于离线状态时,GCM 服务器将只存储该 collapse_key 的一条消息。

当设备重新联机时,它只会收到一条 GCM 消息,并且您的应用会向您的服务器发出一个请求。