本地推送:

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

远程推送: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. QImage 与 cv::Mat 之间的相互转换

    近期做图像处理方面的项目比較多,非常多算法自己从头写的话太浪费时间,并且自己写的也不一定完好,早就听说OpenCV在图像处理算法方面功能非常强大,一直没时间学习,这次正好项目用到了.暂时抱佛脚学习些O ...

  2. mobilebone.js 移动web APP单页切换骨架

    轻便体积小 原生无依赖 插件可扩展 设计无限制 动效可定制 动静两相宜 能进亦能退 桌面也兼修 一句话功能简介跟传统网页浏览的差别仅仅在于无刷新! 例如,我们浏览首页,首页上有个如下HTML链接: & ...

  3. [翻译]理解 ASP.NET 5

    **原文:http://docs.asp.net/en/latest/conceptual-overview/understanding-aspnet5-apps.html** 英文捉急,花了挺多时间 ...

  4. 标准C++的vector使用

    原文:http://blog.csdn.net/pandy1110/article/details/5963908 C++内置的数组支持容器的机制,但是它不支持容器抽象的语义.要解决此问题我们自己实现 ...

  5. asp.net mvc 生成条形码

    using System; using System.Collections; using System.Collections.Generic; using System.Drawing; usin ...

  6. c#中的数据类型简介

    一.C#中的变量和常量 C#中用于定义常量的方式有两种一个使用const关键字,一个是用readonly关键字.使用const定义的常量叫静态常量(compile-time constant),用re ...

  7. 【C#】开发可以可视化操作的windows服务

    使用C#开发自定义windows服务是一件十分简单的事.那么什么时候,我们需要自己开发windows服务呢,就是当我们需要计算机定期或者一直执行我们开发的某些程序的时候.这里我以一个WCF的监听服务为 ...

  8. C#.net 摄像头驱动程序,用avicap32.dll

    装了摄像头后一般会有 avicap32.dll文件,没有一样可以用这些代码. 不需要在解决方案里面引用这个.dll文件. 下面有二种写法的例子: 例一: using System;using Syst ...

  9. Scala基础入门-4

    Scala学习——类 简单类和无参方法 class Counter { private var value = 0 // 必须初始化字段 def increment() { value += 1 } ...

  10. 容易上手-类似ERP系统 简单特效

    今天大概简单写一个效果, 这个效果 很容易 上手的: html: <style type="text/css">.menu_list ul{display:none;} ...