分享
移动端即时通讯 (IM) Apps 有无必要实现自己实现推送系统?
目前比较流行的几大即时通讯 Apps: Facebook Messenger, WhatsApp, Telegram, 微信在 Android 客户端均自己实现了独立的推送系统;而在 iOS 端上(我不太了解 iOS APNs 的技术细节)也有证据表面 Facebook 使用了 APNs 和 MQTT 结合的方法以达到他们对即时推送的质量要求。请问,排除墙的因素(上述几个 App 除微信外,绝大多数目标群体不在中国大陆)单就技术来说,截至 2015 年 10月,APNs 和 GCM 的推送在即时通信方面,是否依然达不到即时通信的要求?IM 软件对即时通讯的延迟要求普遍是多少?GCM 的 Priority 模式的到达率和延迟程度到底如何?在 Android 平台要也开始限制后台服务的今天,依然使用后台自己的推送服务的成本是否过高?Android 上 Telegram 可以选择关闭自带推送,仅使用 GCM,这对于推送质量的影响到底有多大?
回复 ( 7 )
既然说到GCM,那应该不是针对国内的环境。
我们以前对比过自己做的push和GCM的推送效率,地点是泰国,台湾,印尼等等,以10%的用户总量为测试,大概是百万机器的级别,最后的结论是除了印尼,我们自己实现的推送效率和GCM不相上下,印尼GCM的推送十分差,怀疑是和当地网速有关。
我们的策略是双线并跑,利用大量测试证明自家的和GCM一样好使,如果有GCM,那就优先考虑,如果没有自然跑自己的服务,最近适配Android M,GCM的优势明显,能够减少Doze和App Standby的干扰,所以我们的策略会进一步向GCM倾斜,所以app保持从两个渠道收push的能力。
题主提到了GCM的Priority,我个人不认为这个会影响到达率,官方用词也是十分谨慎
目前为止,从来没测出这个延迟,手动进入doze/app standby都是秒到,区别主要在后台网络资源等等,但没有大规模测试,无法证明什么情况能导致这个延迟。
最好还是自己的推送加GCM一起配合吧,你也说了,主流APP都是这么搞的,毕竟这样可以大幅度提高推送到达率
Telegram关闭自带推送了,安全就不能保障,它的DH算法是和通讯层绑定的。
做聊天的话,MQTT只是开始,通讯的协议报文还要自己定义哦~
在国外GCM相当稳定,应该可以满足IM了,我们在韩国搞过一个用GCM做Push的项目,感觉GCM比较可靠。
国内做IM,假如技术实力够,自己搞,实力不够,买外面的服务吧。
GCM没有细看过,但是APNs说明该服务会尽可能保证其推送速度但是无法保证。这也很容易理解:这项服务免费。
不知道题主定义的“推送”是什么,我这样问是因为发现这个概念非常混乱。比如在某些推送服务提供商那里,“推送”就是推广告,因为他们要你嵌入一大堆只跟广告相关的代码。
所以我澄清下我说的推送就是把一个信息从服务器发到客户端。那么推送就分两块,一个是app运行时一个是app不运行时。不运行时你只能依赖操作系统提供的功能。运行时,当然很有必要实现自己的推送,因为这是核心功能,不可能依赖于外部的免费不可控的服务。
同意楼上说国内做IM,假如技术实力够,自己搞,实力不够,找专业的第三方做。
话说国内的IM,除了微信有自己的推送系统,其它几乎都是用的第三方推送服务吧,推送说难不难,说简单也不那么简单,你要考虑很多方面的问题,比如怎么省电省流量,到达率怎样,延时性怎样,而这些很多专业的第三方推送服务商都可以解决,比如个推,我们通过自有协议,解决推送耗电耗流量的痛点,另外,我们家还有智能推送、应景推送等一系列增值服务,帮助你做精细化运营,广告就到这,更多信息请百度移步官网。
总的来说,推送还是选第三方服务吧,安卓那么混乱,与其花很多时间和经历去做本不那么需要自己做的事情,还不如安心做好自己的产品,给用户更好的服务和体验。
目前高端Android用户普遍会禁用应用后台残留服务,所以建议上GCM。
安卓用户。
最好用gcm,安卓太乱了,不统一电池撑不住。
良好的使用环境需要大家一起努力。