苹果APNS原始推送

苹果APNS原始推送

APNS远程推送证书的申请和制作——详细解析

我们的手机每天会被很多通知轰炸,那么,这些通知是怎么弄出来的呢,下面为大家详细解析在,iOS中,通知有两种(提醒轰炸的来源):

  • 第一种是本地通知(UILocalNotification),这一种不需要申请推送证书,也不需要向程序注册,直接使用,这一种不是本文讨论的范围。

  • 第二种是APNS远程推送——远程通知(UIRemoteNotification),这个不仅需要向程序注册,也需要在开发者账号里申请推送证书,下面来介绍一下如何注册和申请证书。

先看下面一幅图可以看出,远程推送的过程分为6步,下面为大家简单讲解一下:

第一步是在程序上注册远程通知,这是通知的前提(程序员的工作),注册好后,当用户下载完我们的应用并打开时,app会弹出一个AlertView,问是否允许该应用像你发送通知,如下图:

当用户选择“好”之后,iOS这个操作系统将会告诉APNS这个服务器,这样一来,当程序运行时,apns就会给程序发送那一台设备的device token(唯一)(如果采用极光推送,则向激光服务器上传 registrationID),这时候要做的操作就是获取这个token值.(appDelegate的代理方法),并将这个token值发送到公司的服务器上去,让他存储下来。如果用户选择“不允许”,iOS这个操作系统将不会告诉apns这个服务器,那么到这一步也就完结了。
我们的服务器拿到token值后也不是随意就能向设备发送推送的,还需要一个证明身份的文件——推送证书,有了这个推送证书后,当有事情发生时,服务器便可以主动向用户发送远程推送了.


  • 下面来讲解一下这个过程:

在程序上注册远程通知在didFinishLaunchingWithOptions 里写上 :

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{
    [[UIApplication sharedApplication] registerForRemoteNotificationTypes:UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound];
    //后面的具体操作省略,程序员们可自由发挥
    //如果采用的极光推,送则在此注册极光推送.
}


这样写就是会提醒,在程序上显示通知数,推送的过程中有铃声。

-(void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken{

代理方法来获取 device token,在这里,一般进行的是post请求,将deviceToken值发给服务器
注意:我们拿到的deviceToken 是带有空格的,交给服务器时,我们要将空格去掉(这也可以交给服务器来做)
}

当收到远程通知时,将调用如下代理方法:

-(void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo{
   //这里书写的代码应该可以让程序进入到相关的页面

申请推送证书

申请本地证书



点击“钥匙串访问”


然后选择“从证书颁发机构请求证书,如图



看到如下界面,邮箱填一个你自己的



这边名字随便起一个



然后点击继续在桌面上就生成了一个证书了(申请一个就足够了)



在开发者网站上申请证书



点击“证书”

选择App IDs:

找到你想发送远程推送的那一个App ID,点击它:此App ID为你为推送而申请的App ID,注意Bundle Identifier要保持唯一性。(推送工程的Bundle Identifier一定不能用通配Bundle Identifier)

点击"edit” 进行编辑,看到如下界面

将Push Notifications 的 “勾” 勾上,选择下面的 “Create Certification” ,将刚刚申请的本地证书上传上去

点击Continue

选择刚才钥匙串生成的文件


最后将其下载下来


这里只示范开发证书,不示范发布证书的申请了,两个证书都申请好了之后,再次点击“edit”可以看到如下界面到这里,申请证书的工作就算完成了。

申请描述文件(开发和发布描述文件)下面以开发描述文件为例,发布描述文件步骤相同如图,选择申请开发描述文件

如图进行选择

这里要选择我们用于推送的app 的app id

选择”continue“ 选择证书

将设备全部选上

最后给描述文件起一个名字,并下载下来,点击生成后,下载双击安装就完成了.


为服务器制作证书

准备p12文件

下面制作push开发证书,push 发布证书的制作过程是一样的,不同之处,下文会说明。
双击点击刚刚安装的下载的证书,这样证书就进去到钥匙串里面去了,在钥匙串的中找到那一个证书,将其导出为.p12文件,如图:

这里需要输入一个密码来对文件进行加密。这里我们选择abcabc,当然你也可以自己选择是什么,但是这个密码必须要铭记,切记!



最好建立一个文件夹将所有的证书放在同一个地方,因为最后生成的证书也是在那个位置,给p12取一个名字,存到指定文件夹中:



点击“存储”之后要输入一个密码,这个密码随便输一个,但是要记住,因为在接下来的步骤中要用得上在桌面上建立了一个叫“通知”的文件夹,里面放着所有的证书,如图:这样p12就准备好了.

将下载的证书制作成.pem 文件

打开终端应用程序,访问到你证书存放的那个目录下(如访问到桌面“通知”文件夹,在终端输入:cd /Users/aec/Desktop/通知


输入后敲回车进到文件夹目录后,输入以下命令将证书转换成.pem文件:openssl x509 -in 证书名字.cer -inform der -out push_developer_cer.pem如图:

可以看到文件夹里多了一个.pem文件:

将.p12 证书制作成.pem文件

在终端输入:openssl pkcs12 -nocerts -out pushKey.pem -in p12名字.p12如图:


敲入回车后,会让你输入p12的密码,这个密码你输出来数看不见的,但是你确实输了,输完后在敲回车

接下来会让你输入两次新生成的.pem文件的密码,这个密码也是看不见的(这个密码以后要给服务器使用,要牢记)如图:

可以看到,文件夹又生成了一个新的文件:pushKey.pem

合并两个.pem文件

合并两个.pem文件.将上述新产生的文件合并,在终端输入命令后敲回车:cat 下载证书生成的.pem p12生成的.pem 最终证书的名字.pem如图:


可以看到,文件夹又生成了一个新的文件:final_Push_developer.pem(这个密码要记住是pushKey.pem生成时要输入的密码,密码需要给到服务器)

测试证书是否有效

在终端输入(开发用的验证):
openssl s_client -connect gateway.sandbox.push.apple.com:2195 -cert 下载证书生成的.pem -key p12生成的.pem
如果是发布证书的验证,输入:
openssl s_client -connect gateway.push.apple.com:2195 -cert 下载证书生成的.pem -key p12生成的.pem
之后会让你输入密码,输入密码后,会有大量openssl消息,当你任意输入几个字符时,服务器会提示断开
如图:

final_Push_developer.pem和相应的密码,交给服务器端

以上省略若干行后出现下图:这时候你就可以把final_Push_developer.pem和相应的密码 交给服务器端了,告诉他们这个证书是没有问题的


[toc]

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,635评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,628评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 165,971评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,986评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,006评论 6 394
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,784评论 1 307
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,475评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,364评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,860评论 1 317
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,008评论 3 338
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,152评论 1 351
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,829评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,490评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,035评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,156评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,428评论 3 373
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,127评论 2 356

推荐阅读更多精彩内容