iOS开发笔记8:Remote Notification远程消息推送处理
远程消息推送处理场景有三种:分别是app还没有运行、app在前台运行以及app在后台运行,下面介绍相关流程及三种场景下处理步骤
1.流程
(1)注册通知
首先是在注册远程消息推送,需要注意的是iOS8及以后的系统中注册方法有所改变(同时证书设置以及push权限也需要开启)。这一步的目的是,允许app接收远程消息推送。
(2)绑定deviceToken
deviceToken相当于设备的一个标识,服务器根据这个标识来进行消息推送。
①当用户同意app接收远程消息推送后,手机会向APNs发起一个请求去获取deviceToken;
②APNs收到请求,根据其相应流程及算法发送对应的deviceToken给手机;
③手机再将deviceToken传递给app;
④app再将deviceToken发送到后台服务器进行保存。
后台服务器以后就是根据deviceToken发送推送消息给APNs,APNs再根据deviceToken将消息推送到对应设备,设备再唤起app,显示推送而来的消息。
(3)针对远程推送消息进行处理
远程推送消息发送过来时,点开消息常常会有一些针对性处理或流程,最常见的就是跳转页面等,这里不再展开,下面将介绍不同场景下接收到推送后的处理步骤。
2.不同场景下推送消息的流程
(1)app在前台运行时收到推送
会调用“didReceiveRemoteNotification”方法,推送的数据在userInfo里,针对处理即可。
(2)app退出到后台状态时收到推送
屏幕上会出现通知提醒,如果点开消息进入app,app运行到前台时会调用“didReceiveRemoteNotification”方法,这也就是之前为什么要区分一下applicationState的原因,因为二者都是通过这一步来处理。
(3)app处于关闭退出状态时收到推送
同样屏幕上出现通知提醒,点开消息进入app,启动时“didFinishLaunchingWithOptions”方法里的launchOptions对应UIApplicationLaunchOptionsRemoteNotificationKey部分内容不再为空,含有的即是推送内容,针对处理即可。
3.其它
(1)网络状况不佳时远程消息推送情况
如果手机不在网的时候,APNs会有一个QoS的东西把消息保存很短的时间,等手机在网时再推送过来,当然离线时间久了,消息也就收不到了,但在实际中发现貌似网络不佳的时候一般就收不到了。
如果手机离线时,服务器推送了多条消息,即时上线了收到消息,也只会收到最新的一条
(2)推送的内容格式
推送的内容都有固定格式和长度,包括title(iOS8.2后增加的)、body、sound等,如果本地没有设置对应的声音文件,sound的值为default,收到推送的时候响起的是默认的提示音,并且推送消息的长度限制为256个字节(iOS8中这一限制放大到2kb),具体参考Local and Remote Notification Programming Guide中The Notification Payload这一节。
iOS开发笔记8:Remote Notification远程消息推送处理的更多相关文章
- iOS开发——远程消息推送的实现
在我们使用App的过程中.总是会收到非常多的消息推送.今天我们就要来实现这个功能.首先消息推送分为本地消息推送和远程消息推送.而当中又以远程消息最为经常使用. 可是在推送远程消息之前.有两个前提条件. ...
- iOS远程消息推送原理
1. 什么是远程消息推送? APNs:Apple Push Notification server 苹果推送通知服务苹果的APNs允许设备和苹果的推送通知服务器保持连接,支持开发者推送消息给用户设备对 ...
- iOS 远程消息推送,原理和开发详解篇(新手推荐)
1.APNS的推送机制 首先我们看一下苹果官方给出的对ios推送机制的解释.如下图 Provider就是我们自己程序的后台服务器,APNS是Apple Push Notification Servic ...
- 分分钟搞定IOS远程消息推送
一.引言 IOS中消息的推送有两种方式,分别是本地推送和远程推送,本地推送在http://my.oschina.net/u/2340880/blog/405491这篇博客中有详细的介绍,这里主要讨论远 ...
- iOS远程消息推送自我整理版
@interface AppDelegate () <UIApplicationDelegate> @end @implementation AppDelegate - (BOOL)app ...
- iOS远程消息推送
iOS 推送基础知识 Apple 使用公共密钥数字证书对来自 iOS 应用程序的推送请求进行身份验证,所以您首先需要创建身份验证密钥,并向 Apple 注册它们.我将在下一节中花相当长的篇幅来直接介绍 ...
- iOS和Android使用MQTT协议实现消息推送和即时通讯(替代XMPP,已经有TMS MQTT)
大多数应用都会涉及到即时聊天的功能,在开源方案中有XMPP和MQTT.其中XMPP是基于XML的,并且不支持消息质量QOS, 所以本身并没有消息重传的机制,从而会导致丢消息.而MQTT是基于二进制的, ...
- iOS开发笔记10:圆点缩放动画、强制更新、远程推送加语音提醒及UIView截屏
1.使用CAReplicatorLayer制作等待动画 CALayer+CABasicAnimation可以制作很多简单的动画效果,之前的博客中介绍的“两个动画”,一个是利用一张渐变色图片+CABas ...
- 细说 iOS 消息推送
APNS的推送机制 与Android上我们自己实现的推送服务不一样,Apple对设备的控制很严格.消息推送的流程必需要经过APNs: 这里 Provider 是指某个应用的Developer,当然假设 ...
随机推荐
- EF相关知识
一.EF控制台命令: 1.enable-migrations -EnableAutomaticMigration -Force:使用自动迁移 2.add-migration "Country ...
- 简单的session共享的封装
目的 session存储在缓存服务器上(各种缓存服务器上均可,本文以memcached为例),但对开发者来说,他不用关注,只需要调用request.getSession()方法即可获取到session ...
- thread_ThreadPoolExecutor
目录 1.基础知识 2.简单应用 3.异常机制 4.丰富的扩展 一.基础知识 构造函数. public ThreadPoolExecutor( int corePoolSize, 指的是保留的线程池大 ...
- Installation and Upgrading
Cumulative Feature Overview Identifies product features available to you when upgrading. This tool r ...
- 【百度SEO优化】如何让蜘蛛爬行你的网站
大家都知道,现在做网站简单,但是推广就比较困难了,可能一些商家引入投资,直接烧钱做广告来推广,但是对于一些小站长,是没有那么多资金的.因此我们就要懂得一些SEO优化的知识了,简单介绍一下: 怎么让百度 ...
- 【AngularJS学习笔记】00 序
AngularJS通过新的属性与表达式来扩展HTML,有一种很形象的叫法,定义它为声明式语言. 为克服HTML在构建应用上的不足而设计! 这是它的目标. 它的官网进不去,应该是被墙了,这是goegle ...
- DotNetBar的初步使用
以前有用过SkinSharp和IrisSkin2皮肤控件来美化UI,简单易用,但不方便自定义.而DotNetBar功能很强大,不仅有Windows2007风格,更有Ribbon风格的界面效果.其效果演 ...
- Run python as a daemon process
I am using `&`: why isn't the process running in the background? No problem. We won't show y ...
- USE “schema_name” in PostgreSQL
http://timmurphy.org/tag/mysql/ http://timmurphy.org/2009/11/17/use-schema_name-in-postgresql/ ===== ...
- mysql zip install
1.Question Description: 1.1 version: mysql-5.7.11-64 1.2 form: zip file 1.3 >mysqld --install (su ...