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. nodejs定时任务node-schedule

    1:使用npm安装node-schedule模块 npm install node-schedule (1)每隔5分钟执行一次: var schedule = require('node-schedu ...

  2. HDU_2057——64位无符号16进制数的运算

    Problem Description There must be many A + B problems in our HDOJ , now a new one is coming. Give yo ...

  3. HDU_2024——判断字符串是否是c语言合法标识符

    Problem Description 输入一个字符串,判断其是否是C的合法标识符.   Input 输入数据包含多个测试实例,数据的第一行是一个整数n,表示测试实例的个数,然后是n行输入数据,每行是 ...

  4. cf298F:状压dp+剪枝

    div2的F题,只想到了一个复杂度略高的dp,T了几次,后来加了剪枝减掉一些无用的状态终于过了.. 题意: 一个n*m的矩阵 (n<=5,m<=20),对格子进行黑白染色,已经给出了每行每 ...

  5. USACO6.4-Wisconsin Squares:搜索

    Wisconsin Squares It's spring in Wisconsin and time to move the yearling calves to the yearling past ...

  6. 深入理解linux网络技术内幕读书笔记(八)--设备注册与初始化

    Table of Contents 1 设备注册之时 2 设备除名之时 3 分配net_device结构 4 NIC注册和除名架构 4.1 注册 4.2 除名 5 设备初始化 6 设备类型初始化: x ...

  7. [Qt] CFlip 翻页功能实现

    由于需要给table制作翻页功能,所以写了一个翻页的类. 看上去总体效果感觉还是不错的,哈哈. //flip.h #ifndef CFLIP_H #define CFLIP_H #include &l ...

  8. SQL Server 系统时间

    getdate()函数:取得系统当前的日期和时间.返回值为datetime类型的. 用法:getdate() 例子: select getdate() as dte,dateadd(day,-1,ge ...

  9. Android设备中实现Orientation Sensor(图)兼谈陀螺仪

    设备中的三自由度Orientation Sensor就是一个可以识别设备相对于地面,绕x.y.z轴转动角度的感应器(自己的理解,不够严谨).智能手机,平板电脑有了它,可以实现很多好玩的应用,比如说指南 ...

  10. 如何用Github的gh-pages分支展示自己的项目

    很多新同学觉得github不就是一个代码托管所吗,如何能展示项目呢?其实完全可以借助Github的gh-pages打造出自己的一个作品集,无论是对自己的提升整合还是日后的面试都大有裨益. 前置准备 G ...