一、消息推送原理: 在实现消息推送之前先提及几个于推送相关概念,如下图1-1: 1、Provider:就是为指定IOS设备应用程序提供Push的服务器,(如果IOS设备的应用程序是客户端的话,那么Provider可以理解为服务端[消息的发起者]); 2、APNS:Apple Push Notification Service[苹果消息推送服务器]; 3、iPhone:用来接收APNS下发下来的消息; 4、Client App:IOS设备上的应用程序,用来接收iphone传递APNS下发的消息到制定的一个客户端 app[消息的最终响应者]; 上图可以分为三个阶段: 阶段一:Provider[服务端]把要发送的消息,目的IOS设备标识打包,发送给APNS; 阶段二:APNS在自身的已注册Push服务的IOS设备列表中,查找有相应标识的IOS设备,并将消息发送到IOS设备; 阶段三:IOS设备把发送的消息传递给对应的应用程序,并且按照设定弹出Push通知。 具体过程,如下图1-2:
1、[Client App]注册消息推送; 2、[Client App]跟[APNS Service]要deviceToken, Client App接收deviceToken; 3、[Client App]将deviceToken发送给[Provider]Push服务端程序; 4、当Push服务端程序满足发送消息条件了,[Provider]向[APNS Service]发送消息; 5、[APNS Service]将消息发送给[Client App].
二、消息推送实现: 1、生成*.certSigningRequest文件,步骤如下: [MacBook-应用程序-实用工具-钥匙串访问-证书助手-从证书机构求证书-证书信息(用户电子邮箱地址{填写您的邮箱,如:your@email.com},常用名称{任意,如:PushDemo},请求是:{单选,选择‘存储到磁盘’})-继续-保存],这时会在您指定的地方生成你指定的文件,默认为CertificateSigningRequest.certSigningRequest文件,这里命名为:PushDemo.certSigningRequest.在此*.certSigningRequest已经生成,具体操作步骤如图所示。 如果生成成功,则会在[钥匙串访问|登录|密钥]栏目中列出与*.certSigningRequest关联的密钥,这里是PushDemo,如图所示: 2、新建一个App ID(在苹果开发者账号中配置) (1) 登录iOS Dev Center,登录成功后,点击(iOS Provisioning Portal对应链接),如图所示: (2) 创建New App ID[App IDsàManageàNew App ID]( Description{填写您对此App ID 的描述,如:iShop},Bundle Seed ID(App ID Prefix){选择绑定App ID前缀,如:默认选择Generate New},Bundle Identifier(App ID Suffix){填写绑定App ID后缀,如:com.yourcorp.iShop}),如下图所示: 这样就会生成下面这条记录,如图所示: (3) 配置上一步中生成的App ID,让其支持消息推送[点击2-6中的Configureà选中Enable for Apple Push Notification serviceà点击Configure],如图所示: (4) Generate a Certificate Signing Request(生成部署请求认证)[点击2-7中的2ConfigureàContinueà步骤1生成的*certSigningRequest文件(这里是iShop. certSigningRequest)-Generate-生成完成后将其下载下来,命名为:aps_developer.cer],双击aps_developer.cer证书{将证书与密钥关联,并将证书导入到MacBook中},如下图所示: (5) 创建Development Provisioning Profiles[开发许可配置文件](Provisioning| Development|New Profile),具体操作流程如下图所示: 点击图中Submit,生成Development Provisioning Profiles[开发许可配置文件],这里是:iShopDevprofile.mobileprovision如下图所示: 下载此开发许可证书(用于联机调试)。 总结,到现在为止,我们已经生成:A:*.certSigningRequest文件(在步骤(4)中使用,用于生成证书B)、B:aps_developer_identity.cer证书(在Provider[Push服务器]服务端应用使用)、C:*..mobileprovision开发许可配置文件(在Client App客户端应用联机调试使用)。 3、新建一个项目 1. 创建一个"single view application" project,为省事,你设置的"Company Identifier" + "Production“必须和step 5创建的App ID的"bundle identifier"一致。
5: export "PushDemo" private key to a ".p12" file(该文件会在后面生成apns provider的.p12 or .pem file时用到) 6: 在5中生成的“PushDemoKey.p12” file和step 6生成的"aps_development.cer" file是用于APNS provider side的源文件,APNS Provider side进行push message时要用到的"cert + key" file就是通过这2个file来生成。该Step就是用来生成for APNS provider side (php version)要用到这个"cert + key" pem file.
7: 在5生成的“PushDemoKey.p12” file和step 6生成的"aps_development.cer" file是用于APNS provider side的源文件,该step是简单测试这2个file是否有效
8: 创建provider server side (php version) $deviceToken = '43fcc3cff12965bc45bf842bf9166fa60e8240c575d0aeb0bf395fb7ff86b465'; // Put your private key's passphrase here: //该值是 3)生成PushDemoKey.pem时设置的密码 $passphrase = '123456'; // Put your alert message here: $message = 'My first push notification!'; //.....stream_context_set_option($ctx, 'ssl', 'local_cert', 'PushDemoCK.pem');
参考文章:http://mmz06.blog.163.com/blog/static/121416962011111710934946/ http://user.qzone.qq.com/75869071/infocenter%23!app=2&via=QZ.HashRefresh&pos=1351564081#!app=2&via=QZ.HashRefresh&pos=1351564081 |
|