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. HDU 2647 Reward(图论-拓扑排序)

    Reward Problem Description Dandelion's uncle is a boss of a factory. As the spring festival is comin ...

  2. [Shell]输入參数

    获取shell脚本的输入參数,而且推断得到的參数. #!/bin/bash #title: testPT.sh #atuhor: orangleliu #date: 2014-08-08 #desc: ...

  3. NET使用了UpdatePanel后如何弹出对话框!

    原文:NET使用了UpdatePanel后如何弹出对话框! 在ajax中的UpdatePanel弹出对话窗,可以使用: ScriptManager.RegisterStartupScript(Upda ...

  4. python_基础学习_01_按行读取文件的最优方法

    python 按行读取文件 ,网上搜集有N种方法,效率有区别,先mark最优答案,下次补充测试数据 with open('filename') as file: for line in file: d ...

  5. 聊聊单元測试(一)——EasyMock

    一.单元測试是保证软件质量的重要方法. 单元測试是对系统中某个模块功能的验证,但我们总会遇到这样那样的问题,导致測试代码非常难编写.最直接的一个原因便是强耦合关系,被測试者依赖一些不easy构造,比較 ...

  6. c# WebBrowser开发参考资料

    原文:c# WebBrowser开发参考资料 c# WebBrowser开发参考资料,所有资料的采集均来自网上 话说有了WebBrowser类,终于不用自己手动封装SHDocVw的AxWebBrows ...

  7. python解析命令行

    可以解析这样的命令 ./cron_ctrl jobname1 --stop ;./cron_ctrl jobname1 --start;./cron_ctrl jobname1 --list #!/u ...

  8. 关于MariaDB和Mysql

    最近安装数据库的时候发现执行yum install mysql 命令时安装成了mariadb的数据库,它其实也是mysql的一个分支,完全兼容mysql 安装数据库: yum install mysq ...

  9. 发现新大陆:一个最简单的破解SSL加密网络数据包的方法

    1. 简介 相信能访问到这篇文章的同行基本上都会用过流行的网络抓包工具WireShark,用它来抓取相应的网络数据包来进行问题分析或者其他你懂的之类的事情. 一般来说,我们用WireShark来抓取包 ...

  10. CSS3 选择器读解

    文章资料来自于W3Cfuns CSS3.0 四个基本的结构性伪类选择器:root 此选择器将绑定到页面的根元素中,所谓根元素,是指文档树中最顶层的元素,也就是<html>部 分. < ...