本地通知主要是基于app本身定时器的行为。即使app在后台,也会发送本地通知。一个app只能有有限数量的预定通知,最多允许最近的64条通知,其余通知将会被系统忽略。

  推送通知的呈现效果:

  • 在屏幕顶部显示的一条横幅
  • 在屏幕中间弹出一个UIAlertView
  • 在锁屏界面显示一块横幅
  • 更新app图标的数字
  • 播放音效

1 在application: didFinishLaunchingWithOptions:方法中注册本地推送

  func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {

     //启动应用时,将badge设为0

let badge = application.applicationIconBadgeNumber

if badge > 0 {

application.applicationIconBadgeNumber = 0

     }

//注册本地通知
        application.registerUserNotificationSettings(UIUserNotificationSettings(forTypes: .Badge, categories: nil))return true}

UIUserNotificationSettings的初始化方法 :

public convenience init(forTypes types: UIUserNotificationType, categories: Set<UIUserNotificationCategory>?)

其中UIUserNotificationType有四种类型:.None, .Badge, .Sound, .Alert。

2 创建本地通知UILocalNotification后,有两种方式可以添加到UIApplication中。

  (1) scheduledLocalNotifications,通过fireDate时间来发送通知

  (2) presentLocalNotificationNow, 会立刻发送通知,跟fireDate时间无关。

  添加一个本地通知,并在130s后取消该通知

override func viewDidLoad(){     super.viewDidLoad()        let localNotif = UILocalNotification()//推送的时间localNotif.fireDate = NSDate(timeIntervalSinceNow: 10)//设置时区localNotif.timeZone = NSTimeZone.defaultTimeZone()//设置重复间隔localNotif.repeatInterval = .Minute//推送声音localNotif.soundName = UILocalNotificationDefaultSoundName//系统默认声音     localNotif.soundName = “shake.wav”              //自定义文件
     //推送内容      localNotif.alertBody = "推送内容" 

     //显示在icon上的红色圈中的数子      localNotif.applicationIconBadgeNumber = 1 

     //设置userinfo 方便在之后需要撤销的时候使用     localNotif.userInfo = ["key1": "name1"] 

     let app = UIApplication.sharedApplication()     //添加到系统的本地推送列表      app.scheduledLocalNotifications = [localNotif]

dispatch_after(dispatch_time(DISPATCH_TIME_NOW, Int64( Double(NSEC_PER_SEC) * 130.0 )), dispatch_get_main_queue()) {

   self.cancelLocalNotif()

}

}

3 取消本地通知 cancelLocalNotification: 或者 cancelAllLocalNotifications

func cancalLocalNotif() {

     var localNotif: UILocalNotification?let app = UIApplication.sharedApplication()let array = app.scheduledLocalNotificationsif array != nil && array?.count > 0 {for notif in array! {let dict = notif.userInfoif dict != nil {let value = dict!["key1"] as? String ?? ""if value == "name1" {localNotif = notifbreak}}}}if localNotif != nil {app.cancelLocalNotification(localNotif!)}}

4 如果接受到通知时,应用在后台,通知会通过alert,sound,badge方式来体现。点击通知后,会触发application:didReceiveLocalNotification:方法。

如果接受到通知时,应用在前台,则没有alert,sound,badge,但是收到通知时仍会触发application:didReceiveLocalNotification:方法。

如果本地通知只有badge,则启动app后,在application:didFinishLaunchingWithOptions的options字典中不包含UILocalNotification对象。

   func application(application: UIApplication, didReceiveLocalNotification notification: UILocalNotification) {

     //点击通知后,将badge设为0

let badge = application.applicationIconBadgeNumber

if badge > 0 {

application.applicationIconBadgeNumber = 0

     }

print(notification)print(notification.alertBody)let a = notification.userInfoif a != nil {print(a)}}

打印结果为:

<UIConcreteLocalNotification: 0x12e58db10>{fire date = 2016年8月9日 星期二 中国标准时间 下午4:27:58, time zone = Asia/Shanghai (GMT+8) offset 28800, repeat interval = NSCalendarUnitMinute, repeat count = UILocalNotificationInfiniteRepeatCount, next fire date = 2016年8月9日 星期二 中国标准时间 下午4:28:58, user info = {key1 = name1;
}}
Optional("推送内容")
Optional([key1: name1])

转载于:https://www.cnblogs.com/muzijie/p/5753774.html

