正文字数 | 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点之间比较好。
频繁推送不仅会让用户反感,各种消息混在一起,可能会导致用户忽略重要内容,从而造成损失。
更严重的是用户手动关闭消息推送,或者直接卸载,用户渐渐流失。还怎么赚钱哟。。。
- 完 -