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 ...
随机推荐
- ssh下常用操作汇总(good)
1. 安装git,从程序目录打开 "Git Bash" 2. 键入命令:ssh-keygen -t rsa -C "email@email.com" &q ...
- Oracle 11g XE 是 Oracle 数据库的免费版本
Oracle 11g XE 是 Oracle 数据库的免费版本,支持标准版的大部分功能,11g XE 提供 Windows 和 Linux 版本. 做为免费的 Oracle 数据库版本,XE 的限制是 ...
- JS中call、apply的用法说明
JS Call()与Apply()的区别 ECMAScript规范给所有函数都定义了Call()与apply()两个方法,call与apply的第一个参数都是需要调用的函数对象,在函数体内这个参数就是 ...
- 判断sqlserver对象是否存在
--查看对象是否已经存在 --数据库是否存在 --if exists (select * from sys.databases where name = ’数据库名’) -- dro ...
- java_linux_shell_定时kill 启动java程序
#!/bin/bash #while truedo Process_ID=`ps -ef |grep 'LoginSinaWeiboCookie.jar' |grep -v grep |awk '{p ...
- mac github工具将命令当下来的代码拖入macgithub中就可以
mac github工具将命令当下来的代码拖入macgithub中就可以,刚開始傻傻的就知道点击那个加入button,总是在当下来的文件夹下创建个文件夹.并且代码不能同步
- 【Java编码准则】の #12不要使用不安全或者强度弱的加密算法
安全性要求高的应用程序必须避免使用不安全的或者强度弱的加密算法,现代计算机的计算能力使得攻击者通过暴力破解能够攻破强度弱的算法.比如,数据加密标准算法DES是极度不安全的,使用类似EFF(Electr ...
- Dialog中显示倒计时,到时自己主动关闭
这里直接用系统Dialog中加入了倒计时的显示,假设用自己定义Dialog会更美观: private TextView mOffTextView; private Handler mOffHandle ...
- cocos2d-x3.0之请求网络(phpserver)
HelloWorldScene.h #ifndef __HELLOWORLD_SCENE_H__ #define __HELLOWORLD_SCENE_H__ #include "cocos ...
- C# 调用Webservice并传递序列化对象
原文:C# 调用Webservice并传递序列化对象 C#动态调用WebService注意要点 1.动态调用的url后面注意一定要加上?WSDL 例如:string _url = "ht ...