UNUserNotificationCenter.current().getPendingNotificationRequests { (requests) in //遍历所有未推送的request for request in requests { print(request) } }
UNUserNotificationCenter.current().getDeliveredNotifications { (notifications) in //遍历所有已推送的通知 for notification in notifications { print(notification) } }
//使用同样的请求标识符来设置一个新的通知 let requestIdentifier = "com.hangge.testNotification" let request = UNNotificationRequest(identifier: requestIdentifier, content: content, trigger: trigger) //将通知请求添加到发送中心 UNUserNotificationCenter.current().add(request) { error in if error == nil { print("Time Interval Notification scheduled: \(requestIdentifier)") } }
//根据identifier来取消指定通知 let identifier = "com.hangge.testNotification" UNUserNotificationCenter.current().removePendingNotificationRequests(withIdentifiers: [identifier]) //取消全部未发送通知 UNUserNotificationCenter.current().removeAllPendingNotificationRequests()
//根据identifier来删除指定通知 let identifier = "com.hangge.testNotification" UNUserNotificationCenter.current().removeDeliveredNotifications(withIdentifiers: [identifier]) //删除全部已发送通知 UNUserNotificationCenter.current().removeAllDeliveredNotifications()
import UIKit import UserNotifications @UIApplicationMain class AppDelegate: UIResponder, UIApplicationDelegate { var window: UIWindow? let notificationHandler = NotificationHandler() func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { //请求通知权限 UNUserNotificationCenter.current() .requestAuthorization(options: [.alert, .sound, .badge]) { (accepted, error) in if !accepted { print("用户不允许消息通知。") } } //设置通知代理 UNUserNotificationCenter.current().delegate = notificationHandler return true } func applicationWillResignActive(_ application: UIApplication) { } func applicationDidEnterBackground(_ application: UIApplication) { } func applicationWillEnterForeground(_ application: UIApplication) { } func applicationDidBecomeActive(_ application: UIApplication) { } func applicationWillTerminate(_ application: UIApplication) { } } class NotificationHandler: NSObject, UNUserNotificationCenterDelegate { //在应用内展示通知 func userNotificationCenter(_ center: UNUserNotificationCenter, willPresent notification: UNNotification, withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void) { completionHandler([.alert, .sound]) // 如果不想显示某个通知,可以直接用空 options 调用 completionHandler: // completionHandler([]) } }
import UIKit import UserNotifications class ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() //设置推送内容 let content = UNMutableNotificationContent() content.title = "hangge.com" content.body = "做最好的开发者知识平台" content.userInfo = ["userName": "hangge", "articleId": 10086] //设置通知触发器 let trigger = UNTimeIntervalNotificationTrigger(timeInterval: 30, repeats: false) //设置请求标识符 let requestIdentifier = "com.hangge.testNotification" //设置一个通知请求 let request = UNNotificationRequest(identifier: requestIdentifier, content: content, trigger: trigger) //将通知请求添加到发送中心 UNUserNotificationCenter.current().add(request) { error in if error == nil { print("Time Interval Notification scheduled: \(requestIdentifier)") } } } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() } }
import UIKit import UserNotifications @UIApplicationMain class AppDelegate: UIResponder, UIApplicationDelegate { var window: UIWindow? let notificationHandler = NotificationHandler() func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { //请求通知权限 UNUserNotificationCenter.current() .requestAuthorization(options: [.alert, .sound, .badge]) { (accepted, error) in if !accepted { print("用户不允许消息通知。") } } //设置通知代理 UNUserNotificationCenter.current().delegate = notificationHandler return true } func applicationWillResignActive(_ application: UIApplication) { } func applicationDidEnterBackground(_ application: UIApplication) { } func applicationWillEnterForeground(_ application: UIApplication) { } func applicationDidBecomeActive(_ application: UIApplication) { } func applicationWillTerminate(_ application: UIApplication) { } } class NotificationHandler: NSObject, UNUserNotificationCenterDelegate { //对通知进行响应(用户与通知进行交互时被调用) func userNotificationCenter(_ center: UNUserNotificationCenter, didReceive response: UNNotificationResponse, withCompletionHandler completionHandler: @escaping () -> Void) { print(response.notification.request.content.title) print(response.notification.request.content.body) //获取通知附加数据 let userInfo = response.notification.request.content.userInfo print(userInfo) //完成了工作 completionHandler() } }