iOS推送原理详解

iOS推送原理详解,第1张

1.APNS的推送机制

首先我们看一下苹果官方给出的对ios推送机制的解释。如下图

Provider就是我们自己程序的后台服务器,APNS是Apple Push Notification Service的缩写,也就是苹果的推送服务器

上图可以分为三个阶段:

APNS推送通知的详细工作流程

下面这张图是说明APNS推送通知的详细工作流程:

根据图片我们可以概括一下:

1. 什么是远程消息推送?

3. 实现消息推送的步骤

总结下大致流程

1.设备打开某个App后,会生成唯一的 一个token ,并把这个token上传给我们自己的服务器,我们的服务器有了token,就可以向我们的app推送通知了,这个是前提。但是这个通知并不能直接推送给我们的设备,而是要推送给苹果的服务器。

2.我们的服务器会将token和推送的内容,一起推送给苹果的服务器。

3.苹果服务器会根据token定位到设备,将push推送给设备。

4.设备拿到这个push,就会知道是哪个app。然后就可以将这个通知推送到具体的app。

推送的实现方式: 

想要收到推送消息 ,就必须要有后台服务器(下面的1、2)往 苹果的APNs的服务器发请求。 

1、公司自己开发后台服务器程序 

2、 采用第三方的后台服务程序,比如:百度云推送、极光推送、友盟推送

消息推送可以说是目前除各类App除自身功能之外 最重要的功能之一 。小到闹钟、 日程提醒 ,大到各种 社交软件 、资讯类软件的消息推送都离不开这一功能。

不过对于不少在iPhone用户可能都遇到过因为消息推送与消息刷新加载、延迟或者 错过微信电话等情况 。想了解iPhone推送消息的 原理以及如果解决 ,不妨接着往下看。

苹果推送服务(Apple Push Notification service,简称APNS)是在随着iOS 3.0就开始推出的一项服务,推送过程大致分为三个阶段。

第一阶段:App会把要发送的消息、接收端iPhone的标识 打包 发给APNS 。第二阶段:APNS在自身的已注册Push服务的iPhone列表中, 查找有相应标识的iPhone ,并把消息 发送 到iPhone。第三阶段:iPhone把发来的消息 传递给相应的应用程序 ,并且按照设定弹出Push通知。

简而言之,只要用户开启了推送权限,业务服务器就可以 随时 通过 调用 APNS服务向用户推送通知,而 不需要App常驻后台

其实原生的安卓也有类似的谷歌推送服务GMS(google massages service)。但是目前国产手机的操作系统并没有加入这一功能,基本都是使用 各自的消息推送平台 。比如小米的Mi push和华为的push kit等等。

在这之外仍旧有一些应用不通过这一类推送服务,而是App自身通过后台服务与业务服务器维持长连接通信,即通过 App驻留在后台的方式 正常推送消息。

相比之下,苹果可以消息通知上比较集中和统一。iPhone的消息推送不需要有后台进程常驻的,内存使用更少, 电量也更少 。而安卓设备因为消息推送不同意容易造成一些App关闭后台后无法接收到消息、或者App后台 自启动 造成的 额外耗电问题

但在实际体验上,用户对于这一差别产生的耗电量liang差距可能 感知并不明显 。而多数iPhone用户因为 推送机制导致 有时候虽然已经收到消息通知,但是打开App需要 等待几秒钟的加载消息 ,甚至可能因此错过一些重要的微信电话。

理论上 通过打开“后台 App 刷新” 可以解决 先收到消息推送再加载显示内容的问题,但是 实际的使用中 可能对微信这一类社交软件 不起作用

目前iPhone在消息推送方面主要存在着两个问题,其中一个就是 消息推送延迟 ,主要影响因素有 消息通知设置 、网络延迟以及 服务器稳定性

目前针对苹果的推送服务,苹果提供了及时提醒, 延迟提醒 (通知摘要)以及不提醒的方式。而如果选择了 定时摘要 的就会出现消息推送延迟的问题。

网络延迟 这一因素应该 不难理解 ,而服务器稳定性这一因素其实在这些年已经 有所好转 。像前些年我们可能时不时就看到App Store 加载失败 ,iCloud无法同步等问题,这可能就是跟早期苹果在国内的服务器(云上贵州)不稳定有关。

消息推送延迟的解决办法。进入“设置>通知”,将推送消息可能存在延迟的 通知全部关闭 手机重启 后找到通知设置,把刚才关闭的 重新打开

针对另一个可能会遇到的消息 加载时间较长 的问题,都有相对应的影响因素,比如网络速度、手机性能以及 App的后台是否被关闭

加载时间一定程度上取决于当前 手机的性能 可用运行内存 、以及磁盘加载速度。

但这更重要的其实是 避免退出常用软件的后台 。 频繁关闭手机后台不会影响手机本身的消息推送,但是收到新消息后打开该应用还 需要时间加载 。因此 最明显有效的方法,就是针对性地关掉软件的后台。


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/409242.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-22
下一篇2023-05-22

发表评论

登录后才能评论

评论列表(0条)

    保存