IOS推送通知实现步骤
2015-05-15 11:59
459 查看
名词解释 APNS 是Apple Push Notification Service(Apple Push服务器)的缩写,是苹果的推送服务器; Device 安装带有推送服务程序的iPhone手机; Provider 程序服务器,把需要推送的信息发给 APNS; DeviceToken 在Device第一次连接APNS时,由APNS生成的经过加密的连接认证信息。在以后的连接中,无论时Provider到APNS还是APNS到Device 都需要 DeviceToken作为认证。 Payload 需要推送的消息的主体内容。alert-alert消息的消息体,按键标题等badge-显示在程序icon右上角的数字,sound-声音提示文件的文件名,该声音资源文件要在程序包中。 Push的原理 Push 的工作机制可以简单的概括为下图 图中,Provider是一般指某个ios软件的服务器。 上图可以分为三个阶段。 第一阶段:.net应用程序把要发送的消息、目的iPhone的标识打包,发给APNS。 第二阶段:APNS在自身的已注册Push服务的iPhone列表中,查找有相应标识的iPhone,并把消息发到iPhone。 第三阶段:iPhone把发来的消息传递给相应的应用程序, 并且按照设定弹出Push通知。 整体流程 1. Device --> 连接--> APNS 获取 DeviceToken 2. Device -->连接--> Provider 提供DeviceToken 3. Provider侦测需要push的消息生成Notification信息 4. Provider侦把要push的消息推送到APNS 5. APNS把该消息推送到手机 具体实现 一、获取推送服务认证书 该认证书 是用于服务器与APNS服务器SSL 连接时的认证,而获取p12的前提是获取APNS Assistant。 1. 在apple开发中心生成 App ID(如PushDemo),注意:Bundle Indentifier值格式必须为反向域名格式,如com.bluestar.PushDemo; 2. 单击App ID 的后面的 Configure; 3. 在新的页面中,勾选Enable Push Notification Services , 而后点击Configure ,随后出现APNs Assistant,APNs助手会引导生成你的程序与APNs服务器进行SSL连接的认证书App ID specific Client SSL certificate[注释:一般文件名为“aps_developer_identity.cer” 可修改] 4. APNs助手会引导你保存SSL certificate到你的硬盘,保存好后双击,安装到你的keychain; 5. 执行完以上四步,可以点击Done,关闭APNs助手; 6. 启动Keychain Access程序,查看刚才安装的认证,name 为apple Development/Production push Services。。。 导出--即获得Certificates.p12 保存好给Provider 服务器使用; 二、IOS应用程序开启推送服务 1. iPhone provisioning 以开启了PUSH功能App ID (如前述PushDemo)生成相应的provisioning,并下载; 2. 以前述App ID(PushDemo),创建应用程序,并指定Bundle Indentifier为注册时使用的Bundle Indentifier (本例为com.bluestar.PushDemo); 3. iPhone需要用到的方法函数如下: //注册启用 push [[UIApplication sharedApplication] registerForRemoteNotificationTypes:(UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeBadge /*|UIRemoteNotificationTypeSound ab32 */)]; //用该判断 程序是不是通过push消息启动的 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions //iPhone 从APNs服务器获取deviceToken后激活该方法 - (void)application:(UIApplication *)app didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken //注册push功能失败 后 返回错误信息,执行相应的处理 - (void)application:(UIApplication *)app didFailToRegisterForRemoteNotificationsWithError:(NSError *)err 复制代码 附录:使用OpenSSL转换证书格式 1. 将aps_developer_identity.cer转换成 aps_developer_identity.pem格式。 openssl x509 -in aps_developer_identity.cer -inform DER -out aps_developer_identity.pem -outform PEM 2. 将Certificates.p12格式的私钥转换成pem,需要设置4次密码,密码都设置为:abc123。 openssl pkcs12 -nocerts -out aps_developer_key.pem -in Certificates.p12 3. 用certificate和the key 创建PKCS#12格式的文件。 openssl pkcs12 -export -in aps_developer_identity.pem -inkey aps_developer_key.pem -certfile PushTest.certSigningRequest -name "aps_developer_identity" -out aps_developer_identity.p12 |
相关文章推荐
- IOS推送通知实现步骤
- IOS推送通知实现步骤
- IOS推送通知的实现步骤
- iOS推送通知的实现步骤
- IOS推送通知实现步骤
- IOS推送通知的实现步骤
- IOS推送通知的实现步骤
- IOS推送通知的实现步骤
- IOS推送通知实现步骤
- 实现类似 iOS 5 推送通知效果的代码例子
- iOS苹果推送功能实现步骤
- iOS 推送通知 客户端实现
- 步骤,将推送通知使用Unity3d iOS上
- 推送通知iOS客户端编写实现及推送服务器端编写
- iOS之推送通知-本地-服务器3.服务器端实现: 如果要编写内容提供者的推送服务程序,需要进行SSL认证编程,以及构建APNS数据包,数据包分为3个主要部分:Command(命令)、deviceTo
- 配置iOS推送通知与推送通知iOS客户端编写实现及推送服务器端编写
- iOS 开发中,如何实现高效的大量(如十万级)推送通知?
- php实现Ios推送通知
- 推送通知iOS客户端编写实现及推送服务器端编写
- iOS 之推送通知的实现 资料收集(第一遍看没看太懂)