iOS APNS远程推送证书的申请和制作——详细解析
来源:互联网 发布:网络mg老虎机技巧 编辑:程序博客网 时间:2024/05/22 02:27
在ios中,通知有两种(提醒轰炸的来源):
第一种是本地通知(UILocalNotification),这一种不需要申请推送证书,也不需要向程序注册,直接使用,这一种不是本文讨论的范围。
第二种是APNS远程推送——远程通知(UIRemoteNotification),这个不仅需要向程序注册,也需要在开发者账号里申请推送证书,下面来介绍一下如何注册和申请证书。
一、远程推送的原理
先看下面一幅图(图片来源于无线互联):
可以看出,远程推送的过程分为6步,下面为大家简单讲解一下:
第一步是在程序上注册远程通知,这是通知的前提(程序员的工作),注册好后,当用户下载完我们的应用并打开时,app会弹出一个alertView,问是否允许该应用像你发送通知,如下图:
当用户选择“好”之后,ios 这个操作系统将会告诉APNS这个服务器,这样一来,当程序运行时,apns就会给程序发送那一台设备的 device token(唯一),这时候要做的操作就是获取这个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{
//这里书写的代码应该可以让程序进入到相关的页面
}
三、申请推送证书
1、申请本地证书:
选择 :
——> ——>
点击“钥匙串访问”
然后选择“从证书颁发机构请求证书,如图:
看到如下界面,邮箱填一个你自己的:
这边名字随便起一个
然后点击继续在桌面上就生成了一个证书了(申请一个就足够了):
2、在开发者网站上申请证书
打开99美元开发者账号,进入到申请证书的页面:
点击“证书”:
选择App IDs
找到你想发送远程推送的那一个App ID,点击它:
点击"edit” 进行编辑,看到如下界面:
将Push Notifications 的 “勾” 勾上,选择下面的 “Create Certification” ,将刚刚申请的本地证书上传上去:
点击Continue :
最后将其下载下来,这里只示范开发证书,不示范发布证书的申请了,两个证书都申请好了之后,再次点击“edit”可以看到如下界面:
到这里,申请证书的工作就算完成了。
四、申请描述文件(开发和发布描述文件)
下面以开发描述文件为例,发布描述文件步骤相同
如图,选择申请开发描述文件:
这里要选择我们用于推送的app 的app id
选择”continue“ 选择证书
将设备全部选上
最后给描述文件起一个名字,并下载下来
点击生成后,下载双击安装就完成了。
五、为服务器制作证书
1、准备p12文件
下面只制作push开发证书,push 发布证书的制作过程是一样的,不同之处,下文会说明。
双击点击刚刚安装的下载的证书,这样证书就进去到钥匙串里面去了,在钥匙串的中找到那一个证书,将其导出为.p12文件,如图:
最好建立一个文件夹将所有的证书放在同一个地方,因为最后生成的证书也是在那个位置,给p12取一个名字,存到指定文件夹中:
点击“存储”之后要输入一个密码,这个密码随便输一个,但是要记住,因为在接下来的步骤中要用得上
在桌面上建立了一个叫“通知”的文件夹,里面放着所有的证书,如图:
这样p12就准备好了
2、将下载的证书制作成.pem 文件
打开终端应用程序,访问到你证书存放的那个目录下(如访问到桌面“通知”文件夹,在终端输入:
cd /Users/aec/Desktop/通知 ):
输入后敲回车
进到文件夹目录后,输入以下命令将证书转换成.pem文件:
openssl x509 -in 证书名字.cer -inform der -out push_developer_cer.pem
如图:
可以看到文件夹里多了一个.pem文件:
3、将.p12 证书制作成.pem文件
在终端输入:
openssl pkcs12 -nocerts -out pushKey.pem -in p12名字.p12
如图:
敲入回车后,会让你输入p12的密码,这个密码你输出来数看不见的,但是你确实输了,输完后在敲回车
接下来会让你输入两次新生成的.pem文件的密码,这个密码也是看不见的(这个密码以后要给服务器使用,要牢记)如图:
可以看到,文件夹又生成了一个新的文件:pushKey.pem
4、合并两个.pem文件
将上述新产生的文件合并,在终端输入命令后敲回车:
<p>cat 下载证书生成的.pem p12生成的.pem > 最终证书的名字.pem<br></p>
如图:
可以看到,文件夹又生成了一个新的文件:final_Push_developer.pem(这个密码要记住是pushKey.pem生成时要输入的密码,密码需要给到服务器)
5、测试证书是否有效
在终端输入(开发用的验证):
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 和相应的密码 交给服务器端了,告诉他们这个证书是没有问题的
- iOS APNS远程推送证书的申请和制作——详细解析
- [证书]3、APNS远程推送证书的申请和制作——详细解析
- 苹果推送--APNS远程推送证书的申请和制作——详细解析
- APNS远程推送证书的申请和制作——详细解析
- APNS远程推送证书的申请和制作——详细解析
- APNS远程推送证书的申请和制作——详细解析
- APNS远程推送证书的申请和制作——详细解析
- APNS远程推送证书的申请和制作
- iOS APNS远程推送(最详细解析)
- ios中apns推送证书制作命令
- iOS—如何在客户端和服务端配置APNs远程推送通知的方法
- APNS推送服务证书制作
- iOS APNS远程推送
- APNS远程推送详细教程
- IOS 远程推送证书系列一:制作
- iOS APNs远程推送(详细图文) + iOS10相关
- ios 本地推送和远程推送(APNS)
- IOS推送证书的制作
- 电容充放电
- BEGINNING SHAREPOINT® 2013 DEVELOPMENT 第13章节--使用业务连接服务创建业务线解决方案 SP Apps中的BCS
- [C#.NET] 利用 DES / AES 演算法加解密
- C语言各运算符优先级比较列表
- JQueryEasyUI信息管理实例
- iOS APNS远程推送证书的申请和制作——详细解析
- 搜索业务增速下滑 Google廉颇老矣?
- 在Ubuntu终端彻底删除软件方法
- Linux 进程操作细节
- 第四章 Backbonejs中的Router实践
- 随想录(强大的kprobe)
- OpenStack虚拟机HA建议
- 如何查看项目使用的Eclipse版本和Jdk的版本
- OpenGL学习(hello)