移动端消息推送机制

正文字数 | 1775 

预计阅读时间 | 5分钟 

                                                                                                               序

公司内部的后台APP需要加一个消息推送的功能。作为一枚产品小白,以为只要把推送场景、文案、目标角色写清楚就行了。

然而在需求评审的时候,开发问我安卓的手机怎么搞?也是一脸懵逼!

于是上网搜索,才明白移动端消息推送机制的原理。于是想着把自己了解到的信息总结下来,一是有利于自己吸收,二是分享出来让大家也看一下,不对的地方欢迎指正!当然分析都是比较表层的,专业术语和交互技术人员更清楚。

                                                                                                                壹

消息推送分为两种:短连接和长连接。也就是客户端与服务器之间的数据传输交互方式不同。

短连接又称为轮询,方式为pull。客户端定时向服务器发送请求,询问是否有数据,时间频次可以设置。这种的方式更适合web端使用,用在APP有很多弊端:

● 耗内存、耗电量。如果手机上的APP都采用这种方式获取数据,它们必须一直保持后台运行。而且隔三差五自动pull一次,手机卡顿将非常明显,一不小心就变成暖手宝,电量很快被耗尽。

 ● 因为是定时pull,所以时效性差。特别是通讯、社交类的产品,无法实时收到消息。在下一次pull的时候,又会一次性收到很多消息。

 ● 对于服务器压力很大,APP都在同一时间发出请求,服务器处理性能会变差。

所以现在移动端的产品很少使用这种方式。

                                                                                                                  贰

长连接方式为push,服务器主动向客户端发送数据。市面上移动端产品基本采用这种方式,但是ios和android系统有很大的区别。

ios系统的消息推送机制如下图:

可以看出,不论手机上安装了多少个APP,也只有一条长连接,消息最终由苹果服务器进行内置分发。即使用户关闭了APP,依然可以收到消息推送。而且苹果是假后台,虽然APP在后台没有关闭,也是处于不运行状态,只不过可以快速启动。所以苹果的系统操作更流畅,消息推送更便捷。

android系统的消息推送就相对复杂。

原本android和ios使用同样的长连接方式,但是谷歌服务器在内地无法使用,所以。。。

目前大部分的产品选择使用第三方服务平台,因为成本低、到达率高。主流有极光、友盟、个推;BAT大厂的腾讯信鸽、阿里云、百度云;手机制造商小米、华为也开发了自己专属的推送机制。使用手机制造商的推送有什么好处呢?因为自家的手机系统是不会杀死自己的推送,打个比方如果某APP使用的是小米推送,小米手机用户就算关闭了APP,但依然可以收到消息推送。所以像BAT大厂有自己的推送机制,但是产品消息推送依然会选择小米。

市面上的手机品牌太多,没有哪家平台能覆盖到所有的机型。我使用的是友盟,目前支持小米、华为、魅族,只有使用这三个品牌的用户才能收到我们的APP消息推送。

一部手机有那么多的APP,大家可能选择不同的第三方平台,同一个APP也可以使用多个平台混合推送(成本较高)。所以android系统可能存在多条长连接,这是跟ios的第一大区别。

由上图可以看出,如果APP被关闭是收不到数据的,但是ios的可以,这是第二大区别。所以早些年,APP们都想方设法偷偷在后台启动,自从手机管家出现后,很快被发现杀死,可谓一直都在斗智斗勇!

使用第三方平台的好处是,假设用户手机里面有5个APP都使用友盟,只要其中一个APP处于运行状态,另外4个就算被关闭也能收到消息。所以选择一个大家都使用的平台,共享一条渠道可以相互取暖。

对于微信、QQ这种超大体量的APP,应该早就被各家手机厂商设置成白名单了,不管是否关闭,接收消息都畅通无阻!

发送数据要经过第三方平台的服务器,在安全这方面可能会存在。。。平台应该掌握了很多产品的数据。所以平台推送服务虽然免费,但可以发展增值服务,数据统计、分析、风控、行业报告等等,实现商业模式变现。

                                                                                                                     叁

还有一些其他的方法可以实现移动端消息推送:

 ● 自己搭建渠道,但是时间、人力、物力、资源成本太高,一般的公司不可能实现。

 ● SMS拦截短信,服务器有新数据时,先发送一条短信到用户的手机,移动端拦截短信,如果发现是正常短信就放行,如果是特殊短信就主动连接服务器pull数据。这样做短信通讯费用成本比较高。

 ● 还有一些MQTT、XMPP协议等方法,太专业我看不懂,有兴趣的可以搜搜看。

                                                                                                                     肆

不论选择什么方法进行消息推送,最重要的还是尽量少打扰用户。

 ● 重要事件、状态变更、即时通讯、涉及到账户安全,需要第一时间推送告知。

 ● 其他类型消息可选择APP内部推送。

 ● 电商打折促销、老用户提升活跃度的推送,也需要把握好时间段,早9点至晚9点之间比较好。

频繁推送不仅会让用户反感,各种消息混在一起,可能会导致用户忽略重要内容,从而造成损失。

更严重的是用户手动关闭消息推送,或者直接卸载,用户渐渐流失。还怎么赚钱哟。。。

                                                                                                                    - 完 -

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 176,337评论 25 709
  • 用两张图告诉你,为什么你的 App 会卡顿? - Android - 掘金 Cover 有什么料? 从这篇文章中你...
    hw1212阅读 14,515评论 2 59
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,120评论 19 139
  • 1、通过CocoaPods安装项目名称项目信息 AFNetworking网络请求组件 FMDB本地数据库组件 SD...
    阳明AI阅读 16,056评论 3 119
  • 满以为这些年 我们都一样 在搬砖 却不想…… 你偷偷进了这么高大上的公司
    百鹭创投阅读 1,513评论 0 0

友情链接更多精彩内容