安卓或苹果APP消息推送怎么实现的?

一、手机推送的两种情况

1.app在界面或后台运行(端内)
2.app从后台被移除(端外)

二、端内推送

2.1 轮询

定时向服务器发送Ajax请求,服务器接到请求后马上返回响应信息并关闭连接。(适合小型)(h5的新api web worker单独开一个新的线程很适合用于这个任务)

2.2 长轮询

客户端向服务器发送Ajax请求,服务器接到请求后hold住连接,直到有新消息才返回响应信息并关闭连接,客户端处理完响应信息后再向服务器发送新的请求。(服务器hold连接会消耗资源,返回数据顺序无保证,难于管理维护。)

2.3 长连接(iframe)

在页面里嵌入一个隐蔵iframe,将这个隐蔵iframe的src属性设为对一个长连接的请求或是采用xhr请求,服务器端就能源源不断地往客户端输入数据。 (优点:消息即时到达,不发无用请求;管理起来也相对便。 缺点:服务器维护一个长连接会增加开销。)

2.4 长连接(Websocket)

WebSocket是HTML5开始提供的一种浏览器与服务器间进行全双工通讯的网络技术。依靠这种技术可以实现客户端和服务器端的长连接,双向实时通信。

三、端外推送

可以使用IOS以及Android自带的长连接服务器,分为别APNs(苹果的)以及GCM(安卓的)。这两个服务器主要负责推送系统服务,所以只要手机联网就保持链接—— 但是因为国内无法使用谷歌,所以GCM没法用,手机商也将相应的功能去掉了。

四、Android系统和iOS系统实现推送的区别

iOS 系统的推送(APNS,即 Apple Push Notification Service)依托一个或几个系统常驻进程运作,是全局的(接管所有应用的消息推送),所以可看作是独立于应用之外,而且是设备和苹果服务器之间的通讯,而非应用的提供商服务器。举个例子,腾讯 QQ 的服务器(Provider)会给苹果公司对应的服务器(APNs)发出通知,然后再中转传送到你的设备(Devices)之上。当你接收到通知,打开应用,才开始从腾讯服务器接收数据,跟你之前看到通知里内容一样,但却是经由两个不同的通道而来。

而 Android,就不同,更像是传统桌面电脑系统做法。每个需要后台推送的应用有各自的单独后台进程,才能和各自的服务器通讯,交换数据。另外其实 Android也有类似 APNS 的GCM(Google Cloud Message),属于开发者可选,非强制。

回到稻壳网首页
稻壳客服

扫一扫,微信咨询

请留下需求和联系方式,我们即刻为您准备方案
需求提交成功

提交成功

免费服务热线021-61676039(工作日9:00 ~ 18:00)
×
稻壳客服

扫一扫,微信咨询