热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Swift本地推送通知UILocalNotification

Notification是智能手机应用开发中常用的信息传递机制,它不用消耗更多资源去不停的检查信息状态,可以非常好的节省资源。在iOS中分为两种通知&#

Notification是智能手机应用开发中常用的信息传递机制,它不用消耗更多资源去不停的检查信息状态,可以非常好的节省资源。

在iOS中分为两种通知:本地、远程。本地的UILocalNotification由全局的NotificationManager统一管理,我们只需要将本地通知对象添加到系统的Notification队列中就可以了,系统会在指定的时间激发本地通知。

本地推送通知:UILocalNotification

  1. 如果要使用推送通知,必须先在苹果的推送通知服务里注册你要使用哪几种类型的通知,就比如下面的一段代码就表示同时注册了提醒、标记和声音两种类型的通知(ios 8之前是不需要注册的):

// 在appDelegate中注册通知
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { if #available(iOS 8.0, *) { let uns = UIUserNotificationSettings(forTypes: [.Alert, .Badge, .Sound], categories: nil) UIApplication.sharedApplication().registerUserNotificationSettings(uns) } }


2.创建并添加本地通知

class LocalNotificationUtils: NSObject {/** 添加创建并添加本地通知 */class func addNotification() {// 初始化一个通知let localNoti = UILocalNotification()// 通知的触发时间,例如即刻起15分钟后let fireDate = NSDate().dateByAddingTimeInterval(-15*60) localNoti.fireDate = fireDate // 设置时区 localNoti.timeZone = NSTimeZone.defaultTimeZone() // 通知上显示的主题内容 localNoti.alertBody = "通知上显示的提示内容" // 收到通知时播放的声音,默认消息声音 localNoti.soundName = UILocalNotificationDefaultSoundName //待机界面的滑动动作提示 localNoti.alertAction = "打开应用" // 应用程序图标右上角显示的消息数 localNoti.applicationIconBadgeNumber = 0 // 通知上绑定的其他信息,为键值对 localNoti.userInfo = ["id": "1", "name": "xxxx"] // 添加通知到系统队列中,系统会在指定的时间触发 UIApplication.sharedApplication().scheduleLocalNotification(localNoti) } }


3.获取所有本地通知

let locals = UIApplication.sharedApplication().scheduledLocalNotifications


4.取消一个本地推送

// 通过通知上绑定的id来取消通知,其中id也是你在userInfo中存储的信息class func deleteNotification(id: String) {if orderID.isEmpty {return}if let locals = UIApplication.sharedApplication().scheduledLocalNotifications { for localNoti in locals { if let dict = localNoti.userInfo { if dict.keys.contains("id") && dict["id"] is String && (dict["id"] as! String) == id { // 取消通知 UIApplication.sharedApplication().cancelLocalNotification(localNoti) } } } } }


5.取消所有本地通知

UIApplication.sharedApplication().cancelAllLocalNotifications()


6.点击通知后的触发事件

1.应用在正在运行(在前台或后台运行),点击通知后触发appDelegate代理方法::didReceiveLocalNotification

class AppDelegate: UIResponder, UIApplicationDelegate{ /** 接收本地通知 */ func application(application: UIApplication, didReceiveLocalNotification notification: UILocalNotification) { // 获取通知上绑定的信息 guard let dict = notification.userInfo else { return } // 后面作相应处理... } }

2.应用未运行,点击通知启动app,走appDelegate代理方法:didFinishLaunchingWithOptions

class AppDelegate: UIResponder, UIApplicationDelegate{ func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { // 省略创建window及根控制器等代码 ...... // 此处只介绍当点击通知启动应用后如何获取通知 if launchOptions != nil { if let localNotification = launchOptions!["UIApplicationLaunchOptionsLocalNotificationKey"] as? UILocalNotification { if let dict = localNotification.userInfo { // 获取通知上绑定的信息后作相应处理... } } } return true } }

参考:http://www.cnblogs.com/kenshincui/p/4168532.html#localNotification


转载于:https://www.cnblogs.com/Free-Thinker/p/7120211.html


推荐阅读
  • java.lang.Class.getDeclaredMethod()方法java.lang.Class.getDeclaredMethod()方法用法实例教程-方法返回一个Met ... [详细]
  • 云原生边缘计算之KubeEdge简介及功能特点
    本文介绍了云原生边缘计算中的KubeEdge系统,该系统是一个开源系统,用于将容器化应用程序编排功能扩展到Edge的主机。它基于Kubernetes构建,并为网络应用程序提供基础架构支持。同时,KubeEdge具有离线模式、基于Kubernetes的节点、群集、应用程序和设备管理、资源优化等特点。此外,KubeEdge还支持跨平台工作,在私有、公共和混合云中都可以运行。同时,KubeEdge还提供数据管理和数据分析管道引擎的支持。最后,本文还介绍了KubeEdge系统生成证书的方法。 ... [详细]
  • 本文介绍了如何使用PHP向系统日历中添加事件的方法,通过使用PHP技术可以实现自动添加事件的功能,从而实现全局通知系统和迅速记录工具的自动化。同时还提到了系统exchange自带的日历具有同步感的特点,以及使用web技术实现自动添加事件的优势。 ... [详细]
  • vue使用
    关键词: ... [详细]
  • Monkey《大话移动——Android与iOS应用测试指南》的预购信息发布啦!
    Monkey《大话移动——Android与iOS应用测试指南》的预购信息已经发布,可以在京东和当当网进行预购。感谢几位大牛给出的书评,并呼吁大家的支持。明天京东的链接也将发布。 ... [详细]
  • 本文介绍了数据库的存储结构及其重要性,强调了关系数据库范例中将逻辑存储与物理存储分开的必要性。通过逻辑结构和物理结构的分离,可以实现对物理存储的重新组织和数据库的迁移,而应用程序不会察觉到任何更改。文章还展示了Oracle数据库的逻辑结构和物理结构,并介绍了表空间的概念和作用。 ... [详细]
  • IhaveconfiguredanactionforaremotenotificationwhenitarrivestomyiOsapp.Iwanttwodiff ... [详细]
  • 本文主要解析了Open judge C16H问题中涉及到的Magical Balls的快速幂和逆元算法,并给出了问题的解析和解决方法。详细介绍了问题的背景和规则,并给出了相应的算法解析和实现步骤。通过本文的解析,读者可以更好地理解和解决Open judge C16H问题中的Magical Balls部分。 ... [详细]
  • 设计模式实现对象的复用——享元模式的概述和角色解析
    本文介绍了设计模式中的享元模式,该模式通过共享技术实现了大量细粒度对象的复用,从而提高系统性能。文章详细解析了享元模式的概述和角色,包括抽象享元类、具体享元类和非共享享元类。通过本文的阅读,读者可以了解享元模式的原理和应用场景,从而在实际开发中更好地利用该模式实现对象的复用。 ... [详细]
  • 通过Anaconda安装tensorflow,并安装运行spyder编译器的完整教程
    本文提供了一个完整的教程,介绍了如何通过Anaconda安装tensorflow,并安装运行spyder编译器。文章详细介绍了安装Anaconda、创建tensorflow环境、安装GPU版本tensorflow、安装和运行Spyder编译器以及安装OpenCV等步骤。该教程适用于Windows 8操作系统,并提供了相关的网址供参考。通过本教程,读者可以轻松地安装和配置tensorflow环境,以及运行spyder编译器进行开发。 ... [详细]
  • 【爬虫】关于企业信用信息公示系统加速乐最新反爬虫机制
    ( ̄▽ ̄)~又得半夜修仙了,作为一个爬虫小白,花了3天时间写好的程序,才跑了一个月目标网站就更新了,是有点悲催,还是要只有一天的时间重构。升级后网站的层次结构并没有太多变化,表面上 ... [详细]
  • imnewtotheswiftandxcodeworld,soimhavingaproblemtryingtointegrateapackagetomypro ... [详细]
  • Windows下配置PHP5.6的方法及注意事项
    本文介绍了在Windows系统下配置PHP5.6的步骤及注意事项,包括下载PHP5.6、解压并配置IIS、添加模块映射、测试等。同时提供了一些常见问题的解决方法,如下载缺失的msvcr110.dll文件等。通过本文的指导,读者可以轻松地在Windows系统下配置PHP5.6,并解决一些常见的配置问题。 ... [详细]
  • 知识图谱——机器大脑中的知识库
    本文介绍了知识图谱在机器大脑中的应用,以及搜索引擎在知识图谱方面的发展。以谷歌知识图谱为例,说明了知识图谱的智能化特点。通过搜索引擎用户可以获取更加智能化的答案,如搜索关键词"Marie Curie",会得到居里夫人的详细信息以及与之相关的历史人物。知识图谱的出现引起了搜索引擎行业的变革,不仅美国的微软必应,中国的百度、搜狗等搜索引擎公司也纷纷推出了自己的知识图谱。 ... [详细]
  • Iamtryingtocreateanarrayofstructinstanceslikethis:我试图创建一个这样的struct实例数组:letinstallers: ... [详细]
author-avatar
BIGBANG-YG-BEAR
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有