我使用单一通知,这是我的代码:
这是用于注册本地通知>>>
这是用于注册本地通知>>>
func registerLocal() { let center = UNUserNotificationCenter.current() center.requestAuthorization(options: [.alert,.badge,.sound]) { (granted,error) in if granted { print("Yay!") } else { print("D'oh") } } }
func scheduleLocal() { registerCategories() let center = UNUserNotificationCenter.current() // not required,but useful for testing! center.removeAllPendingNotificationRequests() let content = UNMutableNotificationContent() content.title = "good morning" content.body = "ttt123" content.categoryIdentifier = "alarm" content.userInfo = ["customData": "fizzbuzz"] content.sound = UNNotificationSound.default() var dateComponents = DateComponents() dateComponents.hour = 23 dateComponents.minute = 18 let trigger = UNCalendarNotificationTrigger(dateMatching: dateComponents,repeats: true) let request = UNNotificationRequest(identifier: UUID().uuidString,content: content,trigger: trigger) center.add(request) } func registerCategories() { let center = UNUserNotificationCenter.current() center.delegate = self let show = UNNotificationAction(identifier: "show",title: "Tell me more…",options: .foreground) let category = UNNotificationCategory(identifier: "alarm",actions: [show],intentIdentifiers: []) center.setNotificationCategories([category]) } func userNotificationCenter(_ center: UNUserNotificationCenter,didReceive response: UNNotificationResponse,withCompletionHandler completionHandler: @escaping () -> Void) { // pull out the buried userInfo dictionary let userInfo = response.notification.request.content.userInfo if let customData = userInfo["customData"] as? String { print("Custom data received: \(customData)") switch response.actionIdentifier { case UNNotificationDefaultActionIdentifier: // the user swiped to unlock; do nothing print("Default identifier") case "show": print("Show more information…") break default: break } } // you need to call the completion handler when you're done completionHandler() }