Android push推送消息到达成功率优化
问题:服务器向客户端发送消息。未考虑客户端是否在线,这样的消息到达率是很低的。
第一次优化:使用服务器离线缓存数据,判断如果客户端未连接,继而将消息保存到数据库,在下一次客户端和服务器进行连接成功后,取出数据发送给客户端。并将该条消息从数据库中删除。但这种做法虽然得到了优化,但是还有一种情况会使得消息无法百分百到达,当客户端与服务器断开连接后,服务器在发送消息的时候,并未意识到客户端已经断开掉,这个时候发送出去的消息是无法到达的,为了解决这个问题进行了第二次优化。
第二次优化:为了解决上面的问题,采用的策略是:客户端回执消息给服务器,当每次服务器向客户端发送消息的同时,会将这条消息保存在数据库中,如果当客户端收到该消息后,也同时向服务器发送一条消息,告诉服务器我已经收到了这个消息,然后服务器在数据库中将这条消息删除。