Push Notification总结系列(一)
2.Push Notification的iOS处理代码和Provider详解
3.Push Notification的移动客户端定位服务
正文:
PushNotification简介和证书说明及生成配置
一、推送通知,个人理解,指的是苹果公司通过服务器向设备终端推送信息的一种通知服务和功能。
整个推送过程涉及的对象和流程如下图(借用了一张广为流传的图):

简要说明:
(1)对象:整个过程涉及四个对象,Your App(开发的应用),iOS(设备系统),APNS Server(Apple Push Notification Service Server苹果推送通知服务的服务器),YourServer(本地服务器,常称为Provider)。
(2)流程:
1、应用程序注册消息推送。
2、iOS从APNS Server获取devicetoken,应用程序接收devicetoken。
3、应用程序将devicetoken发送给PUSH服务端程序。
4、服务端程序向APNS服务发送消息。
5、APNS服务将消息发送给iPhone应用程序。
(3)关键词:AppID,ProvisioningProfile,DeviceToken,SSLCertificate,PrivateKey(请不要着急,看下文的证书说明和配置)
归纳一下:
第一步:应用程序通过设备向APNS注册,APNS返回设备和应用绑定生成的DeviceToken给应用程序
第二步: 应用程序在收到DeviceToken以后,发送给本地服务器,可由本地服务器存储和管理
第三步:本地服务器向APNS发送消息推送请求,APNS 根据请求中包含的证书信息和目标DeviceToken,找到已注册DeviceToken,并发送相应推送消息给应用程序
二、证书,这是作为一个苹果开发者首先要面对的问题。
个人理解,虽然与其他开发者相比,一开始折腾证书,会比较打击开发积极性,不过这确实是好东西。由于证书的存在,苹果开发者的权益才能得到保证,当然代价就是得付费,关于付费请查看开发者中心,说多了都是泪。
玩笑和废话过后,继续。
(1)先了解几个概念:
1. AppID 应用ID。你的每个iOS应用都有一个唯一标识,如同每个人的身份证号码
2. Provisioning Profile 配置文件。包含了一系列的配置信息,例如开发版本或者发布版本
3. DeviceToken 设备令牌。标识安装有某应用的目标设备
4. SSL Certificate 带有推送服务的证书(后缀”也”为.cer),供Provider向APNS发送推送请求使用
5. Private Key 随证书一起存在
(2)生成证书(请高度注意,一大波~~证书正在靠近):
提示:下文内容的前提是您已经在自己的开发者中心创建好了对应的AppID,添加好了用于测试的Devices(如果有需要的朋友,再说吧)
重点:创建的AppID名称不能带有通配符,否则不支持推送通知服务;并且配置里面需要开启PushNotification服务功能选项,有需要的,先去配置一下,或者重新创建吧
本地Mac机生成签名请求文件(.certSigningRequest)
1. 启动钥匙串访问程序,点击钥匙图标

2. 在菜单栏中依次选择:钥匙串访问⟶偏好设置⟶证书选项卡,下面两项全部选关闭

3. 生成证书请求:钥匙串访问⟶证书助理⟶从证书颁发机构请求证书

4. 输入两个电子邮件地址和常用名称
a) 建议输入你在苹果网站注册的邮箱和名称,其他的也行,CA地址可以不填
b) 选择“存储到磁盘”和“让我指定钥匙对信息”。保存后的名称应该为:CertificateSigningRequest.certSigningRequest(这是第一个)

c) 保存到磁盘后在你的钥匙串访问窗口应该会出两个密钥,一个公钥密钥,一个专用密钥,红色部分就是你在上面输入的常用名。

在自己的开发者中心生成开发者证书(.cer文件)
现在可以回头看看推送图解的时候,SSL Certificate也是为.cer文件,但是二者是不同的。
开发者证书是为xcode提供的,分为开发版(Development)和发布版(Distribution),使App可以在真机上测试(使用开发版)以及最后的发布(使用发布版);SSLCertificate是供推送服务的Provider使用的,当然也分上述两种,指定推送权限和目标设备及App。
好,继~额。。首先请确认你已经在开发者中心并且已经为你的App创建好了AppID

在Certificates中,为您的AppID创建新的证书(别说没有看到“+”这个加号),以开发者证书为例


上图要求的CSR file正是我们之前生成的签名请求文件,直接继续

接下来,您自己点生成,我就不继续了,免得浪费一个证书嘛,节约一下。。。
得到一个.cer证书文件(第二个),可以下载存储好
生成SSL Certificate 供Provider使用的推送通知证书

在AppID列表里,选择目标AppID,然后可以看到生成新证书的按钮

上图用的是公司的开发账号登陆,因为我的权限不足,看不到生成按钮 =_=
直接下一步,然后选择开发者证书,选择设备,就可以生成目标文件了,最后下载,命名中最好带有apns之类的以示区别。
得到一个apns***.cer证书文件(第三个)
ProvisioningProfiles配置文件生成

