IOS远程推送安全
一.关于推送通知 服务器
推送通知,也被叫作远程通知,是在iOS 3.0之后被引入的功能。是当程序没有启动或不在前台运行时,告诉用户有新消息的一种途径,是从外部服务器发送到应用程序上的。通常说来,当要显示消息或下载数据的时候,通知是由远程服务器(程序的提供者)发送,而后经过苹果的推送通知服务(Apple Push Notification Service,简称apns)推送到设备的程序上。app
推送的新消息多是一条信息、一项即将到期的日程或是一份远程服务器上的新数据。在系统上展示的时候,能够显示警告信息或在程序icon上显示数字,同时,也能够播放警告音。一旦用户注意到程序有新的信息、时间或是数据,他们能够运行程序并访问新的内容。也能够选择忽略通知,这时程序将不会被激活。ide
iPhone, iPad和iPod touch上同一时刻只有一个app在前台运行。大多数程序在后台运行的时候,能够对某些用户感兴趣的内容作出回应(定时、或数据等)。推送通知能让程序在这些事件发生的时候通知用户。测试
做为提供者为程序开发和部署推送通知,必须经过iOS Developer Program Portal得到SSL证书。每一个证书限用于一个程序,使用程序的bundle ID做为标识。证书有两种用途的:一种是针对sandbox(用于开发和测试),另一种针对发布产品。这两种运行环境拥有为各自指定的IP地址而且须要不一样的证书。还必须为两种不一样的环境获取各自的provisioning profiles。ui
APNS提供了两项基本的服务:消息推送和反馈服务。接口
消息推送:使用流式TCP套接字将推送通知做为二进制数据发送给APNs。消息推送有分别针对开发和测试用的sandbox、发布产品的两个接口,每一个都有各自的地址和端口。无论用哪一个接口,都须要经过TLS或SSL,使用SSL证书来创建一个安全的信道。提供者编制通知信息,而后经过这个信道将其发送给APNs。 注:sandbox: gateway.sandbox.push.apple.com:219 产品接口:gateway.push.apple.com:2195事件
反馈服务:能够获得针对某个程序的发送失败记录。提供者应该使用反馈服务周期性检查哪些设备一直收不到通知,不须要重复发送通知到这些设备,下降推送服务器的负担。 注:sandbox:feedback.push.apple.com:2196 产品接口:feedback.sandbox.push.apple.com:2196开发
二.Apple Push Notification的工做机制部署
本身的客户端发送消息到本身应用软件的apns,apns发送消息到你的手机。这个是根据令牌识别的。手机在发送消息到你的应用软件。
1. Provider是指某个iPhone软件的Push服务器,是咱们将要开发的服务器。
2. APNS 是Apple Push Notification Service(Apple Push服务器)的缩写,是苹果的服务器。
以上能够分为三个阶段:
第一阶段:推送服务器(provider)把要发送的消息、目的iPhone的标识打包,发给APNS;
第二阶段:APNS在自身的已注册Push服务的iPhone列表中,查找有相应标识的iPhone,并把消息发到iPhone;
第三阶段:iPhone把发来的消息传递给相应的应用程序,而且按照设定弹出Push通知。
三 推送以前的配置
在任何iOS应用开发里面,开发人员老是在团队里面扮演某一角色:团队经理,团队管理员,和团队成员。iPhone开发证书和配置文件由不一样角色完成。一般团队经理是团队里面惟一能够建立Development SSL证书(沙箱环境)和Distribution SSL证书(产品环境)的人。而团队经理和团队管理员均可以建立Development和Distribution的配置文件。团队成员只能下载并安装证书和配置文件(!这里要区别好证书和配置文件的概念:证书,即Certificates,它主要是使用Access Key Chain来生成的一个签名密钥。而配置文件,即Provisioning profiles,它主要是根据不一样的App来生成的针对性的代码签名文件。两者区别是通常一个开发者帐户只能有一个Certificates(而Development一个,Distribtuion一个),可是能够有多个Provisioning profiles文件,且这些Provisioning profiles一般建立的时候都使用同一个Certrificates)。如下部分详细介绍该过程。
注意:iOS Provisioning Portal给全部iOS开发者。