1.推送的由来:
推送兴起于Email,用于提醒用户邮件的更新. 后续由于移动互联网的迅速发展,推送被广泛应用.
2.推送的原理:
推送的本质原理是客户端与服务器之间的长连接. 基于长连接,服务器可以主动向客户端推送消息, 客户端收到推送消息来展示给用户.
3.推送的实现方式:
方案1-push: 客户端与服务器维护一个TCP/IP的长连接,当有推送消息时,直接向客户端push.
方案2-pull: 客户端定时向服务器pull请求.
两种方式相比较而言, 方案1更合理更有效, 方案2会存在客户端不能长久在后台存活以及消耗电量以及消耗流量等问题.
4.iOS推送:
苹果官方推送: APNS. APNS是由苹果官方维护的, 属于系统级别,所以推送消息比较稳定.
iOS的所有推送信息, 都会发送到苹果服务器,然后由苹果服务器下发到客户端.
5.Android推送:
国外:建议使用谷歌官方推送FCM. FCM是由谷歌官方维护的,同iOS一样, 所有推送信息都会发送到谷歌服务器,再由谷歌下发到客户端.
国内:由于谷歌推送不能在国内使用, 所以需要Android开发者自己去维护长连接.或者选取一些第三方平台.
6.Android推送开发:
方案1: MQTT推送, 此推送是由IBM提出的轻量级的推送, 客户端与服务器之间通过心跳包来监测对方是否存在,然后通过订阅&发布来实现消息的推送.但是缺点也很明显,当客户端被杀死后会无法收到推送.
方案2: 第三方推送, 如腾讯信鸽, 友盟+, 极光推送,小米推送等.目前很多Android的APP在国内都是使用第三方的推送.
方案3: 公司基于XMPP协议开发. 谷歌的推送也是基于XMPP协议开发的.