APP在前台运行和APP被清理后分别对应着推送的两种形式,当APP在前台运行的时候,此时的推送成为端内推送(端是指客户端);当APP进程由于被清理或者其他原因,APP的长连接断开,此时的推送称为端外推送,至于你说的在后台运行也属于端内推送,因为APP从前台退到后台,在短时间内APP没有被杀死,APP自带的长连接仍然有效,所以仍属于端内推送范畴。

端内推送的话一般都是走APP自己实现的一套推送系统,推送服务器是自己的,客户端维护一条长连接连到自己的推送服务器,所以端内推送可以保证你的APP没被清理前,应用在前台与在后台都可以收到推送。

另外一种情况就是你的APP被强杀掉了,这个时候就只能倚靠端外推送了,一般端外推送都是集成市场上的第三方推送;这个时候你可能会问了,集成第三方推送就可以让我的APP在强杀后也能收到消息了?如何做到的呢?其实这个很简单,第三方推送一般都会用“长连护保”功能来保证消息的到达,以下是友盟推送对长连护保的解释:长连互保,用户设备中任何一个集成过友盟推送的app打开,即使他的app没打开也能启动push service,收到推送。

意思就是说假设你接入了友盟,而恰好今日头条也接入了友盟。有一天你的App被杀死了,但是今日头条的装机量估计比你的要大啊,这时用户启动了今日头条,那么推送系统也就会通过共享的推送通道顺便把你推送消息送达到手机上,然后还可能把你的进程也唤醒(被“保活”了)。

这样端内推送和端内推送相互配合就可以大幅度提升消息的到达率。