iOS本地推送通知的基本使用

简介: 简单介绍iOS的本地通知推送的基本使用步骤

iOS10以前本地通知(UILocalNotification)

使用步骤:

  1. 创建一个UILocalNotification对象
  2. 设置触发时间及标题、内容
  3. 注册并安排通知
// 1. 创建一个UILocalNotification对象
let localNotification = UILocalNotification()

// 2. 设置触发时间及标题、内容
localNotification.fireDate = Date(timeIntervalSinceNow: 3)
localNotification.alertTitle = "Title"
localNotification.alertBody = "alertBodyalertBodyalertBodyalertBody"

// 0. 注册通知(一般在程序刚启动时注册通知)
UIApplication.shared.registerUserNotificationSettings(UIUserNotificationSettings(types: [.badge, .alert, .sound], categories: nil))

// 3. 安排通知
UIApplication.shared.scheduleLocalNotification(localNotification)
  • UILocalNotification的其他属性

    • applicationIconBadgeNumber :应用程序图标上的数字标记
    • repeatInterval :重复间隔(按照年、月、日、时、分重复)
    • soundName :发出通知时的提示音,使用UILocalNotificationDefaultSoundName或者指定的音频文件名
    • userInfo :与通知相关的额外的字典,用户在通知上看不到此数据

应用程序处理收到的通知

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
    // ......
    
    // 点击通知启动程序(程序不在前台也不在后台,即程序退出时),在此可获取被点击的通知并处理
    if let localNotification = launchOptions?[.localNotification] {
        print(localNotification)
    }
    
    return true
}

// 应用程序收到通知时,在此方法中处理收到的通知
func application(_ application: UIApplication, didReceive notification: UILocalNotification) {
    print(notification)
}

iOS10+使用通知请求(UNNotificationRequest)创建本地通知

使用步骤

  1. 请求授权
  2. 创建通知内容
  3. 创建通知触发时间
  4. 使用唯一标识字符串、内容、触发器创建通知请求
  5. 将通知请求加到通知中心
// 1. 创建通知内容
let content = UNMutableNotificationContent()
// 标题
content.title = NSString.localizedUserNotificationString(forKey: "Hello!", arguments: nil)
// 内容
content.body = NSString.localizedUserNotificationString(forKey: "Hello_message_body", arguments: nil)
// 通知提示音
content.sound = .default
 
// 2. 创建通知触发器
// Deliver the notification in five seconds.
let trigger = UNTimeIntervalNotificationTrigger(timeInterval: 5, repeats: false)


// 3. 使用唯一标识字符串、内容、触发器创建通知请求
let uuidString = UUID().uuidString
let request = UNNotificationRequest(identifier: uuidString, content: content, trigger: trigger)


// 获取当前程序的通知中心
let notificationCenter = UNUserNotificationCenter.current()
// 设置代理,用来处理收到的通知
notificationCenter.delegate = self
// 0. 请求授权(一般在程序刚启动时请求通知授权)
notificationCenter.requestAuthorization(options: [.alert, .badge, .sound]) { (granted, error) in
    
}

// 4. 将通知请求加到通知中心
notificationCenter.add(request) { (error) in
    if error != nil {
       // Handle any errors.
    }
}
  • UNMutableNotificationContent 的其他常用属性

    • subtitle :子标题
    • badge :应用程序图标上的数字标记
    • userInfo :与通知相关的额外的字典,用户在通知上看不到此数据
  • UNNotificationTrigger 常见的通知触发器

    • UNTimeIntervalNotificationTrigger : 几秒后触发,如果要设置可重复触发需要大于60
    • UNCalendarNotificationTrigger :某年某月某日某天某时某分某秒触发
    • UNLocationNotificationTrigger :在某个位置触发
  • 处理接收到的通知(使用UNUserNotificationCenterDelegate中的两个方法)
// Asks the delegate to process the user's response to a delivered notification.
func userNotificationCenter(_ center: UNUserNotificationCenter, didReceive response: UNNotificationResponse, withCompletionHandler completionHandler: @escaping () -> Void) {
    // 处理代码
    ......
    completionHandler()
}

// 应用程序运行在前台时,此方法处理收到的通知
func userNotificationCenter(_ center: UNUserNotificationCenter, willPresent notification: UNNotification, withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void) {
    // 处理代码
    ......
    completionHandler(.sound)
}
目录
相关文章
|
iOS开发
iOS开发 - 千万不要把通知注册写在viewWillAppera里面
iOS开发 - 千万不要把通知注册写在viewWillAppera里面
74 0
|
iOS开发
iOS代理 通知 block传值的规范写法
iOS代理 通知 block传值的规范写法
116 0
|
iOS开发
iOS 通知多线程的使用
iOS 通知多线程的使用
213 0
|
图形学 iOS开发
Unity 之 记录打包IOS首次安装启动弹窗通知权限问题
IOS应该如何去掉首次进程序的获取权限确认框。
652 0
Unity 之 记录打包IOS首次安装启动弹窗通知权限问题
|
iOS开发
iOS中使用本地通知为你的APP添加提示用户功能(二)
iOS中使用本地通知为你的APP添加提示用户功能
243 0
|
iOS开发
iOS中使用本地通知为你的APP添加提示用户功能(一)
iOS中使用本地通知为你的APP添加提示用户功能
181 0
|
缓存 达摩院 算法
划重点|iOS15正式发布, 全新的通知推送系统,你必须要知道!
今年友盟+联合达摩院决策智能实验室讲算法技术,推出国内首个智能推送功能,帮助产品运营人员实现一键式触达的精细化运营。通过精心打磨的在线学习与优化算法,对推送人群与推送文案进行精准匹配,最大化用户点击量。通过对不同用户场景感知和各种约束配额下的最佳分配,将无用推送信息降权显示,降低对用户的干扰,优化用户维度的推送体验。
划重点|iOS15正式发布, 全新的通知推送系统,你必须要知道!
|
iOS开发 开发者 编译器
iOS开发--通知,代理,KVO的区别,以及通知的多线程问题
1. delegate 当我们第一次编写ios应用时,我们注意到不断的在使用“delegate”,并且贯穿于整个SDK。delegation模式不是IOS特有的模式,而是依赖与你过去拥有的编程背景。针对它的优势以及为什么经常使用到,这种模式可能不是很明显的。
|
开发工具 iOS开发 git
iOS开发之使用Git的基本使用(二)
通过前文iOS开发之使用Git的基本使用(一)的学习,相信大家对如何将iOS项目通过Git传到GitHub账户上有了一个基本的了解,其过程是相对繁琐和容易出错的。
1341 0
|
网络安全 开发工具 iOS开发
iOS开发之使用Git的基本使用(一)
现在越来越多的公司采用了Git作为版本管理工具,相对于传统的SVN,Git有着明显的优势,今天写一篇入门文章,教大家如何将自己写好的iOS项目通过Git传到GitHub账户上。
1177 0