APNS部署教程1(概览)

来源:互联网 发布:windows三维弹球 编辑:程序博客网 时间:2024/05/16 04:51

本系列教程写于2016年9月,所用开发环境是
XCODE(7.3.1),
SWIFT(3.0),
PHP(5.5.36),
APACHE(2.4.18)
禁止转载!


APNs(英文全称:Apple Push Notification service)是苹果的推送通知服务,我们在手机上接收到的推送通知全都由苹果的这种服务来负责,下面一张图简单了说明了整个APNs的流程

remote_notif_simple

这张图描述了一个推送通知从自己的服务器,也就是图上的Provider(苹果是这么称呼的)到终端APP的整个流程。

首先你从自己的服务器上发送一条通知给苹果的推送服务器(APNs),APNs验证你的服务器(Provider)和要发送的通知的合法性后将这条推送发给特定的IPhone(IPad,TV,etc),IPhone的IOS系统再根据推送内容将消息发送给指定的一个APP,这时,你就可以在APP程序中接受并处理这段推送通知了。

那么这整个过程是涉及到三个设备的,一个Provider(也就是你自己部署的服务器),一个APNs(苹果专门用来接受并转发推送的服务器),一个终端苹果设备(接收并处理推送的设备)。

终端设备和APNs服务器的连接是不需要我们来管的,只要你的手机连接上了互联网就会自动在IPhone和APNs之间建立一个TCP的长连接,保证APNs随时可以Push消息过来。这里要说明一下,IOS和安卓在处理推送消息上面是不同的,IOS已经有一个完善的APNs体系,安卓现在的推送是没有类似苹果APNs这样的中间统一服务器的,是需要APP直接和你自己的服务器建立连接的。这方面具体的网上有一篇文章介绍。

Provider和APNs的连接就要我们自己建立了,这两个之间的连接是要用TLS/SSL加密连接了,这也就涉及到了下一章要讲的证书内容。连接建立的具体过程可以理解为就是用Socket通讯建立一个到APNs服务器的SocketSSL连接,APNs服务器的地址有好几个,在这里我会用最常用的一组
gateway.sandbox.push.apple.com:2195gateway.push.apple.com:2195,这两个地址分别对应Development和Production环境的推送服务器地址。也就是开发测试环境和真实上架环境的地址。
对于这篇教程来说,我会用gateway.sandbox.push.apple.com:2195这个测试地址,真实发布后把地址上面的地址换成后者就可以
service_provider


理解下面几个名词解释,会让你更好的理解整篇教程,当然,如果你仅仅想部署完成就OK的话,甚至可以跳过这篇文章,直接去看第二讲。

1.SSL/TLS:
简单点,这是一个协议(什么是协议?我的理解就是人为规定的一个文档,上面写着你要传输数据,就要按照文档上面写的这样封装或者传输数据,那么你这个数据就叫符合SSL协议了,O(∩_∩)O~~),在TCP协议层之上,HTTP(应用层)协议层之下,用来安全传输数据的一种协议。我们平时访问银行网站开头的https://就是说用的这种协议,百度百科

SSL和TLS的最大区别就是,SSL是对整个系统认证,TLS是对一个系统的某一个程序的单独认证,感觉TLS更厉害一点点。

2.数字签名/证书/不对称加密/证书:
把这三个概念放在一起是因为它们基本都是同时出现并且组合应用的,一般了解也是一起就了解了,我先来解释一下不对称加密,恩….有点长,我把几个词单写一篇文章吧。

3.DeviceToken:
这个词有了解过苹果Push服务的朋友相信不陌生,它是一组32位(好像是32位记不清了~)的十六进制编码,代表了一个唯一的苹果设备上的唯一APP,是我们的IPhone连接上APNs服务器后APNs服务器返回给我们的IPhone的。这么说吧,我在IPhone上新装了一个APP,打开APP,同意推送通知,这时候应用程序的后台就会从APNs服务器获取到这个DeviceToken。一个完整的DeviceToken像下面这样: bb222b83db70e2113f4d207aa7fba17e753d23e96506a9bd1f103bded4aa30f5

4.OpenSSL
这是一个工具,MAC会自带(起码我的有~),是用来转换证书格式的,就知道这些就好啦,这个不重要


OK,暂时就这么多,下面会分三章讲解APNs服务器的具体部署操作流程,我会假设你有如下的设备和技能:

1.你有一台MAC,你的MAC上有XCODE
2.你有一台IPhone
3.你看得懂基本的SWIFT代码
4.你有一个付费的苹果开发者帐号(就是一年最少$99的那个账号)

如果你符合上面的条件,我相信接下来的三章内容你不会遇到太大的问题。

下面我会分别从
1.证书准备
2.客户端简易开发
3.服务器简易开发
三个章节来完整的开一套有推送服务的苹果APP

0 0