iOS推送服务细节回顾
iOS推送服务细节回顾
之前在做推送功能时候,就总结过一系列证书的制作,OC代码实现和服务器搭建等经验。又过了一段时间了,前前后后对推送服务做了多次的完善和优化,有iOS客户端的,还有本地服务器端的。现在就一些细节再回顾一下,也是对此前总结的补充。
一、远程消息推送的注册提示。
第一次安装需要注册远程推送服务的App,都会收到设备的征询许可提示。但是以后无论是升级还是卸载后重新安装App,都是不会收到提示的,只能进入隐私设置里面关闭或者打开。想要彻底删除接收通知的设置?那需要卸载App至少一天,iOS会自己清楚用户该App的隐私中通知设置。
二、远程消息推送内容格式。
这是容易忽略的地方。一般来说,AppDelegate中接收到远程通知的userInfo是可以根据开发者需要自由设置的,比如传递一些特殊内容,但是需要注意,iOS系统只会在意特定KV值:“aps”、“alert”、“badge”、“sound”。我在Cocoachina上看到一个朋友的提问,说是推送了“name”之类的参数,当App运行在前台时收到了,当App运行在后台时无法收到。其实就是这个道理,iOS收到了推送通知,但是无法识别特定KV值,只是他采用了将收到的消息通过本地通知方式显示在通知中心,当然只有在前台采用运行相应逻辑代码咯。
三、本地通知。
UILocalNotification提供了本地通知提醒。例如上面所述,你可以在接受到远程通知后,采用本地通知来展示。本地通知的好处在于,可以自定义一些定时定频率的提醒通知,不受网络限制;可以设置通知的名称,后续可以根据该命名来特殊处理。而远程推送通知就没有这个待遇了。
四、通知中心的细节。
在通知中心里面,我们可以看到不同App的多条推送通知。但是当想删除通知时候,只能以App为单元删除,不能逐条删除。这也要结合到第三条说到的细节。本地推送通知可以根据notification参数来cancel掉通知中心特定的通知,但是远程推送通知只有删除all或者等待用户自己删除。
而想要清除所有通知提示,可以通过设置全局UIApplication的applicationIconBadgeNumber属性来实现。改变其值为0即可;但是如果已经为0了,则需要先置为非零值,比如1,然后再置为0即可实现。有点绕….
五、ApplicationIconBadgeNumber和sound
当App在后台时候,代码一般是不会执行的,所以只有指望iOS根据特定推送KV值来行动,比如alert、badge和sound。当然这些值是可以在自己的推送服务器上设置的。不过有一点,我发现推送的sound文件不存在时候,在代码里面设置的AudioServicePlaySystemSound(1106),也就是iOS那熟悉的一个信息提示音,居然生效了,貌似预设置好了…
推送功能做了有一段时间了,已经比较了解其中各种环节和细节,关于服务器端的细节,也就是数据库搭建、配置和访问,Node.js的环境配置和脚本处理,还有推送应用程序的定制和完善。具体也没有什么可说的,待后续系统总结吧。
后记:测试发现,不管是本地通知还是远程通知,一旦注册到设备通知中心以后,在生命周期内,不会随着App删除,而自动清除。第一点中所说的“自动清除”并未得到验证,故这种说法不够准确。
iOS推送服务细节回顾的更多相关文章
- ios推送服务,php服务端
本文转载至http://my.oschina.net/AStar/blog/176531 生成证书 证书生成参考:https://parse.com/tutorials/ios-push-noti ...
- 移动互联网实战--Apple的APNS桩推送服务的实现(2)
前记: 相信大家在搞IOS推送服务的开发时, 会直接使用javapns api来简单实现, 调试也直连Apple的APNS服务(产品/测试版)来实现. 很少有人会写个APNS的桩服务, 事实也是如此. ...
- 移动互联网实战--Apple的APNS桩推送服务的实现(1)
前记: 相信大家在搞IOS推送服务的开发时, 会直接使用javapns api来简单实现, 调试也直连Apple的APNS服务(产品/测试版)来实现. 很少有人会写个APNS的桩服务, 事实也是如此. ...
- MQTT协议及推送服务(二)
MQTT简介 MQTT全称叫做Message Queuing Telemetry Transport,意为消息队列遥测传输,是IBM开发的一个即时通讯协议.由于其维护一个长连接以轻量级低消耗著称,所以 ...
- Android推送服务——百度云推送
一.推送服务简介 消息推送,顾名思义,是由一方主动发起,而另一方与发起方以某一种方式建立连接并接收消息.在Android开发中,这里的发起方我们把它叫做推送服务器(Push Server),接收方叫做 ...
- IOS 推送消息 php做推送服务端
IOS推送消息是许多IOS应用都具备的功能,最近也在研究这个功能,参考了很多资料终于搞定了,下面就把步骤拿出来分享下: iOS消息推送的工作机制可以简单的用下图来概括: Provider是指某个iPh ...
- 转载:iOS 推送的服务端实现
参考网址1: iOS消息推送机制的实现 http://www.cnblogs.com/qq78292959/archive/2012/07/16/2593651.html 参考网址2: iOS 推送的 ...
- 基于APNs最新HTTP/2接口实现iOS的高性能消息推送(服务端篇)
1.前言 本文要分享的消息推送指的是当iOS端APP被关闭或者处于后台时,还能收到消息/信息/指令的能力. 这种在APP处于后台或关闭情况下的消息推送能力,通常在以下场景下非常有用: 1)IM即时通讯 ...
- .net平台借助第三方推送服务在推送Android,IOS消息(极光推送_V3版本)最新
最近刚从极光推送官网上看到V2版本要停用,不得不有重新写V3版本的.这里用到了 HTTP Basic Authentication http://www.cnblogs.com/pingming/p/ ...
随机推荐
- Layout Renderers
Layout Renderers NLog package ${activityid} - Puts into log a System.Diagnostics trace correlation i ...
- java安全编程
java安全程序实际上是一个点稍微防御性编程意味着内,竟java作为编程语言,较C,c++,本身被认为是比较安全的,随着C,C++这样的偏底层的编程语言比,java少了显示的指针调用.少了程序上的内存 ...
- ACM算法
一.数论算法 1.求两数的最大公约数 2.求两数的最小公倍数 3.素数的求法 A.小范围内判断一个数是否为质数: B.判断longint范围内的数是否为素数(包含求50000以内的素数表): 二. ...
- C#如何设置session过期时间
1.操作系统 步骤:开始——〉管理工具——〉Internet信息服务(IIS)管理器——〉网站——〉默认网站——〉 右键“属性”——〉主目录——〉配置——〉选项——〉启用会话状态——〉会话超时(在 ...
- background-position 具体的使用说明
语法: background-position : length || length background-position : position || position 值: length : ...
- hdu 3449 (有依赖的01背包)
依赖背包 事实上,这是一种树形DP,其特点是每个父节点都需要对它的各个儿子的属性进行一次DP以求得自己的相关属性. fj打算去买一些东西,在那之前,他需要一些盒子去装他打算要买的不同的物品.每一个盒子 ...
- validateRequest="false"属性及xss攻击
validateRequest="false" 指是否要IIS验证页面提交的非法字符,比如:>,<号等,当我们需要将一定格式得html代码获得,插入数据库时候,就要 ...
- 【Swift初见】Swift词典
顾名思义.当我们仰望的时候,我们将基于索引查找我们需要找到的资源.在swift这同样适用,每个对象包括字典key和value.我们key为了找到当前这个key相应的value.与数组不同的是,字典项字 ...
- AJAX及其跨域的主要解决方法
AJAX = Asynchronous JavaScript andXML(异步的 JavaScript 和 XML).通过在后台与服务器进行少量数据交换,使网页实现异步更新.要明白异步交互可以通过同 ...
- RPC框架
RPC框架实现 - 路由控制篇 2015-04-27 22:26 by bangerlee, 499 阅读, 1 评论, 收藏, 编辑 RPC(Remote Procedure Call,远程过程调用 ...