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. C# Windows服务的创建、安装、调试

    一.查看已有的Windows服务 选择菜单"开始"-〉"控制面板"-〉"管理工具"-〉"服务"来查看现有系统中的服务 二 ...

  2. C#/.NET code

    Some practices to write better C#/.NET code(译) C#(.NET)中有关编码的一些建议,原文地址:http://www.codeproject.com/Ar ...

  3. javascript中字符串常用方法总结

    字符串是javascript编程中不可或缺的元素,掌握字符串常用的方法也是我们学习过程中的必经之路,下面我们总结一些最常用的的字符串方法. string.charAt(postion) charAt方 ...

  4. 【转】Appium根据xpath获取控件实例随笔

    原文地址:http://blog.csdn.net/zhubaitian/article/details/39754233 如文章<Appium基于安卓的各种FindElement的控件定位方法 ...

  5. ffmpeg参数具体解释

    a) 通用选项 -L license -h 帮助 -fromats 显示可用的格式,编解码的.协议的... -f fmt 强迫採用格式fmt,如image2.gif -i filename 输入文件 ...

  6. C#中对值类型和引用类型的一点认识

    区别值类型和引用类型的重要一点就是值类型赋值的时候是给出一块内存空间,空间里放下要赋给值类型的值.而引用类型是开辟一块内存空间,空间里放下的是要赋给引用类型值的指向地址. 就像一个是复制了银行卡里的现 ...

  7. C# 获取磁盘容量

    原文:C# 获取磁盘容量 /// 获取指定驱动器的空间总大小(单位为B) /// </summary> /// <param name="str_HardDiskName& ...

  8. Android利用CountDownTimer类实现倒计时功能

    public class MainActivity extends Activity { private MyCount mc; private TextView tv; @Override publ ...

  9. WPF应用程序支持多国语言解决方案

    原文:WPF应用程序支持多国语言解决方案 促使程序赢得更多客户的最好.最经济的方法是使之支持多国语言,而不是将潜在的客户群限制为全球近70亿人口中的一小部分.本文介绍四种实现WPF应用程序支持多国语言 ...

  10. FlexBuilder远程调试WEB应用

    Flex使用的开发工具FlexBuiler 3,web server使用apache. 1 第一次安装IE相应flashplayer的debug版本号,下载Flash player 11.8安装,下载 ...