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: -cert jt_develop.pem 
     - a9 7e    8c f5 ac-e5 1d  6e 9f   e9   .~'!.....#n..x.
- a5 ee 2c b0 4e- d5 1e 1b ab ...,.8cN).....p
- c5 7a b6 cc -9e 6b b2 a3 F.z....q.ke.W...
- b7 bd f3 c3 -da af e0 a3 8a b8 2f .....8ue...y.../
- 2f 4d d0 de 3e 3c dd 4d-d8 3b b5 ca /M..><.M..;.U...
05a0 - c0 e3 4d 1f b3 - 7e 2d bd 8a e0 ...M..ib2~-..b..
05b0 - ae 4d 1e c7 e7 5b 2b fe-5b a2 6e 0c 5f f7 .M...[+.[.%n._..
05c0 - d6 dd e1 7a-cc 0b ef 9c 8f 9c B...#..z...G8...
05d0 - 2e dd af b4 0a - dc ae d6 e8 c9 .e.....0YF....V.
05e0 - bb d2 f7 ab 2c-a1 d1 f0 aa 8d .E.v..,...&.@..
05f0 - 0b c7 a8 bd f1 -5f d0 8f b5 .U.V...$_...B.W.
- d8 1c b4 f4- 5c 7a a8 .).C..d.FG..\z5.
- 7d e6 ae e0 0e -cf e0 5d f5 b1 }...V..q..]X....
- 1b b0 a1 f8 4b-0c c8 c9 ......%K....A...
- 0f 7a ca b8 ec f0 6f-e9 cf 6a 9d 5b .z.t...o..uj...[ Start Time:
Timeout : (sec)
Verify return code: (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=

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

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等内容。详细的可以观看文档。
 
成功不成功,就看看客户端有没有吧。

利用pyapns进行ios推送的更多相关文章

  1. python使用pyapns进行ios推送消息

    Pyapns 提供了通用的Apple Push Notification Service (APNS).该解决方案使用了开源的Twisted server,支持原生的Python和Ruby API. ...

  2. iOS 推送全解析

    本文旨在对 iOS 推送(以下简称 推送)进行一个完整的剖析,如果你之前对推送一无所知,那么在你认真地阅读了全文后必将变成一个推送老手,你将会对其中的各种细节和原理有充分的理解.以下是 pikacod ...

  3. iOS推送证书转pem文件

    iOS推送证书转 .pem文件. 推送证书转pem文件openssl x509 -in apns_miaobozhibo.cer -inform der -out apns_miaobozhibo.p ...

  4. IOS 推送-客户端处理推送消息

    IOS 推送-客户端处理推送消息 1.推送调用顺序 APN push的消息到达后,UIApplicationDelegate有两个方法和处理消息有关: 1)application:didReceive ...

  5. IOS 推送-配置与代码编写

    IOS 推送配置与代码编写 这里介绍IOS的推送,本文章已经在IOS6/7/8上都能运行OK,按照道理IOS9应该没问题. 大纲: 1.文章前提 2.推送介绍 3.推送文件账号设置 4.推送证书介绍 ...

  6. IOS 推送消息 php做推送服务端

    IOS推送消息是许多IOS应用都具备的功能,最近也在研究这个功能,参考了很多资料终于搞定了,下面就把步骤拿出来分享下: iOS消息推送的工作机制可以简单的用下图来概括: Provider是指某个iPh ...

  7. 友盟iOS推送配置(从真机调试到推送)

    下面我来讲解一下友盟iOS的推送配置,其实友盟只是一个示例,换做其余的第三方推送服务也会适用,只是第三方的后面服务变了而已. iOS推送(包括真机调试)所需要的步骤和文件如下: 备注:这里我将省略掉一 ...

  8. “iOS 推送通知”详解:从创建到设置到运行

    这是一篇编译的文章,内容均出自Parse.com的iOS开发教程,同时作者还提供了视频讲解.本文将带领开发者一步一步向着iOS推送通知的深处探寻,掌握如何配置iOS推送通知的奥义. 介绍一点点背景资料 ...

  9. 转载:iOS 推送的服务端实现

    参考网址1: iOS消息推送机制的实现 http://www.cnblogs.com/qq78292959/archive/2012/07/16/2593651.html 参考网址2: iOS 推送的 ...

随机推荐

  1. C语言整数按照二进制逆序,输出逆序后的整数值

    问题来源,今天早上和一舍友吃早餐的时候谈到的一个问题,将一个整数按照二进制逆序,然后输出逆序后的数值. 我们知道数值在内存中都是以二进制的形式存放的,假如我们是32位机,每8位为一个字节,int型在3 ...

  2. 专门讲讲这个MYSQL授权当中的with grant option的作用

    对象的owner将权限赋予某个用户(如:testuser1) grant select ,update on bd_corp to testuser1 [with grant option ]1.如果 ...

  3. FE: Sass and Bootstrap 3 with Sass

    Sass简介 Sass是CSS的预处理语言:提供了变量定义.函数定义.函数调用.类继承.嵌套(CSS层级关系)及代码引入功能. Sass安装指南 MAC OS X 10.10.3   终端 -> ...

  4. BZOJ3396: [Usaco2009 Jan]Total flow 水流

    3396: [Usaco2009 Jan]Total flow 水流 Time Limit: 1 Sec  Memory Limit: 128 MBSubmit: 45  Solved: 27[Sub ...

  5. 简述WebService与.NET Remoting的区别及适应场合 WCF

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://zhoufoxcn.blog.51cto.com/792419/166990 为了 ...

  6. sicily 4379 bicoloring

    题意:输入一个简单(无多重边和自环)的连通无向图,判断该图是否能用黑白两种颜色对顶点染色,使得每条边的两个端点为不同颜色. 解法:由于无自连通节点存在,所以只需进行一次宽搜,遍历所有的点和所有的边,判 ...

  7. 【HDU2224】The shortest path(双调欧几里得dp)

    算法导论上一道dp,挺有趣的.于是就研究了一阵. dp(i, j)代表从左边第一个点到第i个点与从从左边最后一个点(即为第一个点)到j点的最优距离和.于是找到了子状态. 决策过程 dp[i][j] = ...

  8. weblogic 的应用 常见问题处理 db2 链接不上(转载)

    xingkaistart weblogic10之Failed to initialize the application 'wss-1-1' due to error weblogic. Weblog ...

  9. Highcharts 异步加载数据曲线图表

    导入 data.js 文件 异步加载数据需要引入以下js 文件: <script src="http://code.highcharts.com/modules/data.js&quo ...

  10. (转)Android签名详解(debug和release)

    1. 为什么要签名 1) 发送者的身份认证 由于开发商可能通过使用相同的Package Name来混淆替换已经安装的程序,以此保证签名不同的包不被替换 2) 保证信息传输的完整性 签名对于包中的每个文 ...