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推送服务细节回顾的更多相关文章

  1. ios推送服务,php服务端

    本文转载至http://my.oschina.net/AStar/blog/176531   生成证书 证书生成参考:https://parse.com/tutorials/ios-push-noti ...

  2. 移动互联网实战--Apple的APNS桩推送服务的实现(2)

    前记: 相信大家在搞IOS推送服务的开发时, 会直接使用javapns api来简单实现, 调试也直连Apple的APNS服务(产品/测试版)来实现. 很少有人会写个APNS的桩服务, 事实也是如此. ...

  3. 移动互联网实战--Apple的APNS桩推送服务的实现(1)

    前记: 相信大家在搞IOS推送服务的开发时, 会直接使用javapns api来简单实现, 调试也直连Apple的APNS服务(产品/测试版)来实现. 很少有人会写个APNS的桩服务, 事实也是如此. ...

  4. MQTT协议及推送服务(二)

    MQTT简介 MQTT全称叫做Message Queuing Telemetry Transport,意为消息队列遥测传输,是IBM开发的一个即时通讯协议.由于其维护一个长连接以轻量级低消耗著称,所以 ...

  5. Android推送服务——百度云推送

    一.推送服务简介 消息推送,顾名思义,是由一方主动发起,而另一方与发起方以某一种方式建立连接并接收消息.在Android开发中,这里的发起方我们把它叫做推送服务器(Push Server),接收方叫做 ...

  6. IOS 推送消息 php做推送服务端

    IOS推送消息是许多IOS应用都具备的功能,最近也在研究这个功能,参考了很多资料终于搞定了,下面就把步骤拿出来分享下: iOS消息推送的工作机制可以简单的用下图来概括: Provider是指某个iPh ...

  7. 转载:iOS 推送的服务端实现

    参考网址1: iOS消息推送机制的实现 http://www.cnblogs.com/qq78292959/archive/2012/07/16/2593651.html 参考网址2: iOS 推送的 ...

  8. 基于APNs最新HTTP/2接口实现iOS的高性能消息推送(服务端篇)

    1.前言 本文要分享的消息推送指的是当iOS端APP被关闭或者处于后台时,还能收到消息/信息/指令的能力. 这种在APP处于后台或关闭情况下的消息推送能力,通常在以下场景下非常有用: 1)IM即时通讯 ...

  9. .net平台借助第三方推送服务在推送Android,IOS消息(极光推送_V3版本)最新

    最近刚从极光推送官网上看到V2版本要停用,不得不有重新写V3版本的.这里用到了 HTTP Basic Authentication http://www.cnblogs.com/pingming/p/ ...

随机推荐

  1. EasyUI基础入门之Resiable(可缩放)

    easyui的base插件学习已经进行到Resizable(可缩放)了.照旧看看easyui官网的API. Resiable 正如其字面意思一样(可伸缩),resiable主要是将一些html元素扩展 ...

  2. 兼容安卓的javaproject1.0

    <pre class="java" name="code"> //兼容安卓的系统package cn.com.likeshow; import ja ...

  3. AJAX及其跨域的主要解决方法

    AJAX = Asynchronous JavaScript andXML(异步的 JavaScript 和 XML).通过在后台与服务器进行少量数据交换,使网页实现异步更新.要明白异步交互可以通过同 ...

  4. 经常使用git命令集

    //创建本地仓库 mkdir git_root;cd git_root;git init // //查看 git status . git log git log ./kernel/driver/ g ...

  5. 性能优化(一个)Hibernate 使用缓存(一个、两、查询)提高系统性能

    在hibernate有三种类型的高速缓存,我们使用最频繁.分别缓存.缓存和查询缓存.下面我们使用这三个缓存中的项目和分析的优点和缺点. 缓存它的作用在于提高性能系统性能,介于应用系统与数据库之间而存在 ...

  6. 网站静态化处理—web前端优化—中(12)

    网站静态化处理—web前端优化—中(12) Web前端很多优化原则都是从如何提升网络通讯效率的角度提出的,但是这些原则使用的时候还是有很多陷阱在里面,如果我们不能深入理解这些优化原则背后所隐藏的技术原 ...

  7. 一个大浪Java罢工(一个)安装JDK和环境变量配置

    一个.基础知识 (一)什么是Java? Java是一种能够撰写跨平台应用软件的面向对象的程序设计语言,是由Sun Microsystems公司于1995年5月推出的Java程序设计语言和Java平台( ...

  8. Pki原则

    核心提示: 公开密钥和公开密钥证明书,产生的私钥client要么server证书.加密的公共密钥才能解密私钥文件只.私钥只能解密公开的加密文件.公众认为,它是开放的.所有的人都能够得到它.私人还表明, ...

  9. CSS3可按进度变色的进度条

    原文:CSS3可按进度变色的进度条 今天是周末,看到一款利用CSS3实现的进度条应用,觉得非常棒,就将它分享给大家,并且将这款CSS3进度条的实现过程大致整理了一下,实现的关键是根据当前的进度需要能改 ...

  10. How to:Installshield判断操作系统是否为64位,并且为操作注册表进行设置

    原文:How to:Installshield判断操作系统是否为64位,并且为操作注册表进行设置 IS脚本操作注册表在64位平台下必须有特殊的设置 if (SYSINFO.bIsWow64) then ...