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. ubuntu profile-environment-bashrc 添加环境变量

    Ubuntu Linux系统环境变量配置文件: /etc/profile : 在登录时,操作系统定制用户环境时使用的第一个文件 ,此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行. ...

  2. (摘)Zebra打印机异常处理

    一.一般条码打印设备按图指示方向,虚线为碳带安装路径,实线为标签路径.回卷后废碳带不易剥落,则在装入前用废标签的光滑底纸卷在回卷轴上,然后再上碳带.安装标签时,根据不同标签宽度调整限纸器.压头弹簧均匀 ...

  3. Qt编程之右键单击QTreeWidgetItem弹出菜单

    其实有这个需求很好理解,就是我有个project manager,上面的TreeWidgetItem都表示一个工程,我需要右键创建新的工程,或者删除.这个在很多普通软件中也见得多.在弹出的菜单中加入相 ...

  4. java中Runnable接口含义

    Java中实现多线程有两种途径:继承Thread类或者实现Runnable接口. Runnable接口非常简单,就定义了一个方法run(),继承Runnable并实现这个 方法就可以实现多线程了,但是 ...

  5. SPOJ 0287 Smart Network Administrator

    题目大意:一座村庄有N户人家.只有第一家可以连上互联网,其他人家要想上网必须拉一根缆线通过若干条街道连到第一家.每一根完整的缆线只能有一种颜色.网管有一个要求,各条街道内不同人家的缆线必须不同色,且总 ...

  6. [LeetCode] 160. Intersection of Two Linked Lists 解题思路

    Write a program to find the node at which the intersection of two singly linked lists begins. For ex ...

  7. 【KMP】Oulipo

    KMP算法 求串内匹配数,计数时返回next[]位置. Problem Description The French author Georges Perec (1936–1982) once wro ...

  8. TypeScript 素描 - 装饰器

    /* 装饰器 简单理解为C#中的Attribute 可以装饰到类.函数.讯问符.属性.参数上 语法 @xxx 装饰器其实是一个函数 @xxx 就要有一个 function xxx 多个装饰器可以用来装 ...

  9. Java学习之List接口

    List接口 List接口的定义如下: public interface List<E>extends Collection<E> 可以发现List接口时Collection接 ...

  10. 转载:mybatis和hibernate 解析

    第一章     Hibernate与MyBatis Hibernate 是当前最流行的O/R mapping框架,它出身于sf.net,现在已经成为Jboss的一部分. Mybatis 是另外一种优秀 ...