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. Win10升级.NET Framework 3.5或2.0遇到错误0x800f081f

    具体方法如下: 1.将WIN10安装光盘ISO文件加载到虚拟光驱中. 2.WIN键+R键一起按,输入CMD后回车. 3.在CMD的命令行窗口里输入: cd C:Windowssystem32 跳转到s ...

  2. Why containers? Why should we care? 新旧容器的对比

    https://kubernetes.io/docs/concepts/overview/what-is-kubernetes/ The Old Way to deploy applications ...

  3. tornado安全应用之用户认证

    在这个例子中,我们将只通过存储在安全cookie里的用户名标识一个人.当某人首次在某个浏览器(或cookie过期后)访问我们的页面时,我们展示一个登录表单页面.表单作为到LoginHandler路由的 ...

  4. Docker容器的数据卷(data volume),数据卷容器,数据卷的备份和还原。

    Docker容器的数据卷(data volume),数据卷容器,数据卷的备份和还原. 数据卷就是数据(一个文件或者文件夹). Docker的理念之一是将应用与其运行的环境打包,docker容器的生命周 ...

  5. php递归循环地区

    $mylist = array( array( 'area_parent_id'=>0,'id'=>1,'area_name' => '河北',), array( 'area_par ...

  6. BZOJ1086 王室联邦 —— 树分块

    题目链接:https://vjudge.net/problem/HYSBZ-1086 1086: [SCOI2005]王室联邦 Time Limit: 10 Sec  Memory Limit: 16 ...

  7. ffmpeg xcode 中的使用

    最近比较闲,苦于ios设备上没有直接播放torrent 文件的软件,开始折腾了.找了不少资料有了思路.但是其中用到了ffmpeg 这个东西. ffmpeg 是通用的一个视频解决框架,用C语言编写,通用 ...

  8. Git基本用法2

    二.比较内容 1.比较提交 - Git Diff 现在我们对项目做些修改: $ cd gitproject # 向README文件添加一行 $ echo "new line" &g ...

  9. sipp 对asterisk 进行压力测试

    测试环境 asterisk  192.168.106.170 版本astrisk1.8 sipp   192.168.106.141 sipp版本3.3 安装依赖包yum install make g ...

  10. 【转】使用vue-cli搭建项目

    vue-cli 是一个官方发布 vue.js 项目脚手架,使用 vue-cli 可以快速创建 vue 项目,GitHub地址是:https://github.com/vuejs/vue-cli 一. ...