iOS远程推送的机制及流程

远程推送几乎是有用户系统的App都要做的事情,功能好用且能在App不被打开的情况下和我们的用户交互。
先来简单介绍远程推送:
1、由苹果服务器推送至手机,手机再传递给App,从而弹出提示框。
2、App在运行和不在运行都可以收到远程推送。
3、举例:苹果提示系统有新的版本可供更新。

再来简单介绍相似的本地通知:
1、由App内部程序代码发出。
2、只能在App运行期间弹出本地通知的提示框。
3、举例:闹钟的提醒(时钟在系统中不会被杀死),存储空间不够的提醒。

目前大部分App的做法都是:在运行时使用本地通知提醒用户;不在运行时使用远程推送提醒用户。当然了,全部用远程推送来提醒用户也是可以的(就是这么野蛮)。

下面是远程推送的流程图,流程总共有4步:


iOS远程推送的机制及流程_第1张图片
image.png

现在来一步一步分解:
1、App将手机和App的唯一标示符(token)发送给我们自家的服务器。如果手机已经联网,那么苹果服务器和手机会一直处于长链接状态,远程推送必须在此状态下才能推送到。App在手机中会生成一个唯一标识符,用于区别不同手机和App。苹果服务器根据此才能精准推送到对应手机上的对应App(比如你手机上的微信)。App在用户登录成功时需要将唯一标识符发送给我们的服务器。

2、我们服务器向苹果服务器发送要推送给用户的消息(两服务器是长链接)。我们服务器根据App发来的消息判断对应用户是否在线,在线则告诉App发出本地通知提醒用户。如果用户不在线的话,我们服务器需要将唯一标识符、证书信息、通知信息发送至苹果服务器。通知信息内容可以定制,包括:标题、内容、角标、声音等等(要警告语还是短信音就看你自己了)。

3、苹果服务器会识别证书信息,正确则会根据唯一标识符把消息推送到对应的手机上面。接着,苹果服务器会把推送结果返回给我们服务器。

4、手机弹出提示框(提示框样式不可变,但是可以设置延长提醒时间,开发者可以将对应的音乐变长来达到显示更久的时间,最长是30秒。)点击提示框便会进入对应的App。推送信息在App打开时可以拿到,我们可以根据这些信息来进行一些操作,比如跳转到对应的页面或者开放对应的功能等。

流程就介绍完了,有必要来说一说我们的推送证书了。每一个App可以有多份推送证书。证书代表有推送的资格,这样才能控制推送消息不被乱发。如果我们需要其它服务器推送消息至我们App,那么我们要将P12文件提供给它们,这些服务器需要将其配置上。推送证书和其它证书一样,一年便会过期,过期之后需要重新配置。

介绍完毕,如果大神们发现有什么错误的地方,欢迎砸砖,专业铁头功二十年。
ps:1、iOS的远程推送可以被用户关闭,如果被用户提出不能接收到远程推送,他可能是在第一次打开App时选择了拒绝接收通知。
2、安卓的推送大致一样,换了个老大(手机厂家)而已。

你可能感兴趣的:(iOS远程推送的机制及流程)