Notification系列概括:
1.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总结系列(一)的更多相关文章

  1. Push Notification总结系列(二)

    Push Notification系列概括: 1.Push Notification简介和证书说明及生成配置 2.Push Notification的iOS处理代码和Provider详解 3.Push ...

  2. Push Notification总结系列之移动客户端定位服务

    Push Notification系列概括: 1.Push Notification简介和证书说明及生成配置 2.Push Notification的iOS处理代码和Provider详解 3.Push ...

  3. 苹果推送通知服务Push Notification探究总结(序)

    刚才发了两篇几个月前写的文档,觉得太敷衍了,想了想,还是来一发实在的. 再者,刚好上周研究了苹果的推送通知服务Push Notification,还是很有心得的,赶紧趁热打铁,记录一下,望与大家谈论下 ...

  4. Missing Push Notification Entitlement 问题

    最近打包上传是遇到一个问题: 描述: Missing Push Notification Entitlement - Your app includes an API for Apple's Push ...

  5. iOS上简单推送通知(Push Notification)的实现

    iOS上简单推送通知(Push Notification)的实现 根据这篇很好的教程(http://www.raywenderlich.com/3443/apple-push-notification ...

  6. Send push notification on Apple (APNS) on c#.net

    原文: http://apns-c-sharp-net-vikram-jain.blogspot.com ======================= Please, Install your ce ...

  7. [转]com.devicepush.cordova-phonegap Device Push Notification Plugin

    本文转自:https://www.npmjs.com/package/com.devicepush.cordova-phonegap Device Push Notification Plugin D ...

  8. 远程通知APNs(Apple Push Notification Server)

    推送通知是由应用服务提供商发起的,通过苹果的APNs(Apple Push Notification Server)发送到应用客户端.下面是苹果官方关于推送通知的过程示意图: 推送通知的过程可以分为以 ...

  9. Android Push Notification实现信息推送使用

    本贴在http://www.cnblogs.com/hanyonglu/archive/2012/03/16/2399655.html下略为改动. Apndroid Push Notification ...

随机推荐

  1. C面试题

    1.sizeof()和strlen()使用? 答案: 1.从功能定义,strlen功能,要查找字符串的长度,sizeof功能是用来寻找指定的变量或变量类型的存储器占用 尺寸: 2.sizeof是运算符 ...

  2. Skynumber

    Time Limit: 1000ms Memory Limit: 128000KB 64-bit integer IO format:      Java class name: Submit Sta ...

  3. 【高德地图API】汇润做爱地图技术大揭秘

    原文:[高德地图API]汇润做爱地图技术大揭秘 昨日收到了高德地图微信公众号的消息推送,说有[一大波免费情趣用品正在袭来],点进去看了一眼,说一个电商公司(估计是卖情趣用品的)用高德云图制作了一张可以 ...

  4. Swift-开发 # 1.2版本迁移

    { Parallels: 可以将一个win程序拖到mac中运行. } --类似于虚拟机 遇到的几大问题: 1.自动修改无效? --忽略它的存在,坑. 2.无止境的修改,还是错? --使用替换工具-&g ...

  5. curl 简单使用

    cURL -- Command Line URL viewer -u username:password 以 Basic 方式发送用户名和密码 -d 以 POST 方式发送数据 -X 支持其它动词, ...

  6. lcc之内存分配

    现在感觉这本书有些地方没有说透,如果自己的理解能力与基础知识够强的话,理解起来还好,如果不行的话,某些地方理解起来会相当的头疼. 现在来说说内存管理.当初看这一章的时候很快就过去了,感觉很多地方很好理 ...

  7. 异常处理 Access to the path is denied

    在需要进行读写操作的目录下添加Network Service这个帐号, 由于在iis 6.0中,默认的应用程序池中的标示用的是Network Service, 所以在进程中是使用Network Ser ...

  8. 平安某金所奇葩的面经-关于幂等和ROA设计的反思

    在公司一直在做跟支付有关的项目,某日接到平安某金所一男子电话,应该是之前某猎头投的,我正好在吃早饭(也不能怪他们上班早,我们公司弹性工作制,我一般上班比较晚). 因为饭馆信号不好,只能赶紧放下剩下的半 ...

  9. 通过Web Api 和 Angular.js 构建单页面的web 程序

    通过Web Api 和 Angular.js 构建单页面的web 程序 在传统的web 应用程序中,浏览器端通过向服务器端发送请求,然后服务器端根据这个请求发送HTML到浏览器,这个响应将会影响整个的 ...

  10. linux监控命令全覆盖(图文说明)

    1.1 top 1.1.1 命令说明 Top 命令能够实时监控系统的运行状态,并且可以按照cpu.内存和执行时间进行排序 1.1.2 参数说明 命令行启动参数: 用法: top -hv | -bcis ...