本文介绍iOS开发中常用到的两个服务APNS和Passbook基于Node.js实现的工具,虽然大部分公司可能目前不会选择Node.js开发后台,但对于广大iOS开发人员来说能够不依赖后台开发人员,自己写后台配合联调APNS或Passbook程序还是方便的多,甚至你可以在了解了一系列处理流程后指导一下后台开发人员完成开发,毕竟他们对苹果的服务不一定有你了解的多^_^。
express
在正式介绍这两个工具之前,先简单的介绍一下express,因为本文的Demo基于express框架。 Express是一个简洁灵活的node.js Web应用框架,它提供了一系列强大的特性帮助快速创建各种Web应用,有兴趣的可以进一步了解。本文demo中主要用到express中路由的管理和请求的封装。首先通过npm install -g express
安装express包,安装完成后创建express应用express --ejs MyService
,此时在当前目录下会创建一个MyService文件夹,里面有各种目录,编辑package.json文件,在dependencies中增加apns
和passbook
:
|
|
安装依赖包cd MyService
& npm install
, 安装完成后使用node app.js
启动服务(默认服务地址:(http://localhost:3000),浏览器中输入该地址后出现Express页面说明服务创建成功。
APNS
首先介绍的是一款apns工具(https://github.com/neoziro/node-apns),可直接通过npm install apns
安装。因为上面我们创建express应用时已经将apns作为了依赖包安装,所以此时你的服务中已经包含了apns模块。
大家知道APNS服务需要Apple开发证书,申请APNS证书步骤这里就不介绍。通过从iOS Dev Center下载的证书是.cer格式,本机导出来的密钥是.p12格式,而apns包只支持.pem的文件,所以需要进行格式转换:
|
|
转换完后,将cer.pem
key.pen
放在./public/push/ 目录下。
创建两个服务uploadToken.do和sendMessage.do,在app.js中添加对应的路由:
|
|
然后在./MyService/routes/index.js文件中添加对应的服务:
|
|
|
|
以上只是介绍基本用法,主要是了解一下API,感兴趣可以进一步研究或优化。
Passbook
Passbook是苹果在iOS 6.0+ 的iPhone, iPod Touch推出的一项应用,可以将各个应用的电子票据保存到Passbook应用中。本文中使用passbook工具见(https://github.com/assaf/node-passbook),可通过npm install passbook
安装。因为上面我们创建express应用时已经将passbook作为了依赖包安装,所以此时你的服务中已经包含了passbook模块。在使用Passbook之前也需要到iOS Dev Center请求相应的证书,主要是获取pass Type ID标识。服务器中需要使用的是Apple Worldwide Developer Relations Certification证书,密钥是Pass Type ID:pass.com.xxx.passbook对用的密钥,也都需要转换成.pem格式。
|
|
转换完后将wwdr.pem和key.pem文件保存到./public/passbook目录(注:passbook工具中固定了key和cer名字必须为key.pem、wwdr.pem,当然你可以修改passbook包变成可配置的)。
创建服务getPass.do和passbook.do,在app.js中添加对用的路由:
|
|
然后在/MyService/routes/index.js文件中添加对应的服务:
|
|
(注:如果要生成boardingPass类型的pass,必须设置transitType,而transitType只能通过 pass.fields.boardingPass.transitType = "PKTransitTypeAir";
方式设置)
|
|
结束
本文所有例子和代码都未在生产环境使用过,所以可靠性和效率等方面还有待验证,有兴趣的朋友可以进一步研究。