在手机已成为生活必不可分的一部分,push服务伴随而来。ios的apns,android随着谷歌退出中国市场,各家在android的推送不断展开。有厂商的推送,如小米、华为、魅族、oppo等,还有中间商的服务,如极光、友盟等。

苹果推送的apns,还是厂商的推送,都是走的代理,发给代理后即可。而自研的安卓推送,则是要自我维护,更好的保护好长连接,精准化推送人群,以及软实时等方面去设计和考虑。

     这里只谈一下安卓推送。安卓推送的长连接包活关系到app是否能与服务端通信。而android系统又是个生态系统,自身机制可把内存大的、长时间运行的app等干掉。所以,app的包活至关重要。

目前,业内大概三种的包活方案:

1)app唤起联盟,即a和b在一个联盟中,a启动的时候,会唤起b。

2)手机出厂root到白名单。这一点:如微信、qq等app。在git上有人做过实验,要是刷机后,卸载重新安装上述app,在没有启动app的场景下,无法收到消息。

这一点不难理解,哪家的手机也不能在出厂的时候,没有给这些用户量大的app放到白名单中,谁也不想买个手机是个肉鸡。

3)app前端启动,这点如:qq音乐。在手机锁屏等时候,app是运行在前台的,而不是大多数后台运行。这里了解到,有几个app也是这么玩的,app前台放一个很不明显的logo,其实就是前台运行。这样的用户体验其实很差。

 

所有,app保活就成为了至关重要的位置,目前业内常用的有tcp保持长连接和websocket的方式。至于精准化人群,可根据用户画像或者tag标签分类进行筛选。软实时包括服务的设计,网关的设计等。

现在比较火的一个场景是物联网,是一个大方向。把它抽象下,基础模型可以从push推送模型中抽取到。