iOS 系统的推送(APNS,即 Apple Push Notification Service)依托一个或几个系统常驻进程运作,是全局的(接管所有应用的消息推送),所以可看作是独立于应用之外,而且是设备和苹果服务器之间的通讯,而非应用的提供商服务器。
iOS 设备是如何实现推送功能的呢?下面我简单给大家介绍一下。
首先我要说的是,iOS 的消息推送机制面世之时是一种全新的解决方案,应用本身不能有常驻的后台进程,系统的开销少,内存使用更少,电量也更少。而 Android 的特点,虽然开销大,优点是更稳定快速,但不明显。
IOS中消息的推送有两种方式,分别是本地推送和远程推送,iOS消息推送的工作机制可以简单的来概括:
Provider是指某个iPhone软件的Push服务器,APNS是Apple Push Notification Service的缩写,是苹果的服务器。
具体的可以分为三个阶段:
第一阶段:应用程序把要发送的消息、目的iPhone的标识打包,发给APNS。
第二阶段:APNS在自身的已注册Push服务的iPhone列表中,查找有相应标识的iPhone,并把消息发送到iPhone。
第三阶段:iPhone把发来的消息传递给相应的应用程序,并且按照设定弹出Push通知。
其实APNs 是 iOS 成功的一个非常重要的设计!我先来说下原理。
iOS 的推送:就是 Apple 官方的 APNs (Apple Push Notification service)。
Android 的推送:Google 官方的是 GCM (Google Cloud Messaging)。
在我看来,其实在本质上APNs 与 GCM 是类似的技术实现原理,就是系统层有一个常驻的 TCP 长连接,一直保持的长连接,即使手机休眠的时候也在保持的长连接。不知道大家有没有明白呢?
其实ios的机制和安卓是完全不同的,推送的内容并不是app本身的,而是苹果服务器本身为你推送的。
1.首先,我们的设备安装了具有推送功能的应用(应用程序要用代码注册消息推动),我们的 iOS设备在有网络的情况下会连接APNs推送服务器,连接过程中,APNS 服务器会验证devicetoken,连接成功后维持一个基于TCP 的长连接;
2.Provider(我们自己的应用服务器)收到需要被推送的消息并结合被推送的 iOS设备的devicetoken一起打包发送给APNS服务器;
3.APNS服务器将推送信息推送给指定devicetoken的iOS设备;
4.iOS设备收到推送消息后通知我们的应用程序并显示和提示用户(声音、弹出框)
所以就产生了另一个问题全球这么多苹果手机,这苹果的apn服务器得有多少台呀……
本回答被网友采纳