刚入行的时候就用过第三方消息推送平台进行手机通知的推送,当时着实让我感觉很头疼,很多术语都不懂,后面也没有进一步地思考。昨天看到一个比当年的我要好些的菜鸟问了一个关于推送的问题,让我有了整理推送原理的想法。当然,我也只是凭着当前的积累进行推算,毕竟我没写过手机APP
。
下面就以友盟推送为例,推送的过程简单来说分为三步:
- 手机
APP
集成友盟推送的SDK
,SDK
配置好与友盟账号相关的信息。 - 开发者调用友盟的推送
API
,指定发送的类型(广播、组播和单播)和消息; - 友盟的推送平台向指定的手机分发消息,手机接收到消息;
这里贴张友盟推送平台的原理图吧。
先从第 1 步说起,这里很容易理解,友盟推送平台作为推送的服务端,开发者可以通过它开放的API
设置需要推送的消息,就是常见的接口调用。那么推送平台是怎么将消息推送到指定手机的呢?
关键就在于SDK
。APP
集成的SDK
在安装后是作为服务形式存在的,简单来说就是只要手机不关机,它就会永久运行,并可以定时跟推送平台交换信息。在集成SDK
时,需要绑定友盟账号的相关配置,这可以区分不同APP
的推送。SDK
在运行时会自动获取或生成能唯一识别该手机的deviceToken
,然后跟推送平台建立连接,将deviceToken
发给推送平台,推送平台就会将该连接跟deviceToken
以及APP
进行绑定。至此,推送平台即获取到该APP
的所有设备信息,通过已建立的连接,指定deviceToken
之后即可进行广播、组播以及单播。
当然,deviceToken
并不是唯一的推送类型标识,例如,SDK
还可以将定位发送给推送平台,达到推送消息给指定区域用户的目的。
另外,当用户量超大时,不会立即发送消息,而是定时分批地发送,这就给了发送者吃后悔药的机会。友盟任务取消的功能,也是根据这种机制来实现的。
其实手机消息推送跟WebSocket
之类的推送技术并无太大区别。
有了扎实的基础,才能看透技术的本质。不必将过多时间耗在花里胡哨的东西上。话不多说,继续啃计算机基础去~