本地推送:

  本地推送主要应用在备忘录,闹钟等本地的,基于时间定时的消息提醒。本篇不做详细描述。

远程推送:APNS(苹果推送通知服务)

        

iOS远程推送机制的原理及流程:

  注册推送(橙色部分):若该App允许接收推送消息,则先要在代码中注册远程推送。注册推送后,iOS带着设备序列号去请求ANPS而获得deviceToken。然后App把deviceToken发送给我们App的服务器。因为若服务器有消息给我们推送时,它会把要发送的消息和deviceToken按照一定的格式一并打包发送给ANPS服务器。

  消息推送(蓝色部分):原本App的服务器和客户端是直接进行数据交互的,但iOS推送消息时必须经由APNS服务器。我们App先把要发送的消息和目标设备deviceToken按照一定的格式发送给APNS,APNS再推送给我们设备上的App客户端。

  

关于服务器具体是如何打包数据的。以及App在手机上被卸载后,APNS是如何处理的,还会向它发送推送消息吗?

这篇博客总结的很好:点击进入

当APP被卸载后,APP服务器和APNS还会向APP发送消息吗?答案是否定的。因为APNS有反馈机制(feedback service)。当APNS服务器把消息推送给我们的设备,但设备无法找到APP发送给它时,就会给APNS服务器返回一条反馈信息,记录该设备已卸载APP,无法收到推送消息。那以后就不会再给那台设备推送消息了。

代码实现:

在AppDelegate.m中

1. 首先给App注册远程推送:

iOS8:

先设置能接收的推送类型,根据类型生成settings,注册settings,注册远程推送。重写注册成功和失败的代理方法  

iOS7:

先设置推送类型,根据类型注册远程推送。重写代理方法。

2. 获取到deviceToken的回调方法,以及推送消息接收成功后的回调方法

 

需要的几个证书:

  参考:博客 《iOS远程推送需要的几个证书》

iOS的推送机制APNs:本地推送&远程推送的更多相关文章

  1. 适配 iOS 8 时遇到的问题两则:远程推送和 Unwind Segue

    原文:http://imtx.me/archives/1910.html 昨天我在微博上吐槽:iOS 8 / Xcode 6 真是史上对开发人员最糟糕的版本号了.收到非常多朋友表达同感. 之所以这么说 ...

  2. IOS学习笔记—苹果推送机制APNs

    转自:唐韧_Ryan http://blog.csdn.net/ryantang03/article/details/8482259 推送是解决轮询所造成的流量消耗和 电量消耗的一个比较好的解决方案, ...

  3. iOS 远程推送通知

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

  4. IOS 远程推送通知(UIRemoteNotification)

    ●  什么是远程推送通知 ●  顾名思义,就是从远程服务器推送给客户端的通知(需要联网) ●  远程推送服务,又称为APNs(Apple Push Notification Services) ●   ...

  5. iOS-----推送机制(上)

    推 送 机 制 使用NSNotificationCenter通信 NSNotificationCenter实现了观察者模式,允许应用的不同对象之间以松耦合的方式进行通信. NSNotification ...

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

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

  7. (转)iOS消息推送机制的实现

    原:http://www.cnblogs.com/qq78292959/archive/2012/07/16/2593651.html iOS消息推送机制的实现 iOS消息推送的工作机制可以简单的用下 ...

  8. 81、iOS本地推送与远程推送详解

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

  9. ios消息推送机制原理与实现

    本文转载至 http://hi.baidu.com/yang_qi168/item/480304c542fd246489ad9e91 Push的原理: Push 的工作机制可以简单的概括为下图 图中, ...

随机推荐

  1. Flash Recovery Area 的备份

    Flash Recovery Area 的备份 备份命令是Flash recovery Area,该命令是Oracle 10g以后才有的.10g引进了flash recovery area,同时在rm ...

  2. 【递推+矩阵快速幂】【HDU2604】【Queuing】

    Queuing Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total S ...

  3. Backup Exec Inventory 与Catalog的含义(转载)

    编录:即catalog,就是让磁带机读取磁带之前所备份过的内容的目录列表,可以让你知道之前做过什么备份,以及备份时间等详细信息. 列清单:inventory,跟编录是不同,inventory是查询磁带 ...

  4. oracle中的B-TREE索引

    在字段值情况不同的条件下测试B-TREE索引效率 清空共享池和数据缓冲区alter system flush shared_pool;alter system flush buffer_cache; ...

  5. 利用SQL语句产生分组序号

    partition  by关键字是分析性函数的一部分,它和聚合函数不同的地方在于它能返回一个分组中的多条记录,而聚合函数一般只有一条反映统计值的记录,partition  by用于给结果集分组,如果没 ...

  6. 自给自足:动手打造html5俄罗斯方块

    时间:凌晨2:36 历时:两晚+半个下午 代码:约300行 这两天发烧,头痛脑壳昏的,没想到竟然还能有动力去做小游戏,其实这不是我第一次想要弄个俄罗斯方块,前几个星期的时候就尝试着去弄一个,然后被凌乱 ...

  7. SQL Server IO系统问题解决

    方法 1. 查询是不是真的要返回这么多的数据. 方法 2. 查询是不是系统的内存不足. 方法 3. 检查查询要访问的数据是不是不常用.如果这个数据不常用,它没有在内存中也就不奇怪了. 方法 4. 是不 ...

  8. perl 正则命名捕获

    #!/usr/bin/perl -w =pod 命名捕获--给匹配上的内容加上标签 捕获到的内容都会保存在%+散列中,这个散列的key为对应的标签: 方便之处就是利于程序扩展和阅读,不用繁琐的一个一个 ...

  9. 迎接 Windows Azure 和 DNN 挑战,几分钟内快速构建网站!

    编辑人员注释:本文章由高级商务策划师兼开发平台推广者 Neeti Gupta 撰写. 曾几何时,构建一个简单的网站需要耗费好几个月的时间.在过去,.NET 开发人员和设计社区的一些成员使用 DNN(以 ...

  10. Linux下利用fork()创建子进程并使父进程等待子进程结束

    int status; pid_t t = fork(); if(t){     waitpid(t, &status, 0); }else{     system("vi temp ...