关于苹果APNS推送机制中各生成文件(CSR、证书、Provisioning文件)的关系的梳理,以及各种坑

1.前言

iOS采用APNS做推送,流程附一张图吧,不多说

2.正题

这两天重新搞了几天的推送,有些坑想给大家指出来,少走弯路。

那我想要说的是流程中需要用的各种文件,为诸位做一个梳理,理解不到之处,敬请批评指正!

注:以Development为例,Distribution照搬即可。同样我们实现的网上常见的用php实现的推送服务器。

2.1 所需文件

首先是我们最终需要生成如下图所示的文件夹中的文件:

其中各个文件的关系:

2.2 生成各个文件时中的弯弯

1、生成Certificate Signing Request (CSR):

正常情况下,生成CSR文件如下图所示:

而正确生成CSR之后,会在密钥一项出现对应的密钥,如图

注意:下面这种情况会导致证书有问题!

2、生成PushZYQ.mobileprovision文件

生成PushZYQ.mobileprovision需要选择对应的证书,注意此处需要选择的证书是ios_development.cer对应的证书而不是SSL证书

3、生成PushZYQ.p12文件

4、各种命令

三步生成ck.pem文件

4.1、

openssl x509 -in aps_development.cer -inform der -out PushZYQCert.pem

4.2、

openssl pkcs12 -nocerts -out PushZYQKey.pem -in PushZYQ.p12

4.3、

cat PushZYQCert.pem PushZYQKey.pem > ck.pem

5、关于接收推送

默认推送提示是在程序退出后才会出现的,所以如果当前程序正在运行,只能通过回调方法来判断,如果你想联调的话。

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo{
    // 处理推送消息
    NSLog(@"userinfo:%@",userInfo);

    NSLog(@"收到推送消息:%@",[[userInfo objectForKey:@"aps"] objectForKey:@"alert"]);
}

3.所需文件

3.1、PHP实现的服务端,由于不能插入超链接,所以大家可输入图中URL

3.2、简易Demo

这个Demo中没有图示,大家可以通过控制台来查看,适配iOS8.0+。

4.正常情况下如图所示

时间: 2024-09-28 19:35:26

关于苹果APNS推送机制中各生成文件(CSR、证书、Provisioning文件)的关系的梳理,以及各种坑的相关文章

手把手教你配置苹果APNS推送服务|钿畑的博客 | 钿畑的博客

http://www.360doc.com/content/15/0118/17/1073512_441822850.shtml# 钿畑的文章索引 1. 什么是推送通知 2. 什么是APNS? 3. 推送流程 3.1 获取设备device_token阶段 3.2 消息推送过程 3.3 完整流程介绍 4. Push机制类型 5. 正式开工 5.1 准备工作 5.2 证书生成 6. 客户端制作 7. php服务器端配置 8. 测试 8. 附录: 8.1 JSON示例 8.2 检验证书是否正确的方法:

苹果消息推送机制

推送目前使用过个推,极光推送,友盟推送等,现在根据这些第三方的推送,总结一下推送的原理.第一阶段: 服务端程序把要发送的消息.目的iPhone的标识打包,发给APNS. 第二阶段:APNS在自身的已注册Push服务的iPhone列表中,查找有相应标识的iPhone,并把消息发到iPhone.第三阶段:iPhone把发来的消息传递给相应的应用程序, 并且按照设定弹出Push通知. 具体步骤如下 1.首先是应用程序注册消息推送. 2. iOS跟APNS Server要deviceToken.应用程序

iOS开发之功能模块--Apns推送中的的json格式介绍

在开发向苹果Apns推送消息服务功能,我们需要根据Apns接受的数据格式进行推送.下面接受我在进行apns推送时候总结的一点apns服务接受的Json数据格式 示例 1: 以下负载包含哦一个简单的 aps 字典.它使用字符串而不是字典作为 alert 的值,该负载同样包含了一个自定义的属性数组. { "aps" : { "alert" : "message" },//alert表示推送的消息文本 "parm" : [ &quo

Android与iOS系统的消息推送机制

相信大家在使用iPhone版微信的时候都会有这样的经历,微信已经处于关闭状态了(后台进程运行一段时间就被系统杀掉),这时候我们收到了一个消息提醒,打开微信应用,微信显示“连接中…”和“收取中…”,然后再次显示一次刚才系统推送给我的消息通知.对这个现象比较好奇,于是去知乎上查一下资料,发现知乎上的热心人还真多,看了大家的回答之后,总结如下: [之所以去知乎查看技术问题,因为我并非技术人员,而知乎上很多开发人员是会用通俗易懂的方式解释好技术问题的,因为里面有不少大牛.] 先介绍一下两个重要的消息推送

苹果apns消息推送机制

苹果apns消息推送机制[电薇:132乄8688乄4109][Q群780516296]声声叹!鲁能球迷被恒大踢服了 保住前三依旧是目标Space X发推秀宇航员进出臂 设计科幻美"力挺"被"断交"的台湾 马英九讽:无说服力深度|中日游泳PK中国差在哪?个别高手长期未突破日本防卫省敲定2019预算申请 总额5.2986万亿日-传软银决定不向电动汽车企业蔚来进行投资围堵P2P恶意逃废债 纳入征信"进行时"大连瓦房店市委书记被查 曾批落马前同僚教训深刻

iOS的推送机制APNs:本地推送&远程推送

本地推送: 本地推送主要应用在备忘录,闹钟等本地的,基于时间定时的消息提醒.本篇不做详细描述. 远程推送:APNS(苹果推送通知服务) iOS远程推送机制的原理及流程: 注册推送(橙色部分):若该App允许接收推送消息,则先要在代码中注册远程推送.注册推送后,iOS带着设备序列号去请求ANPS而获得deviceToken.然后App把deviceToken发送给我们App的服务器.因为若服务器有消息给我们推送时,它会把要发送的消息和deviceToken按照一定的格式一并打包发送给ANPS服务器

ZPush--基于netty4实现的苹果通知推送服务(APNs)Javaclient

简单说下实现苹果通知推送服务(APNs)client的一些要注意的地方: 使用长连接: sanboxserver是无用的,调试时直接用"gateway.push.apple.com"域名: 对于错误的Notification.苹果会回应一个Error response.里面有个identifier,在这个identifier之后的Notification全都失败. 因此发送者要缓存已经发送的Notification,最好设置Notification identifier为增长的整数序列

苹果通知推送服务(APNS)关键特性摘要

1. If APNs attempts to deliver a notification but the device is offline, the notification is stored for a limited period of time, and delivered to the device when it becomes available. 假如用户手机不在线,可能没有信号或者关机吧,APNs会存储转发,等用户在线时再发送 2.Only one recent notif

ZPush--基于netty4实现的苹果通知推送服务(APNs)Java客户端

简单说下实现苹果通知推送服务(APNs)客户端的一些要注意的地方: 使用长连接: sanbox服务器是没用的,调试时直接用"gateway.push.apple.com"域名: 对于错误的Notification,苹果会回应一个Error response,里面有个identifier,在这个identifier之后的Notification全都失败: 因此发送者要缓存已经发送的Notification,最好设置Notification identifier为增长的整数序列,当收到Er