APNS部署教程4(服务器/Provider开发)

来源:互联网 发布:全民斩仙刷元宝软件 编辑:程序博客网 时间:2024/04/29 21:16

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


如果在看这篇教程之前,如果没有看过前面的章节,你可以回去看看一看前面的章节


在这一章,我将要做两件事
1.在MAC上部署一个Apache+PHP的开发环境
2.用php写一个provider程序用来发送推送通知


在这里我省略了Mysql的配置工作,因为对这篇教程而言是用不到的,毕竟MAC是集成好Apache+PHP5的,如果多加一个Mysql,中间出问题的机会就会变多,我的目的就是尽量简单的配置服务器(Provider)成功,不是吗?

上面说到MAC是集成好Apache+PHP5的,但是默认是关闭的,那我们就开启这项服务就好了
1. 打开终端(command+space -> 输入terminal->回车)
2. 输入sudo apachectl start,输入密码,启动apache服务器
这时候打开浏览器,输入http://localhost,会显示”it works!”,证明apache服务启动成功
apache服务器的根目录在/Library/WebServer/Documents/这个地址下
3. 在终端里输入 cd /Library/WebServer/Documents/,回车,ls,会看到这个目录下有一个叫做index.html.en的文件,这个就是我们刚刚访问的localhost目录下的html文件
这里写图片描述
4. 接着我们在终端输入 cd /etc/apache2,回车,移动到apache配置文件所在的文件夹下

  1. 输入cp httpd.conf httpd.conf.bak,回车,这句话是对apache的配置文件做一个备份,以后改乱了好恢复
  2. 这时在输入ls应该可以看到httpd.conf和httpd.conf.bak这两个文件,我要修改以下httpd.conf文件让apache开启对php5的支持
  3. 输入 sudo vim httpd.conf,回车,用vim打开httpd.conf文件,当然你也可以用别的你喜欢的工具打开,只要可以修改文件内容就可以
  4. 找到 #LoadModule php5_module libexec/apache2/libphp5.so 这一行,将前面的注释#去掉,保存文件并退出
  5. 现在验证php服务是不是启动了,在终端输入下面这几行在服务器目录下建立一个php文件并打开它
cd /Library/WebServer/Documents/touch index.phpsudo vim index.php

10.将index.php写成这样,保存并退出,phpinfo()输出的是当前的php信息,如果成功输出说明php服务启动成功

<?phpecho phpinfo();?>

这里写图片描述

11.现在打开浏览器,输入http://localhost/index.php,回车,如果出现的php的信息,那么恭喜你,php+apache服务在你的电脑上开启成功了
这里写图片描述


上面配置好了Apache+PHP的服务端环境,下面就要写一个PHP程序来连接APNs服务器发送推送通知了,这里最好需要一些PHP的基础知识,当然如果你有其他语言的(至少有SWIFT不是吗)经验也应该能看懂的,理解后用其他语言实现大同小异。

在这之前有些工作要做,服务器端(Provider)和APNs连接是通过SSL/TLS的,需要证书认证,也就是我上一章申请的那张aps_development.cer(推送服务认证证书)还需要你的私钥配合,这两个东西(证书+私钥)加载一起可以导出成一个扩展名是.p12的文件,我们管这种文件叫做信息交换文件,这个.p12文件是需要保密的,如果有人得到这个文件,就可以部署一个服务器冒充你给你的APP发送通知。

现在我们来导出这个.p12文件
1. 打开桌面的APNsDemoFiles文件夹,双击aps_development.cer文件,它会自动安装到你的电脑上并配合上对应的私钥。
2. 打开Keychain Access,点击左边的My Certificates,在右边找到这个证书
这里写图片描述
3. 右键点击,选中那个Export打头的选项,选中.p12类型,默认名称不用变,保存到桌面
这里写图片描述
4. 点击Save,系统会让你输入一个密码来加密这个文件,我在这里输入的是apnsdemo,你也可以输入别的,只要记得住就好
5. 然后将这个文件移动到APNsDemoFiles文件夹里
这里写图片描述
6. 打开终端,输入下面这些命令

openssl pkcs12 -in  ~/DeskTop/APNsDemoFiles/Certificates.p12 -out  ~/DeskTop/APNsDemoFiles/ck.pem -nodes
  1. 接着会让你输入密码,就输入刚才保存.p12文件的那个密码就可以,我的是apnsdemo,上面这句话的意思是用openssl这个工具将.p12文件转换成一个php可以用的.pem文件,php是用不了.p12文件的,所以有了上面这段话。现在APNsDemoFiles是这样的
    这里写图片描述

  2. 现在我们就用不到刚才的.p12文件了,用新生成的ck.pem就可以了。在终端里将这个文件拷贝到服务器根目录里,留作一会我们写的php文件调用

sudo cp ~/DeskTop/APNsDemoFiles/ck.pem /Library/WebServer/Documents/ck.pem

接着我们要在服务器跟目下建立一个push.php文件,用以和APNs连接并发送推送消息给设备

cd /Library/WebServer/Documents/touch push.phpsudo vim push.php

这里有push.php的连接,你可以直接下载下来
不过你需要改一些地方

$deviceToken= 'bb222b83db70e2113f4d207aa7fba17e753d23e96506a9bd1f103bded4aa30f5';$pem = "ck.pem";$pass = "apnsdemo";

上面三个分别是设备的device token、.pem文件的文件名、还有刚才加密的那个密码,都改成对应的名字就可以了,如果你前面都是按照我说的做的,那么这一步只需改变$deviceToken就可以了。

具体的php代码我就不在这里分析了,大概就是设置一些参数->连接APNS服务器->发送数据->接收返回数据 这个样子。
这个代码发送的推送通知的格式用的是苹果第一版协议,最新的是第三版。所以如果你是看苹果的开发者手册可能跟这个格式对不上,看看这个就明白了


程序写好了,下面运行程序吧

sudo php /Libray/WebServer/Documents/Push.php

这里写图片描述

如果推送成功,会显示上面这段话,再看看你的IPhone,应该已经出现推送消息了吧!

0 0
原创粉丝点击