这两天一直在处理IOS上的PUSH这块,顺便记录下(本文只是综合网络资料)。请狠拍
首先提一下开发环境,服务端的开发是用Net(C#),客户端是用Corona(Lua)。至于服务端的推送,采用的是个开源框架PushSharp(协议为:Apache。代码托管于Github上,详细见文章尾的参考链接地址)
IOS上push的原理简单的来说就是(详细可google):
1.设备连接APNs,获取Dervice Token
2.设备向App的服务端发送Device Token
3.服务端响应PUSH动作
4.服务端向APNs发送推送消息(带Device Token)
5.APNs向设备发送推送消息
另外在此之前,必须先申请PUSH证书。由于开发机子是xp,所以网上找了一份window下产生证书的教程 步骤如下:(见链接1)
1.下载安装OpenSSL-Win32(需要Visual C++ 2008 Redistributables)地址在此:http://slproweb.com/products/Win32OpenSSL.html
2.cmd下,输入以下命令。(需要注意的是emailAddress要与你的Apple开发者账号的邮件地址一致)
cd C:\OpenSSL-Win32\bin\ set RANDFILE=.rnd set OPENSSL_CONF=C:\OpenSSL-Win32\bin\openssl.cfg openssl genrsa -out my.key 2048 openssl req -new -key my.key -out my.certSigningRequest -subj "/emailAddress=myemail@sample.com,CN=Common Name,C=CN"
3.将生成的certSigningRequest文件上传到Apple的开发者相关页面(例如开发者证书、推送证书等,这个步骤网上很多,不细表)
4.将最后生成的cer文件改个名字后放到C:\OpenSSL-Win32\bin\目录中,和之前生成的文件放在一起。
5.P12文件包含了证书的密钥和公钥,可以方便迁移到其他电脑上。 最后在刚才的环境中运行命令行(如果之前命令行窗口被关了,还是要重新执行一遍开始的几条set环境配置命令):
值得注意的是:这边的password,下边在服务端代码上要用到
openssl x509 -in my.cer -inform DER -out my.pem -outform PEM openssl pkcs12 -export -inkey my.key -in my.pem -out my.p12 -password pass:111111
此外在在Mac上下载证书也有个很详细的教程 (见链接2)
到这边,证书基本上差不多了。然后就是服务端的了。其实利用PushSharp,要做的东西很简单,放两张官方的实例图片。
到这边连,服务端都差不多了。不过,有个最重要的东西,那就是设备的Device Token还没解决。
网上Object-C写取这个Token资料很多,但是因为我们项目用的是Corona,这种方式显然行不通。还有Corona有官方文档 或者参考这里(链接见3、4)
到这边,基本上差不多了。至于Device Token 服务端的保存,或者Device Token改变(这个东东是可能会变的),再或者异步推送等等问题,就是另外一篇了。
最后重申一下:本文绝大部分是来源网络,非本人原创,本人只是对一些资料的整理。如若侵犯你的版权,请来信说明,谢谢!
链接2:https://github.com/Redth/PushSharp/wiki/How-to-Configure-&-Send-Apple-Push-Notifications-using-PushSharp
链接3:http://www.coronalabs.com/blog/2011/12/21/push-notifications-for-ios-in-corona-sdk/
链接4:http://www.pushwoosh.com/programming-push-notification/corona-sdk-ios-push-notifications/