标签:申请 apn 服务 port 原因 mail evel setting 告诉
最近的项目需要用到iOS的push功能,在配置push功能的过程中遇到了一些不清楚的地方,经过查阅资料和思考,已有初步认识,下面进行一下梳理,我们的服务器端用的是Facebook的Parse。
完整的push流程是这样的,服务器端将信息传递给APNS(Apple Push Notification Service),再由APNS将信息push到目标设备。
服务器——APNS
服务器与APNS之间是通过SSL(Secure Sockets Layer)协议进行通信的,简单的原因应该是这样的,Apple的推送服务器肯定不能随便接受外界的push请求,只有经过它的认证才可以,于是我们的服务端程序需要有一个Apple授予的SSL证书。这个证书怎样获得呢?分几步:
1.生成SSL证书请求文件CertificateSigningRequest.certSigningRequest
2.将SSL证书请求文件上传至 Apple Developer Member Center以取得真正的SSL证书,我们假设已经创建好了App ID
3.将SSL证书配置在服务器端
虽然本地已经有了服务器端所需的SSL证书aps_development.cer,但是它并不能直接送给服务器端,还需要一点工序,如何加工请看下面的流程。
至此,服务器端——APNS已打通,我们继续考虑APNS——设备之间的通信。
APNS——设备(设备将Push信息分发至App)
APNS怎么知道要将服务器端要将信息push给哪个设备或是哪一群设备呢?显然是服务器端将目标设备告诉了APNS,经了解,APNS要求服务器端以JSON(JavaScript Object Notation) 格式将目标设备的Device ID集合告诉它,然后它再将push信息发到相应设备上,push信息到了设备,设备再根据push信息内容把push信息指定到具体的App。于是,设备中安装的App也需要有一些能够验明正身的东西,这个东西肯定也是由Apple Developer Member Center提供的。
1. 创建Provisioning Profile
到这里,App的验明正身工作已经做完了,服务器端——APNS——设备(准确的说是App)全部打通,剩下就是代码层面的工作了。最后总结一下Apple Push的配置,想要实现Server——APNS——App的Push通信,就要让APNS认识Server和App,于是需要两个物件,一个是给Server的SSL证书(最终形式为.p12),一个是给App的provisioning profile,这两个物件肯定都是要向Apple申请的,这便是上面一系列流程要达到的目的。
另外,再补充一点关于CertificateSigningRequest.certSigningRequest文件的事情,这个文件是我们向Apple申请证书的证书请求文件,在Keychain Access中可以随意生成,那么,每次制作证书都要生成一次吗?不是的,这个CertificateSigningRequest.certSigningRequest文件中可能只是包含一些Mac设备信息,时间戳等,在同一台Mac上生成的多个CertificateSigningRequest.certSigningRequest文件可能只是时间戳不同,其他是一样的,所以它只需生成一个,之后做各种SSL证书均可使用。
标签:申请 apn 服务 port 原因 mail evel setting 告诉
原文地址:http://www.cnblogs.com/fire909090/p/6952391.html