iOS10通知框架UserNotification理解与应用
一、引言 关于通知,无论与远程Push还是本地通知,以往的iOS系统暴漏给开发者的接口都是十分有限的,开发者只能对标题和内容进行简单的定义,至于UI展示和用户交互行为相关的部分,开发者开发起来都十分困难。至于本地通知,iOS10之前采用的是UILocationNotification类,远程通知有苹果服务器进行转发,本地通知和远程通知其回调的处理都是通过AppDelegate中的几个回调方法来完成。iOS10系统中,通知功能的增强是一大优化之处,iOS10中将通知功能整合成了一个框架UserNotification,其结构十分类似于iOS8中的UIWebView向WebKit框 iOS10中的UserNotification框架是苹果为提升通知功能体验而推出的一个强大工具,它极大地扩展了开发者对于通知的控制能力,让通知的定制化、交互性以及管理变得更加灵活。在这个框架下,我们可以实现从AppDelegate中分离通知处理代码,创建结构化的通知注册、设置和处理流程,同时还能自定义通知音效、启动图像,甚至添加媒体附件,如音频和视频。此外,UserNotification还支持定义多套通知模板,允许完全自定义通知界面,并提供了自定义用户交互按钮的功能。 UserNotification框架主要包括以下几个核心类: 1. UNNotificationCenter:作为通知的管理中心,它是一个单例,负责通知的注册、接收通知后的回调处理等。通过这个中心,开发者可以管理所有与通知相关的行为。 2. UNNotification:表示一个通知对象,包含了通知请求的信息,是实际被显示给用户的通知。 3. UNNotificationSettings:存储了用户对特定应用程序的通知偏好设置,如声音、提醒方式等。 4. UNNotificationCategory:定义了一组具有相同行为的通知模板,用于创建和展示通知。 5. UNNotificationAction:用于定义通知模板中的用户交互行为,比如用户点击通知后执行的操作。 6. UNNotificationRequest:是注册通知的核心,它包含了一个通知的请求内容(UNNotificationContent)和触发器(UNNotificationTrigger)。 7. UNNotificationResponse:当用户对通知做出响应时,系统会生成一个UNNotificationResponse对象,供开发者获取用户的反馈信息。 8. UNNotificationContent:包含了通知的所有内容,如标题、副标题、身体文本,以及自定义的附件和操作。 9. UNNotificationTrigger:抽象基类,表示触发通知的条件,包括UNPushNotificationTrigger(远程通知触发器)、UNTimeIntervalNotificationTrigger(定时触发器)、UNCalendarNotificationTrigger(日历触发器)和UNLocationNotificationTrigger(地理位置触发器)。 10. UNPushNotificationTrigger:用于处理远程推送通知的触发。 11. UNTimeIntervalNotificationTrigger:基于时间间隔触发通知,如每小时或每天触发一次。 12. UNCalendarNotificationTrigger:根据日期和时间触发通知,可以设置为每年、每月、每周、每天或精确到小时、分钟。 13. UNLocationNotificationTrigger:基于设备地理位置的变化触发通知,如进入或离开特定区域。 14. UNNotificationAttachment:允许添加多媒体附件到通知中,如图片、音频和视频。 15. UNNotificationSound:定义通知的声音效果,可以是默认的系统声音或者自定义的声音文件。 16. UNNotificationCenterDelegate:协议,提供了一系列方法用于监听通知的状态变化,如用户是否已授权通知、用户如何响应通知等。 在实际应用中,开发者首先需要通过UNNotificationCenter请求用户授权,然后创建UNNotificationRequest对象,包括内容和触发器,再将其添加到通知中心。在用户触发通知后,可以通过实现UNNotificationCenterDelegate协议的方法来处理用户响应。 例如,以下是一个简单的本地通知创建和权限请求的示例: ```swift // 请求用户授权 let center = UNUserNotificationCenter.current() center.requestAuthorization(options: [.alert, .sound, .badge]) { (granted, error) in if granted { print("用户已授权通知") } else { print("用户未授权通知") } } // 创建通知内容 let content = UNMutableNotificationContent() content.title = "测试通知" content.body = "这是通知的正文" content.sound = UNNotificationSound.default // 创建触发器,例如定时触发器 let trigger = UNTimeIntervalNotificationTrigger(timeInterval: 5, repeats: false) // 创建通知请求 let request = UNNotificationRequest(identifier: "testRequest", content: content, trigger: trigger) // 添加到通知中心 center.add(request) { (error) in if let error = error { print("添加通知请求失败: \(error.localizedDescription)") } else { print("通知请求已成功添加") } } ``` 以上代码中,我们首先请求用户授权显示通知,然后创建一个内容为“测试通知”的本地通知,5秒后触发。当用户触发此通知时,系统将显示相应的提示并播放默认的提示音。通过UserNotification框架,开发者可以构建出更加丰富、个性化的通知体验,从而提升用户与应用程序的互动。
剩余12页未读,继续阅读
- 粉丝: 8
- 资源: 909
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 基于LabVIEW的CRC校验程序
- Python毕业设计-基于Python的天气预测和天气可视化项目(源码+数据库)
- Comsol光子晶体光栅非对称传输
- Mac最新版本的JasperSoft
- 在CodeBlocks搭建SDL2工程构建TFT彩屏模拟器虚拟TFT彩屏幕显示
- Python实现简单的天气数据爬取和可视化(课程设计)
- COMSOL 热流耦合拓扑优化 无量纲-双目标
- comsol光子晶体仿真,拓扑荷,偏振态 三维能带,三维Q,Q因子计算 远场偏振计算
- ECMAScript 6 入门 作者:阮一峰, 的学习源码,供大家学习使用
- 海草云智能修片,一键修图,修人像,修风景,媲美美图、PS,方便快捷
- 含齿根裂纹-轴承内圈,外圈,滚动体的超高自由度斜齿–轴承复合故障特性分析!才用残差法突出故障时域响应,采用包络谱对故障特征频率进行分析,模型难度巨大
- VB 开发access职工工资管理信息系统(系统+开题+论文+任务书
- 电解质锂离子电化学传输模型 基于Nernst-Planck方程构建电解质中锂离子传输机理模型,传递机理包括对流,迁移和扩散作用,可模拟电解质的锂离子浓度,通量和电场结果 可添加正负电极,界面电极动力
- 销售记录数据,包括订单ID、产品种类、销售额、利润、客户区域等
- Comsol三维锂离子叠片电池电化学-热全耦合 采用COMSOL锂离子电池模块耦合传热模块,仿真模拟锂离子电池在充放电过程中产生的欧姆热,极化热,反应热,以及所引起的电芯温度变化
- Comsol石墨烯二维材料 包含太赫兹德鲁得和近红外Kubo两种模型 共7个案例,包含参考文献