在我的聊天应用中,我发送新消息的推送通知。通常,当应用程序收到推送时,它会向服务器发送请求以获取新消息的信息。当用户长时间离线并且为该用户累积了大量推送时,我的问题就出现了。然后,当他回到网上时,他立即收到所有推送。 因此,当许多推动时,我的应用程序开始请求每次推送。 如何首先处理所有推送,然后向服务器发出单个请求。
修改1
从服务器获取新消息我构建请求,其中我放置了本地的最后一个消息ID。然后,服务器将在该消息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);
}
答案 0 :(得分:1)
处理此问题的最简单方法是在您发送的GCM邮件中使用collapse_key
。
如果所有GCM消息具有相同的collapse_key
,则当设备处于脱机状态时,GCM服务器将仅为该collapse_key存储一条消息。
当设备重新联机时,它只会收到一条GCM消息,您的应用会向您的服务器发出一条请求。