生成配置文件也是按照提示来就好,最后生成.mobileprovision文件(第四个)
至此,证书生成阶段完毕:
1. CertificateSigningRequest.certSigningRequest
2. 开发者证书.cer
3. Provider使用的SSL Certificate证书(带有apns命名的.cer)
4. .mobileprovision配置文件
三、本地Mac机配置
1. 打开钥匙串访问程序,在如下界面,将开发者证书和推送通知用的证书一起添加进“登陆”文件列表

(借了一张图如上)
注意红色线遮挡的那个证书,应该是有一个Private Key跟随的。
特别是apns**.cer证书,需要有一个专用密钥(Private Key),才能右键生成.p12文件。
如上句所述,生成一个推送需要使用的.p12文件。
在此,说明一下,这里生成的p12文件是供Provider推送消息时使用,这是由我采用的推送方式决定。也还有其他推送方式,可以采用.pem等证书,甚至当采用Mac环境下的推送服务器时,可以直接使用apns**.cer文件,在此不谈论了。
将Xcode的Target证书配置选项,置为开发者证书,配置文件选项置为新生成的配置文件,即可在真机上测试后续的推送通知功能。
本篇介绍就到这里了,后续将介绍iOS推送通知代码和本地服务器Provider的实现。
Push Notification总结系列(一)的更多相关文章
- Push Notification总结系列(二)
Push Notification系列概括: 1.Push Notification简介和证书说明及生成配置 2.Push Notification的iOS处理代码和Provider详解 3.Push ...
- Push Notification总结系列之移动客户端定位服务
Push Notification系列概括: 1.Push Notification简介和证书说明及生成配置 2.Push Notification的iOS处理代码和Provider详解 3.Push ...
- 苹果推送通知服务Push Notification探究总结(序)
刚才发了两篇几个月前写的文档,觉得太敷衍了,想了想,还是来一发实在的. 再者,刚好上周研究了苹果的推送通知服务Push Notification,还是很有心得的,赶紧趁热打铁,记录一下,望与大家谈论下 ...
- Missing Push Notification Entitlement 问题
最近打包上传是遇到一个问题: 描述: Missing Push Notification Entitlement - Your app includes an API for Apple's Push ...
- iOS上简单推送通知(Push Notification)的实现
iOS上简单推送通知(Push Notification)的实现 根据这篇很好的教程(http://www.raywenderlich.com/3443/apple-push-notification ...
- Send push notification on Apple (APNS) on c#.net
原文: http://apns-c-sharp-net-vikram-jain.blogspot.com ======================= Please, Install your ce ...
- [转]com.devicepush.cordova-phonegap Device Push Notification Plugin
本文转自:https://www.npmjs.com/package/com.devicepush.cordova-phonegap Device Push Notification Plugin D ...
- 远程通知APNs(Apple Push Notification Server)
推送通知是由应用服务提供商发起的,通过苹果的APNs(Apple Push Notification Server)发送到应用客户端.下面是苹果官方关于推送通知的过程示意图: 推送通知的过程可以分为以 ...
- Android Push Notification实现信息推送使用
本贴在http://www.cnblogs.com/hanyonglu/archive/2012/03/16/2399655.html下略为改动. Apndroid Push Notification ...
随机推荐
- Microservice架构模
Microservice架构模 在2014年,Sam Newman,Martin Fowler在ThoughtWorks的一位同事,出版了一本新书<Building Microservices& ...
- RTP 记录 log 该机制
我们 RCV 在这里,经常跑concurrent request RTP: Receiving Transaction Processor, 它主要是用来处理 RCV_TRANSACTIONS_INT ...
- 博客测试:博客系统i94web beta1.0 申请测试
如何做了最近的博客更新,因为已经在线路和代码,我写了一个小博客系统:i94web,草草宣布beta1.0,请求您测试各种漏洞. 先看几张截图. 首页: watermark/2/text/aHR0cDo ...
- oracle rac常用的命令
oracle rac常用的命令 节点层:olsnodes 网络层: oifcfg 集群层:crsctl,ocrcheck,ocrdump,ocrconfig 应用层:srvctl,onsctl,crs ...
- Blocks and Variables
Blocks and Variables https://developer.apple.com/library/ios/documentation/cocoa/conceptual/Blocks/A ...
- Swiftly语言学习1
单纯值: 1.let常量声明,var声明变量(同时宣布福值,编译器会自己主动判断出类型) var myVariable = 42 myVariable 50 let myConstant = 42 l ...
- 利用css新属性appearance优化select下拉框
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <m ...
- node.js的npm安装
我不打算引进node.js的npm安装,但发现node.js通过管理一些包npm实现,或给一个简短的npm. 1.npm什么 npm是一个node包管理和分发工具,已经成为了非官方的公布 ...
- MD5处理图片加密算法
Android MD5加密算与J2SE平台一模一样,由于Android 平台支持 java.security.MessageDigest这个包.实际上与J2SE平台一模一样. 首先: 输入一个Stri ...
- Qt5官方demo分析集29——Extending QML - Property Value Source Example
此系列的所有文章都可以在这里查看http://blog.csdn.net/cloud_castle/article/category/2123873 接上文Qt5官方demo解析集28--Extend ...