Swift 本地推送通知UILocalNotification
Notification是智能手机应用开发中常用的信息传递机制,它不用消耗更多资源去不停的检查信息状态,可以非常好的节省资源。
在iOS中分为两种通知:本地、远程。本地的UILocalNotification由全局的NotificationManager统一管理,我们只需要将本地通知对象添加到系统的Notification队列中就可以了,系统会在指定的时间激发本地通知。
本地推送通知:UILocalNotification
- 如果要使用推送通知,必须先在苹果的推送通知服务里注册你要使用哪几种类型的通知,就比如下面的一段代码就表示同时注册了提醒、标记和声音两种类型的通知(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
Swift 本地推送通知UILocalNotification的更多相关文章
- iOS 本地推送通知
1.什么是本地推送通知 不需要联网的情况下,应用程序经由系统发出的通知 2.本地推送的使用场景 定时提醒,如玩游戏.记账.闹钟.备忘录等 3.实现本地推送通知的步骤 创建本地推送通知的对象UILoca ...
- IOS 本地推送(UILocalNotification)
推送通知 ● 注意:这里说的推送通知跟NSNotification有所区别 • NSNotification是抽象的,不可见的 • 推送通知是可见的(能用肉眼看到) ● iOS中提供了2种推送通知 ● ...
- (七十三)iOS本地推送通知的实现
iOS的推送通知分为本地推送和网络推送两种,如果App处于挂起状态,是可以发送本地通知的,如果已经被杀掉,则只有定时通知可以被执行,而类似于QQ的那种网络消息推送就无法实现了,因为App的网络模块在被 ...
- SwiftUI - iOS10本地推送通知教程UserNotifications在Swift中的实现方式
简介 消息推送相信在很多人的眼里都不陌生了吧?像即时聊天微信,好友发信息给你时会在顶部弹下小窗口提醒你.也像是在影院APP预订了电影票,在开场前一小时你也会收到提醒.这类推送是需要经过后端发送请求的, ...
- 采用Service实现本地推送通知
在android的应用层中,涉及到很多应用框架,例如:Service框架,Activity管理机制,Broadcast机制,对话框框架,标题栏框架,状态栏框架,通知机制,ActionBar框架等等. ...
- Swift - 推送之本地推送(UILocalNotification)添加Button的点击事件
上一篇讲到的本地推送是普通的消息推送,本篇要讲一下带按钮动作的推送消息 import UIKit @UIApplicationMain class AppDelegate: UIResponder, ...
- Swift - 推送之本地推送(UILocalNotification)
// 本地推送通知是通过实例化UILocalNotification实现的.要实现本地化推送可以在AppDelegate.swift中添加代码实现,本事例是一个当App进入后台时推送一条消息给用户. ...
- SWIFT推送之本地推送(UILocalNotification)
本地推送通知是通过实例化UILocalNotification实现的.要实现本地化推送可以在AppDelegate.swift中添加代码实现,本事例是一个当App进入后台时推送一条消息给用户. 1.首 ...
- IOS之推送通知(本地推送和远程推送)
推送通知和NSNotification是有区别的: NSNotification:是看不到的 推送通知:是可以看到的 IOS中提供了两种推送通知 本地推送通知:(Local Notification) ...
随机推荐
- Struts2注解 特别注意
1 Struts2注解的作用 使用注解可以用来替换struts.xml配置文件!!! 2 导包 必须导入struts2-convention-plugin-2.3.15.jar包,它在struts2安 ...
- xcode import<xx/xx.h> 头文件报错
最近一直在写Android程序,有点久没用xcode,在写一个项目准备把 UI7Kit导进去,将iOS 7的界面适配到低版本的时候,出现了这么一个蛋疼的问题.稍微查了一下,新建项目的时候想先做一个li ...
- JavaScript面向对象(01)--函数
在JavaScript中,函数和对象有区别,也有联系, 首先函数是一个对象,但是和对象存在一些区别如下: 1,不论在java还是js中,如果把一个对象赋值给另一个变量,那么,后者会指向前者对象所在的内 ...
- URAL-1997 Those are not the droids you're looking for 二分匹配
题目链接:http://acm.timus.ru/problem.aspx?space=1&num=1997 题意:记录了n个人进出门的时间点,每个人在房子里面待的时间要么小于等于a,要么大于 ...
- C_functions
1.C常用函数分为如下几大类!! 1,字符测试函数. 2,字符串操作 3,内存管理函数 4,日期与时间函数 5,数学函数 6,文件操作函数 7,进程管理函数 8,文件权限控制 9,信号处理 10,接口 ...
- hdu5514-Frogs(容斥原理)好题
题意:有m个石头围成一圈,编号分别为0到m-1,现在有n只青蛙,都在0号石头上,第i只青蛙会从当前编号为p的石头跳到编号为(p+ai)%m的石头上.被青蛙经过的石头都会被占领,求这m块石头中所有被占领 ...
- jQuery - Chaining
jQuery - Chaining @(编程) 通过 jQuery,您可以把动作/方法链接起来. Chaining 允许我们在一条语句中允许多个 jQuery 方法(在相同的元素上). jQuery ...
- LightOJ 1341 - Aladdin and the Flying Carpet (唯一分解定理 + 素数筛选)
http://lightoj.com/volume_showproblem.php?problem=1341 Aladdin and the Flying Carpet Time Limit:3000 ...
- iOS维码的生成和扫描
iOS生成二维码(彩色 + 阴影) http://www.jianshu.com/p/85e131155b79?plg_nld=1&plg_uin=1&plg_auth=1&p ...
- 网站在域名前面添加logo小图标
如何给界面添加logo?就像百度的首页出现的图标. 1.准备一个ICO格式的小图标. 2.将制作好的ICO文件放到tomcat下的“D:\apache-tomcat-6.0.16\webapps\RO ...