iOS本地推送UILocalNotification相关推荐

  1. IOS 本地推送和远程推送

    最近在研究iOS的推送问题,遇到了好多问题,经过很多大神的文章指点最终整理了一下,放在这里和大家分享. 准备工作 首先要有一台苹果的设备,模拟器是不支持推送的,所以你需要一台iphone,ipod t ...

  2. SWIFT推送之本地推送(UILocalNotification)之二带按钮的消息

    上一篇讲到的本地推送是普通的消息推送,本篇要讲一下带按钮动作的推送消息,先上个图瞅瞅: 继上一篇的内容进行小小的改动: 在didFinishLaunchingWithOptions方法内进行以下修改 ...

  3. Swift - 推送之本地推送(UILocalNotification)添加Button的点击事件

     上一篇讲到的本地推送是普通的消息推送,本篇要讲一下带按钮动作的推送消息 import UIKit @UIApplicationMain class AppDelegate: UIResponder, ...

  4. IOS 本地推送 IOS10.0以上 static的作用 const的作用

    //需要在AppDelegate里面启动APP的函数 加上 UIUserNotificationType types = UIUserNotificationTypeBadge | UIUserNot ...

  5. iOS本地推送实现备忘录闹铃提醒

    本地通知是基于时间行为的一种通知形式,例如闹钟定时.待办事项提醒,又或者一个应用在一段时候后不使用通常会提示用户使用此应用等都是本地通知.创建一个本地通知通常分为以下几个步骤: 创建UILocalNo ...

  6. Unity 应用的消息推送《一》本地推送

    欢迎加入Unity业内qq交流群:956187480 qq扫描二维码加群 参考博客地址:https://blog.csdn.net/qq_37310110/article/details/804234 ...

  7. Swift 本地推送通知UILocalNotification

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

  8. iOS开发 - ANPs推送通知 标签: 推送通知ANPs远程推送、本地推送

    iOS开发 - ANPs推送通知 标签: 推送通知ANPs远程推送本地推送 2015-05-03 14:12 3510人阅读 评论(0) 收藏 举报 本文章已收录于:  iOS知识库  分类: [IO ...

  9. iOS 如何获取本地音乐(iTunes)作为本地推送的音乐

    本地推送的音乐好像只能使用直接沙盒里面的音乐文件 现在 有需求是要使用本地音乐(iTunes)里的歌曲作为本地推送的音乐 不知道能不能实现  求大神指点

最新文章

  1. 我所碰到的面试题之------前端常见浏览器兼容性问题解决方案---
  2. VMP分析之VM解码循环与基本架构(一)
  3. 使用intellij idea打开以前用maven的包
  4. php 创建数据库并填充,php操作mysql--连接数据库创建表填充表
  5. Linq 实现sql中的not in和in条件查询
  6. 解析Integer比较
  7. python模糊匹配_python 之实现模糊匹配
  8. 【超详细】私有仓库Gitlab的安装与使用详细教程
  9. EMC Isilon存储服务器误删除虚拟机恢复过程
  10. 一文搞懂机器学习中的缺失值处理(超详细)
  11. 双线性插值实现图像放大算法 matlab,FPGA/verilog实现双线性插值图像放大
  12. 用计算机研究脑电波,可用于计算机硬盘识别及脑电波测量的量子传感器【中国科讯】...
  13. RC串、并联选频网络特性的硬件分析与详解
  14. 微软出手,干翻 IDEA?网友:先干翻 Eclipse 吧
  15. 理解矩阵 from孟岩--流星小屋
  16. 《微观经济学》 第二章
  17. 记我的第一个实用bat编写修改历程(windows聚焦壁纸提取)
  18. 判断一个树是否为二叉查找树
  19. 江敏:做创业公司CTO,是程序员未知的冒险
  20. 碧蓝航线皇家巡游服务器更新维护,碧蓝航线更新公告

热门文章

  1. 从像素坐标到相机坐标_【视觉知识】机器视觉几何坐标概论
  2. python中_python中的一些用法总结
  3. UVa11988 Broken Keyboard(练习链表使用)
  4. 几个比58同城交换更好玩的交换玩法
  5. 对于SpringMVC框架使用的时候出现“警告: No mapping found for HTTP request with URI [/login]”的问题解决方案...
  6. java对象流读取完毕_从Java 8流中获取具有最大频率的对象
  7. rocketmq 初探(一)
  8. Android 捕获异常,上报异常日志,捕获奔溃日志,bugly使用实例
  9. Android 图片选择器、图片剪切,文件选择器
  10. vue 子组件更新父组件状态 使用sync