1. UIApplacation向 APNS 注册 push notification 服务

(1) 应用程序要支持推送服务, 在网页里面配置  http://developer.apple.com/devceter/ios/index.action

(2) 登陆苹果开发者账号 (注意是收费账号 $99 或者 $ 299)

(3) 下载push证书 (主要是给程序签名 push服务只有收费开发者才具备, 所以需要签名验证), 如果没有push证书 (APP ID -> 钥匙串程序生成reqest -> push证书)

    注意事项: APP ID 的Bundle ID 必须和plist文件中的Bundle identifier一致, APP ID 一旦生成将不可修改

(4) 把证书安装到钥匙串里  (双击证书文件)

(5) 生成 编译程序 用的描述文件 (网页里面进行)

向APNS 注册push服务 (UIApplication 的 registerForRemoteNotificationTypes:  方法)

2. 获取APNS 分配的DeviceToken (64位16进制串)

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

3. 把DeviceToken 发送给自己的后台服务器, 服务器记录每台设备的DeviceToken 以便日后推送消息给客户端, (需要一个网络接口, 让客户端发送DeviceToken)

4. 服务器推送消息给客户端

(1) 服务器除了需要有客户端的DeviceToken之外, 还要有push证书, 对push 的内容进行签名(苹果为了防止恶意向客户端(比如DeviceToken泄露了)发送消息, 每次推送消息, 都需要证书进行签名, 从而避免黑客恶意攻击用户手机)

(2) 如果你的服务器是Java 写的, 可以直接使用钥匙串导出的 P12 文件 (证书和密匙一起导出 )  如果你的服务器是PHP写的, 因为PHP语言不支持P12文件类型, 需要转换为pem文件.

(3) 将P12转换为pem文件: 终端 先找到你P12所在的目录 openssl pkcs12 -in CertificateName.p12 - outCertificateName.pem - nodes

(4) 服务器发送信息给APNS , APNS自动将信息推送到客户端.

5. 客户端处理收到的信息

-(void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo

注意事项:

1.

 

PUSH 和 远程推送的更多相关文章

  1. iOS远程推送之友盟Push

    更新记录: 1.2015年10月23日上午10:10分更新,优化了该类,去除了不必要的方法. ----------------------------------------------------- ...

  2. ios远程推送和python版push server相关笔记

    今天研究了下ios的远程推送,网上的相关教程很多,做了一遍下来记录一下遇到的问题和注意事项(转载请注明) 1.证书及乱七八糟的配置 公钥:app id管理那儿的“Development Push SS ...

  3. iOS---iOS10适配iOS当前所有系统的远程推送

    一.iOS推送通知简介 众所周知苹果的推送通知从iOS3开始出现, 每一年都会更新一些新的用法. 譬如iOS7出现的Silent remote notifications(远程静默推送), iOS8出 ...

  4. IOS远程推送

    IOS远程推送 一.关于推送通知 推送通知,也被叫做远程通知,是在iOS 3.0以后被引入的功能.是当程序没有启动或不在前台运行时,告诉用户有新消息的一种途径,是从外部服务器发送到应用程序上的.一般说 ...

  5. iOS开发之远程推送

    说到远程推送,应该用的也挺多的,今天就基于SEA的云推送服务,做一个推送的小demo,来了解一下iOS中的远程推送是怎么一回事儿,首先你得有苹果的开发者账号,好咸蛋也差不多了,主要内容走起. 一.准备 ...

  6. IOS本地,APNS远程推送(具体过程)

    添加本地推送 ///本地添加 -(void)addLocalPushNotification:(UIButton*)sender; { NSLog(@"%s",__FUNCTION ...

  7. iOS远程推送原理及实现过程

    ➠更多技术干货请戳:听云博客 推送通知,是现在的应用必不可少的功能.那么在 iOS 中,我们是如何实现远程推送的呢?iOS 的远程推送原理又是什么呢?在做 iOS 远程推送时,我们会遇到各种各样的问题 ...

  8. iOS本地推送与远程推送

    原文在此 分为本地推送和远程推送2种.可以在应用没有打开甚至手机锁屏情况下给用户以提示.它们都需要注册,注册后系统会弹出提示框(如下图)提示用户是否同意,如果同意则正常使用:如果用户不同意则下次打开程 ...

  9. iOS 远程推送通知

    1.什么是推送通知 在某些特殊情况下,应用程序被动收到的以不同种界面形式出现的提醒信息 推送通知的作用:可以让不在前台运行的app通知app发生了改变 iOS中得推送通知种类 远程推送通知(Remot ...

随机推荐

  1. EasyPusher实现将asterisk直播流以RTSP转发实现通话直播与录像

    本文转自博客:http://blog.csdn.net/jinlong0603/article/details/56047145 EasyPusher RTP直播推送介绍 EasyPusher是一个推 ...

  2. 2014 ACM-ICPC Beijing Invitational Programming Contest

    点击打开链接 Happy Reversal Time Limit: 1000ms Memory Limit: 65536KB 64-bit integer IO format: %lld      J ...

  3. MARA 附加结构(增强字段)

  4. 人生苦短之Python类的一二三

    在Python中,类也是以class开头定义的.我们定义一个动物类,它有名字和年龄,在java变量有实例变量和局部变量,方法内的变量是局部变量,类里面的变量是实例变量.那么在Python中的类及其属性 ...

  5. cocoapod使用

    什么是cocoapod CocoaPods是用于方便使用第三方开源库的管理工具,减少我们对第三方库的各种配置. 安装教程参考: CocoaPods的介绍.安装.使用和原理 Cocoapod安装使用 第 ...

  6. 并不对劲的CTS2019

    day0 没有C day1 t1:并不想简述题意 10分暴力走人 t2:有\(n\)个在\([1,D]\)内的均匀随机整数,问有多少的概率出现\(m\)对相同的 设\(f(i,j)\)表示考虑前\(i ...

  7. maven的常用构建命令

    mvn clean:删除项目根目录中的target目录

  8. HDU2159(完全背包)

    FATE Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u   Description ...

  9. 是否要从单片机转为嵌入式Linux?

    作者:嵌入式老鸟火哥 授权转载于公众号嵌入式老鸟的职场之道(ID: ict_embedded),有增加内容和修改. 最近很多童鞋投票并咨询如何从单片机转为嵌入式Linux开发.看来读者圈中做单片机,R ...

  10. TextMode="Password" 赋值(小技巧)

    TextMode="Password"不能在后台直接向前台赋值,但是可以用js赋值. txtUserPassword.Attributes.Add("value" ...