iOS 设备是如何实现推送功能的呢

2025-04-06 22:12:09
推荐回答(2个)
回答1:

远程推送:苹果公司把不同公司五花八门的推送内容放到自家的Apple push服务器上,用户一联网就通过Apple push service推送内容发到他的设备上。类似于QQ、微博微信都是这样推送的

本地:利用UILocalNotification服务

有三种情况
* scheduled time, 时间周期,用来指定iOS系统发送通知的日期和时间;
* notification type,通知类型,包括警告信息、动作按钮的标题、应用图标上的badge(数字标记)和播放的声音;
* 自定义数据,本地通知可以包含一个dictionary类型的本地数据
日历、提醒事项、闹铃都是这样推送消息的。

回答2:

一般是采用的极光推送。
至于手机的push机制,基本上有3种做法:
1. 采用socket常连接机制(郝培强答案的评论里有人用到了http常连接这个词,是不恰当的,因为http协议本身,是一个典型的请求-返回的偶连接模式,所有http下的推送基本都是依赖轮询实现)。采用这种方式,其实要求TCP/IP一直处在连通的方式,对于3G来说的话,耗电开销太大。同时,要处理关于断线重连以及IP注册的问题(手机端得是socket server),所以这种方式采用的比较少,我个人所做过或者见过的案例中,只有我在顺丰做的项目里采用了这种方式,因为他们是效率和服务质量第一的要求,快递员随身携带多块备用电池(他们还只是使用GPRS,没有3G耗电厉害) 多数情况下,是一个所谓的push-alert机制以保证push协议的可复用性

2. 轮询机制:这种方式是主流,包括IOS采用的也是一样,轮询有两个要点,第一是服务器负荷问题,第二是轮询间隔决定推送的及时性,两者基本处在一个矛盾体中。当然,轮询间隔可以不是固定的数值,可以通过算法形成动态值,以期达到最优

3. 控制信道push:不利用tcpip,而是利用底层的移动通信的控制信道进行push(就是呈现我们手机是哪家信号,是否有电话呼入,是否注册在网的那个信道),短信也是走的这个信道,我们通常可以看到的通过短信push-alert机制,或者BB的push机制都是这样的机制。而BB这样的做法,是一定要和运营商深度合作才能够实现的,这也是BB目前销售运营模式的要点。