本文转载至 http://blog.csdn.net/jinkaiouyang/article/details/30029441
 

 

苹果keynote展示push通知的一些优化,特别的允许用户能够直接在push上进行交互,这么牛逼的功能,当然第一时间研究。

下面看看具体的产品细节和技术实现:

 

产品细节:

以下都是使用本地push测试的:(离线push效果一样)

1、状态栏、锁屏状态下和通知中心中的效果如下:(这里最多只能设置两个按键)

    

2、通知展示设置为Alert模式时,点击Options,会弹出操作选项如下:( 除去launch和close,这里最多能够设置四个选项)

Apple只提供了两种按钮点击后的响应模式:

1、    点击后应用在后台被唤醒  像赞这种轻操作则可以使用这种模式

2、    点击后应用被唤醒到前台  评论回复这些需要用户进一步操作的,适合这种情况。

 

在WWDC keynote我们看到的短信push演示视频中,收到短信push后能直接播放语音,且能够在当前屏幕直接录音回复的高大上操作,Apple还是木有开放给普通应用使用。(目前在API文档中,只提供了上述的两种操作模式)

技术实现细节:

一、注册User Notification

1、注册API改变

原来注册离线push的API

- (void)registerForRemoteNotificationTypes:(UIRemoteNotificationType)types

已经废弃。

转为使用:

- (void)registerForRemoteNotificationsNS_AVAILABLE_IOS(8_0);

2、增加注册UserNotification (用户可操作的push)的API,用于注册PUSH中展示的按钮和按钮响应事件。

3、增加注册UserNotification成功的回调。原来注册离线成功和失败的回调没有改变

二、设置push中的操作按钮信息

1、注册单个按钮的title、identifier和按钮模式等信息

按钮的activationMode有以下两种模式:

UIUserNotificationActivationModeForeground:点击按钮后,会呼起APP

UIUserNotificationActivationModeBackground:点击按钮后,APP在后台运行

2、多个按钮组合成一个Category。用于在一条push中展示多个操作按钮。Category也有identifier,可以注册多个Category,不同的push类型可以使用不同的Category。实现不同push类型中展示不同操作按钮。

每种Category的按钮有两种展示情况:

一个是默认模式(对于Alert模式时,弹出的操作选项,最多四个按钮)

一个是最少展示模式(对应状态栏、锁屏状态下和通知中心中展示的按钮,最多两个按钮)。

3、注册UserNotification时,设置NotificationType和Categories

NotificationType 包括应用图标上的数字、push声音、和push弹框三种

4、后台触发离线push字段需增加字段和离线包大小修改

离线push数据包带上特定Category字段(字段内容需要前后台一起定义,必须要保持一致),手机端收到时,就能展示上述代码对应Category设置的按钮,和响应按钮事件。

重大修改: 离线push数据包之前能带的数据最多为256字节,现在APPLE将该数值放大到2KB。 这个应该是只针对IOS8的。

5、按钮点击事件回调

用户点击push上的按钮后,APP就能收到如下回调事件,在该回调里响应按钮事件。原来收到push的点击回调事件没有改变。

三、新增Location Notification

当用户进入或者离开某个在应用中注册的区域时,应用能收到通知。

  

