天天看点

iOS10通知框架UserNotification理解与应用(一)

一、引言

       关于通知,无论与远程Push还是本地通知,以往的iOS系统暴漏给开发者的接口都是十分有限的,开发者只能对标题和内容进行简单的定义,至于UI展示和用户交互行为相关的部分,开发者开发起来都十分困难。至于本地通知,iOS10之前采用的是UILocationNotification类,远程通知有苹果服务器进行转发,本地通知和远程通知其回调的处理都是通过AppDelegate中的几个回调方法来完成。iOS10系统中,通知功能的增强是一大优化之处,iOS10中将通知功能整合成了一个框架UserNotification,其结构十分类似于iOS8中的UIWebView向WebKit框架整合的思路。并且UserNotification相比之前的通知功能更加强大,主要表现在如下几点:

1.通知处理代码可以从AppDelegate中剥离。

2.通知的注册,设置,处理更加结构化,更易于模块化开发。

3.UserNotification支持自定义通知音效和启动图。

4.UserNotification支持向通知内容中添加媒体附件,例如音频,视频。

5.UserNotification支持开发者定义多套通知模板。

6.UserNotification支持完全自定义的通知界面。

7.UserNotification支持自定义通知中的用户交互按钮。

8.通知的触发更加容易管理。

从上面列举的几点就可以看出,iOS10中的UsreNotification真的是一个大的改进,温故而知新,关于iOS之前版本本地通知和远程通知的相关内容请查看如下博客:

本地推送:

http://my.oschina.net/u/2340880/blog/405491

远程推送:

http://my.oschina.net/u/2340880/blog/413584

二、UserNotification概览

       学习一个新的框架或知识模块时,宏观上了解其体系,大体上掌握其结构是十分必要的,这更有利于我们对这个框架或模块的整体把握与理解。UserNotification框架中拆分定义了许多类、枚举和结构体,其中还定义了许多常量,类与类之间虽然关系复杂,但脉络十分清晰,把握住主线,层层分析,边很容易理解和应用UserNotification框架。

       下图中列举了UserNotification框架中所有核心的类:

iOS10通知框架UserNotification理解与应用(一)

如图中关系所示,UserNotification框架中的核心类列举如下:

UNNotificationCenter:通知管理中心,单例,通知的注册,接收通知后的回调处理等,是UserNotification框架的核心。

UNNotification:通知对象,其中封装了通知请求。

UNNotificationSettings:通知相关设置。

UNNotificationCategory:通知模板。

UNNotificationAction:用于定义通知模板中的用户交互行为。

UNNotificationRequest:注册通知请求,其中定义了通知的内容和触发方式。

UNNotificationResponse:接收到通知后的回执。

UNNotificationContent:通知的具体内容。

UNNotificationTrigger:通知的触发器,由其子类具体定义。

UNNotificationAttachment:通知附件类,为通知内容添加媒体附件。

UNNotificationSound:定义通知音效。

UNPushNotificationTrigger:远程通知的触发器,UNNotificationTrigger子类。

UNTimeInervalNotificationTrigger:计时通知的触发器,UNNotificationTrigger子类。

UNCalendarNotificationTrigger:周期通知的触发器,UNNotificationTrigger子类。

UNLocationNotificationTrigger:地域通知的触发器,UNNotificationTrigger子类。

UNNotificationCenterDelegate:协议,其中方法用于监听通知状态。

继续阅读