ios本地通知记录
From: https://developer.aliyun.com/article/760903
简介: 简单介绍iOS的本地通知推送的基本使用步骤
iOS10以前本地通知(UILocalNotification)
使用步骤:
- 创建一个UILocalNotification对象
- 设置触发时间及标题、内容
注册并安排通知
// 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. 创建通知内容
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
: 几秒后触发,如果要设置可重复触发需要大于60UNCalendarNotificationTrigger
:某年某月某日某天某时某分某秒触发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)
}
install_url
to use ShareThis. Please set it in _config.yml
.