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/ ...
随机推荐
- 霍夫曼(最优二叉树)和Java达到
一.定义 一些定义: 节点之间的路径长度:在从节点树中的一个节点也经历分公司,这构成的两个节点之间的路径分支的数目后这就是所谓的路径长度 的路径长度:从树的根节点到树中每一结点的路径长度之和. 在结点 ...
- hdu Write a simple HTML Browser
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1088 对比输出 代码: #include <stdio.h> #include <s ...
- ToDictionary() and ToList()
ToDictionary() and ToList() 前言: 有两个简单好用的LINQ扩展方法 ToDictionary() 和ToList(),你可能知道或不知道,但是它的的确确可以简化查询转化为 ...
- 开源搜索引擎Iveely 0.8.0
开源搜索引擎Iveely 0.8.0 这是一篇博客,不是,这是一篇开源人的心酸和喜悦,没有人可以理解我们的心情,一路的辛酸一路的艰辛,不过还好,在大家的支持下,总算是终见天日,谢谢那些给予我们无私帮助 ...
- 怎样将short[]数组转换成byte[]数组
byte[] byteArray = Array.ConvertAll<short, byte>(shortArray, Convert.ToByte);
- 使用ArcGIS API for Silverlight + Visifire绘制地图统计图
原文:使用ArcGIS API for Silverlight + Visifire绘制地图统计图 最近把很久之前做的统计图又拿出来重新做了一遍,感觉很多时候不复习,不记录就真的忘了,时间是最好的稀释 ...
- Android开展Exception:ActivityNotFoundException: Unable to find explicit activity class
project出现在一个以上的activity,不AndroidManifest.xml配置,在阅读的时候,你需要知道的配置activity,使用时间或忘记配置.流汗!配置activity后proje ...
- Objective-C的动态特性
最近几年中涌现了大量的Objective-C开发者.有些是从动态语言转过来的,比如Ruby或Python,有些是从强类型语言转过来的,如Java或C#,当然也有直接以Objective-C作为入门语言 ...
- 有趣Web之Json(四)---json与(Object/List/Map)相互转化
干web报名时间.通常,他们需要json转换为Object/list/map要么Object/List/map转换为json,由能够编写代码的简单包装非常多,以减轻负担. 本文将给出json的一系列的 ...
- ECLIPSE实现了界面显示所有类
按下接口名称CTRL+T实现全面实施的接口类显示 版权声明:本文博客原创文章,博客,未经同意,不得转载.