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. 四句话表明JSON格式定义

    (1):并列的数据之间使用逗号(",")分割: (2):键值对的映射用冒号(":")表示: (3):并列数据的集合(数组)用方括号("[]" ...

  2. 温习PYTHON语法

    看WEBPY的源码结构有点晕,原来很多语法结构都忘了,继承之些. 再看A BYTE OF PYTHON.慢慢补.. number = 23 guess = int(raw_input('Enter a ...

  3. Getting Text Metrics in Firemonkey(delphiscience的博客)

    Firemonkey’s abstract TCanvas class has been providing the dimensions of the bounding rectangle of s ...

  4. Java 多线程之龟兔赛跑(文件夹——读取文件——时间)

    版权声明:本文为博主原创文章,未经博主允许不得转载. 描述: 乌龟和兔子(各自是一个Java线程)在我们的电脑上赛跑,我们为它们指定一个跑道(本地文件系统上的一个目录,该目录包含子目录).跑的规则是读 ...

  5. dos命令弹出对话框---Msg命令详解

    标签: dos批处理对话框 2015-11-12 17:20 497人阅读 评论(0) 收藏 举报 脚本(30)  版权声明:本文为博主原创文章,未经博主允许不得转载. dos命令弹出对话框---Ms ...

  6. Web.Config 对静态文件 js css img 的客户端缓存策略

    <?xml version="1.0" encoding="utf-8"?> <configuration> <system.we ...

  7. C# winform如何清除由Graphics类绘制出来的所有线条或图形

    在C#winform应用程序中,可以用GDI绘制出线条或图形. 1.在主窗体上绘制线条或图形 using (Graphics g = this.CreateGraphics())      {    ...

  8. [饭后算法系列] 数组中"和非负"的最长子数组

    1. 问题 给定一列数字数组 a[n], 求这个数组中最长的 "和>=0" 的子数组. (注: "子数组"表示下标必须是连续的. 另一个概念"子 ...

  9. Python读取txt文件

    Python读取txt文件,有两种方式: (1)逐行读取 data=open("data.txt") line=data.readline() while line: print ...

  10. 你需要知道的九大排序算法【Python实现】之选择排序

    一.选择排序 基本思想:选择排序的思想非常直接,不是要排序么?那好,我就从所有序列中先找到最小的,然后放到第一个位置.之后再看剩余元素中最小的,放到第二个位置--以此类推,就可以完成整个的排序工作了. ...