利用pyapns进行ios推送

ios客户端的同事提供了2个证书,分别是aps_development.cer  和 pushdevelopment.p12, 我最终目的就是把这2个证书合并成1个pem证书,然后通过pyapns进行推送即可。
 
首先把cer转换成pem格式
openssl x509 -in aps_development.cer -inform der -out push_cert.pem
然后把p12转换成pem格式
openssl pkcs12 -in pushdevelopment.p12 -out push_key.pem -nodes
在p12转换pem的过程中,会要求密码,直接跟ios开发同事索要就好了。
现在有push_cert.pem push_key.pem这2个文件
直接合并
cat push_cert.pem push_key.pem > jt_develop.pem
得到最终的证书,即jt_develop.pem
现在测试是否可用
openssl s_client -connect gateway.sandbox.push.apple.com:2195 -cert jt_develop.pem 
    0550 - a9 7e 39 27 21 8c f5 ac-e5 1d 23 6e 9f 97 78 e9   .~9'!.....#n..x.
    0560 - 15 a5 ee 2c b0 38 63 4e-29 32 04 d5 1e 1b ab 70   ...,.8cN)2.....p
    0570 - 46 c5 7a b6 cc 91 86 71-9e 6b 65 92 57 b2 a3 92   F.z....q.ke.W...
    0580 - 16 b7 bd f3 c3 38 75 65-da af e0 79 a3 8a b8 2f   .....8ue...y.../
    0590 - 2f 4d d0 de 3e 3c dd 4d-d8 89 3b b5 55 86 ca 14   /M..><.M..;.U...
    05a0 - c0 e3 95 4d 1f b3 69 62-32 7e 2d bd 02 62 8a e0   ...M..ib2~-..b..
    05b0 - ae 4d 1e c7 e7 5b 2b fe-5b a2 25 6e 0c 5f 90 f7   .M...[+.[.%n._..
    05c0 - 42 89 d6 dd 23 e1 14 7a-cc 0b ef 47 38 9c 8f 9c   B...#..z...G8...
    05d0 - 14 65 2e dd af b4 0a 30-59 46 dc ae d6 e8 56 c9   .e.....0YF....V.
    05e0 - bb 45 d2 76 f7 31 ab 2c-a1 d1 f0 26 81 40 aa 8d   .E.v.1.,...&.@..
    05f0 - 0b 55 c7 56 a8 bd f1 24-5f d0 07 8f 42 b5 57 98   .U.V...$_...B.W.
    0600 - d8 29 1c 43 90 b4 64 f4-46 47 05 07 5c 7a 35 a8   .).C..d.FG..\z5.
    0610 - 7d e6 03 ae 56 e0 0e 71-cf e0 5d 58 f5 b1 97 05   }...V..q..]X....
    0620 - 1b 96 b0 a1 83 f8 25 4b-0c 89 11 c8 41 c9 05 10   ......%K....A...
    0630 - 0f 7a ca 74 b8 ec f0 6f-e9 cf 75 6a 93 91 9d 5b   .z.t...o..uj...[

    Start Time: 1458799238
    Timeout   : 300 (sec)
    Verify return code: 0 (ok)
--- 
貌似是可以的,具体怎么验证呢?
python用户直接用pyapns
下面就简单介绍以下pyapns
pyapns是基于twisted写的一个ios推送神器,它帮你跟苹果的推送服务器连接,你每次需要推送的时候,直接用http请求即可。
首先,到github上看它的简单介绍。https://github.com/samuraisam/pyapns
搜索的时候,不要搜错了,是samuraisam的。
由于是基于twisted的,所以首先安装twisted
pip install twisted
然后安装pyapns
pip install pyapns

中间可能需要安装其他库,总之缺少什么就安装什么。

其次,启动服务,非常简单。一句命令:
twistd -r epoll web --class=pyapns.server.APNSServer --port=7077

这样就启动了,运用的时候,直接像它介绍的,就几条命令

from pyapns import configure, provision, notify
configure({'HOST': 'http://localhost:7077/'})
provision('com.test1.ddd', open('jt_develop.pem').read(), 'sandbox')
notify('com.test1.ddd', 'hexlified_token_str', {'aps':{'alert': 'Hello!'}})
每句代码都解释一下:
第一行,这不要讲了,导入3个变量
第二行,configure一下,就是说,刚才的pyapns是装在哪台服务器的哪个端口的,我用默认的,就是'http://localhost:7077',如果你用在其他服务器上,自己修改一下。
第三行,打开证书,第一个参数,是app_id,这个不能乱填,要跟你的ios同事要;第二个参数,是上面合成的证书,打开的文件标识符;第三个参数,如果是开发环境,就用sandbox,如果是生产环境,就用production。千万不要弄错哦。
第四行,发送通知,第一个参数还是app_id,跟上面一样;第二个参数是device_token,每个ios系统都有唯一的一个device_token,这个可以跟ios开发的同事索要。在正式环境下,一般每次登录的时候,都要求客户端上传上来。第三个参数是具体的内容,是字典形式,里面还可以加入badge等内容。详细的可以观看文档。
 
成功不成功,就看看客户端有没有吧。
posted @ 2016-03-24 13:22  月儿弯弯0204  阅读(659)  评论(0编辑  收藏  举报