iOS_消息推送原理及实现

一、消息推送原理:
在实现消息推送之前先提及几个于推送相关概念,如下图1-1:
1、:就是为指定IOS设备应用程序提供Push的服务器,(如果IOS设备的应用程序是客户端的话,那么可以理解为服务端[消息的发起者]);
2、APNS:Apple Push[苹果消息推送服务器];
3、:用来接收APNS下发下来的消息;
4、 App:IOS设备上的应用程序,用来接收传递APNS下发的消息到制定的一个客户端app[消息的最终响应者];
上图可以分为三个阶段:
阶段一:[服务端]把要发送的消息,目的IOS设备标识打包,发送给APNS;
阶段二:APNS在自身的已注册Push服务的IOS设备列表中,查找有相应标识的IOS设备,并将消息发送到IOS设备;
阶段三:IOS设备把发送的消息传递给对应的应用程序,并且按照设定弹出Push通知 。
具体过程,如下图1-2:
1、[ App]注册消息推送;
2、[ App]跟[APNS ]要,App接收;
3、[ App]将发送给[]Push服务端程序;
4、当Push服务端程序满足发送消息条件了,[]向[APNS ]发送消息;
5、[APNS ]将消息发送给[ App].
二、消息推送实现:
1、生成*.文件,步骤如下:
[-应用程序-实用工具-钥匙串访问-证书助手-从证书机构求证书-证书信息(用户电子邮箱地址{填写您的邮箱,如:},常用名称{任意,如:},请求是:{单选,选择‘存储到磁盘’})-继续-保存],这时会在您指定的地方生成你指定的文件,默认为quest.文件,这里命名为:..在此*.已经生成,具体操作步骤如图所示 。
如果生成成功,则会在[钥匙串访问|登录|密钥]栏目中列出与*.关联的密钥,这里是,如图所示:
2、新建一个App ID(在苹果开发者账号中配置)
(1)登录iOS Dev ,登录成功后,点击(iOS对应链接),如图所示:
(2)创建New App ID[App IDsààNew App ID]( {填写您对此App ID的描述,如:iShop}, Seed ID(App ID ){选择绑定App ID前缀,如:默认选择 New},(App ID ){填写绑定App ID后缀,如:com..iShop}),如下图所示:
这样就会生成下面这条记录,如图所示:
(3)配置上一步中生成的App ID,让其支持消息推送[点击2-6中的à选中 for Apple Pushà点击],如图所示:
(4)a(生成部署请求认证)[点击2-7中的àà步骤1生成的*文件(这里是iShop.)--生成完成后将其下载下来,命名为:.cer],双击.cer证书{将证书与密钥关联,并将证书导入到中},如下图所示:
(5)创建[开发许可配置文件](| |New ),具体操作流程如下图所示:
点击图中,生成[开发许可配置文件],这里是:.如下图所示:
下载此开发许可证书(用于联机调试) 。
总结,到现在为止,我们已经生成:A:*.文件(在步骤(4)中使用,用于生成证书B)、B:ty.cer证书(在[Push服务器]服务端应用使用)、C:*..开发许可配置文件(在 App客户端应用联机调试使用) 。
3、新建一个项目
1. 创建一个" view " ,为省事,你设置的" " + "“必须和step 5创建的App ID的" "一致 。
2. 在.mfile的"" 里,添加下列代码 (用于为apppush):
//
[[]:
(||)];
3.在.mfile里添加下列2个 (用来withtoken和 error的)
-(void):(*):(*)
NSLog(@":%@",);
-(void):(*):(*)error
NSLog(@",error:%@",error);
4. 运行该app in real( doesn'tpush ) 。这时你会在上看到一个popup(该窗口只会出现一次,重装app不会再出现),提示你该app会send push 给你,如果同意则,不同意则click "Now allow” 。如果选择了OK,那么在" > “里会有你的app在list里 。而且这时你的Xcode会显示你的 token 。
5:""key to a ".p12" file(该文件会在后面生成apns 的.p12 or .pem file时用到)