IOS8 通知中心(Notification Center)新特性的更多相关文章

  1. 【Azure 环境】Azure通知中心(Notification Hub)使用百度推送平台解说

    问题描述 在通知中心的页面中显示支持BaiDu,介绍一下支持的是百度(Baidu)的什么吗?Azure的这个功能在国内使用的时候是否可以保证国内安卓手机的信息送达率? 问题解答 通知中心的页面中的Ba ...

  2. iOS 设计模式-NSNotificationCenter 通知中心

    通知介绍 每一个应用程序都有一个通知中心(NSNotificationCenter)实例,专门负责协助不同对象之间的消息通信 任何一个对象都可以向通知中心发布通知(NSNotification),描述 ...

  3. 了解与建设有中国特色的Android M&N(Android6.0和7.0新特性分析)

    http://geek.csdn.NET/news/detail/110434 Android N已经发布有段时间,甚至马上都要发布android 7.1,相信不少玩机爱好者已经刷入最新的Androi ...

  4. NSNotificationCenter 通知中心传值

    1.NSNotification 这个类可以理解为一个消息对象,其中有三个成员变量. 这个成员变量是这个消息对象的唯一标识,用于辨别消息对象. @property (readonly, copy) N ...

  5. 重新想象 Windows 8.1 Store Apps (85) - 警报通知(闹钟), Tile 的新特性

    [源码下载] 重新想象 Windows 8.1 Store Apps (85) - 警报通知(闹钟), Tile 的新特性 作者:webabcd 介绍重新想象 Windows 8.1 Store Ap ...

  6. ios8新特性widget开发-b

    os8发布已经有一段时间了,伴随着ios8同时也出现了许多新的特性,ios系统将会越来越开放,这是好事.其中一个新特性就是在下拉通知栏里加入了个性的widget,开发者可以自己定义widget的样式内 ...

  7. iOS8新特性(1)——UIAlertController

    一.iOS8介绍 iOS8 新特性,主要是UI上进行了统一 1.UIAlertController 2.UIPresentaionController:管理所有通过modal出来的控制器(看笔记) 3 ...

  8. 【Html5】Html5新特性Notification实现桌面消息推送(2016-05-25)

    序:最近工作使用WorkTile,发现使用Chrome浏览器的时候如果有任务下发给我则会在桌面右下角提示(当前浏览器为最小化模式).感觉这个东西蛮有意思的,感觉可以给用户更好的体验,于是乎就查询了一下 ...

  9. iOS8 针对开发者所拥有的新特性汇总如下

    iOS8 针对开发者所拥有的新特性汇总如下 1.支持第三方键盘 2.自带网页翻译功能(即在线翻译) 3.指纹识别功能开放:第三方软件可以调用 4.Safari浏览器可直接添加新的插件. 5.可以把一个 ...

随机推荐

  1. DispatcherServlet与ContextLoaderListener的对比

    1. 从DispatcherServlet和ContextLoaderListener的初始化过程可以看出,二者分别会生成一个WebApplicationContext,且以不同的attrName注册 ...

  2. Debian9安装MariaDB

    一:导入密钥并添加了存储库 sudo apt-get install software-properties-common dirmngr sudo apt-key adv --recv-keys - ...

  3. PyTorch学习笔记之CBOW模型实践

    import torch from torch import nn, optim from torch.autograd import Variable import torch.nn.functio ...

  4. Java定义接口变量为接收类型有什么好处(面向接口编程)

    个人理解:定义接口变量为接收类型属于面向接口的编程,通过接口的抽象能减少类之间的耦合,增加可复用性. 面向接口编程: 一种规范约束 制定者(或者叫协调者),实现者(或者叫生产者),调用者(或者叫消费者 ...

  5. windows XP 下的DTRACE 跟踪 学习

    https://github.com/prash-wghats/DTrace-win32 1. dtrace_loader.exe -l //to load dtrace drivers 2. C:\ ...

  6. 【springcloud】使用@FEIGNCLIENT时,报JAVA.LANG.NOCLASSDEFFOUNDERROR: FEIGN/FEIGN$BUILDER错

    引用地址:http://www.cnblogs.com/ellacan/p/8822374.html 错误信息: Caused by: java.lang.ClassNotFoundException ...

  7. iOS -- SpriteKit框架之SKPhysicsBody的移动和连接

      SKPhysicsBody的受力移动 SKPhysicsBody对象不同于SKSpriteNode对象.SKSpriteNode对象可以通过添加动作来进行移动,SKPhysicsBody对象却没有 ...

  8. Android基础新手教程——3.7 AnsyncTask异步任务

    Android基础新手教程--3.7 AnsyncTask异步任务 标签(空格分隔): Android基础新手教程 本节引言: 本节给大家带来的是Android给我们提供的一个轻量级的用于处理异步任务 ...

  9. 分布式版本号控制系统Git(二):github

    前言 但凡是喜欢研究技术,或者听大牛们说起过的,都应该至少是听过github这个东西.详细就不介绍了.不了解的能够去了解了解,最基本的功能当然是代码托管啦,上面有各种各样的大牛写的项目. 另外这一章不 ...

  10. Java中char转为16进制

    Java中char转为16进制 char a = '0'; String hexStr = Integer.toHexString(a); System.out.println(hexStr);