推送是什么?
大家可能听说过, iOS 系统有统一的推送通道,而安卓则每个 APP 各自为政,几乎每个软件都请求后台任务以接收通知。而现在,安卓统一推送联盟成立,目标就是为了解决这个问题。不过,你知道这个“推送通道”的原理是什么吗?
概括起来说,就是:各软件的服务商将通知统一发送到指定的服务器上(例如,对于 iOS 设备而言,就是苹果的服务器),然后该服务器再把这些通知发给各设备,各设备再识别用于打开该通知的 APP 并匹配。
看起来这是一个很简单的事情,不过,如果真的是这么简单的话,那简直是太完美了,也不存在“开发半小时, Debug 一整天”的问题了。下面,我以 Windows 平台的推送为例,详细解释推送的原理。(至于为什么选择 Windows 平台的推送,因为有中文文档而且好找……)
- 在提交应用之前,在开发平台上先进行注册。
- 应用在运行时,从通用 Windows 平台请求推送通知通道,并获取有时间限制的 URI。该 URI 需要定期更新。
- 应用将 URI 发送到服务商自己的云服务。然后服务商将 URI 存储在自己的云服务上,以便在发生通知时访问该 URI。
- 在发送通知之前,云服务需要向 WNS 验证该推送服务。该验证具有有限期,在此之前持续有效,无需每条通知都重复申请。
- 当云服务有要发送的更新时,将使用上述的通道 URI 通知 WNS。
- WNS 接收请求,并返回确认到云服务,并将在适合的时候(不保证即时)将通知推送到相应的设备。
看了这些原理,你应该对推送通知有大概的了解了。至于如何请求推送通道、如何请求验证等问题,限于篇幅这里也解释不清,大家可以了解有关网络协议的资料。感谢你看到这里。