我最近也在做 IM 和推送类似的事情,经过一圈调研,最后确定下如下方案
https://github.com/dcy/epush :
1.app 还在的情况下,走自己的长链接,用的 MQTT
2.接入各个厂商系统级的推送,只有系统级的才能保证送达,不被干掉
3.app 被操作系统干掉的时候,走各自厂商的官方推送,苹果走 APNS ,小米走小米推送,华为走华为推送,魅族走 Flyme
这样下来,至少送达率什么的好很多。
接下来再说说厂商推送的坑:
小米:透传的方式只能 app 打开才能用,所以说明你只能用通知栏
华为:手机重启要么开启一次 app ,要么设置开机子启动,不然收不到推送(据说后续会解决)
如果有什么其他的观点,欢迎交流