iOS_APNS

2018-08-27  本文已影响0人  自律_自强_通达

一、概念

APNs(英文全称:Apple Push Notification service),中文翻译为:苹果推送通知服务。该技术由苹果公司提供的APNs服务。

二、工作原理

首先,APNs会对用户进行物理连接认证,和设备令牌认证(简言之就是苹果的服务器检查设备里的证书以确定其为苹果设备);

然后,将服务器的信息接收并且保存在APNs当中,APNs从其中注册的列表中查找该IOS设备(设备可以为iPhone、iPad、iPod Touch,版本是iOS3.0及以上)并将信息发送到该设备;

最后,设备接收到数据信息给相应的APP,并按照设定弹出Push信息。

三、详细流程

详细流程:(以今日头条为例)

在今日头条App的AppDelegate的didFinishLaunchingWithOptions方法中注册远程推送通知,此时只要iOS设备正常联网能够访问到外网,iOS设备默认就会和APNs建立长连接,就会把iOS设备的UDID(Unique Device Identifier:唯一设备标识码,用来标识唯一一台苹果设备)和今日头条的Bundle Identifier通过长连接发送给APNs服务器,然后苹果通过这两个的值根据一定的加密算法得出deviceToken,并将deviceToken返回给iOS设备。(注:APNs服务器会留有UDID+Bundle Identifier+deviceToken的映射表)

实现UIApplicationDelegate代理中的有关于注册远程通知的相关方法,包括注册成功、注册失败、对接收到通知的处理等。

如果注册成功,实现注册成功的代理方法,就能够接收到deviceToken,并将deviceToken发送给今日头条服务器,今日头条服务器将此deviceToken存储在数据库中(一般如果是及时通讯类应用那么还会与用户的账号进行映射)。

如果注册失败,那么实现注册失败的协议方法,处理失败后的事情(包括发送给今日头条服务器注册失败等)。

今日头条服务器接收到deviceToken之后,就可以根据这些deviceToken向APNs发送推送一条新闻简要消息。

APNs接收到deviceToken和新闻简要消息之后,根据deviceToken查找映射表找到对应的UDID和Bundle Identifier,根据UDID找到唯一一台苹果设备,再在找到的苹果设备上根据Bundle Identifier找到唯一的应用(此处为今日头条),然后推送消息。

当设备接收到消息的时候,如果今日头条在前台也就是用户正在使用今日头条,那么不会在设备上方弹出横幅(如果使用了音效,还会触发音效的播放),直接调用我们实现的UIApplicationDelegate中的接收消息的方法。反之如果今日头条在后台或者未运行时就会在设备的上方弹出横幅(如果使用了音效,还会触发音效的播放),点击横幅才会触发调用我们实现的UIApplicationDelegate中的接收消息的方法,这个时候你直接点击应用图标进来是不会调用的。

上一篇下一篇

猜你喜欢

热点阅读