在特定时间触发本地通知

fired local notification at specific time

请问我如何在特定时间触发本地通知?没有用户触发它并且需要应用程序在特定时间触发本地通知

以下我的代码:

这是为了获得用户的许可

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() {

    let center = UNUserNotificationCenter.current()
    let content = UNMutableNotificationContent()
    content.title = "Late wake up call"
    content.body = "The early bird catches the worm, but the second mouse gets the cheese."
    content.categoryIdentifier = "alarm"
    content.userInfo = ["customData": "fizzbuzz"]
    content.sound = UNNotificationSound.default()



    var dateComponents = DateComponents()
    dateComponents.hour = 3
    dateComponents.minute = 19
    dateComponents.day = 3
    let trigger = UNCalendarNotificationTrigger(dateMatching: dateComponents, repeats: true)

    let request = UNNotificationRequest(identifier: UUID().uuidString, content: content, trigger: trigger)
    center.add(request)
     center.removeAllPendingNotificationRequests()
}

// 她我调用这些方法

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {

            registerLocal()
            scheduleLocal()
         return true
  }

当我关闭我的应用程序时,我没有收到通知,请帮助我如何在特定时间触发本地通知

感谢

您不应在添加通知后调用 center.removeAllPendingNotificationRequests(),因为它也会取消之前添加的待处理通知。您应该在致电 center.addRequest(request) 后检查您的请求是否已被

实际添加
center.getPendingNotificationRequests(completionHandler: { pendingRequest in
    print("Pending notifications: \(pendingRequest)")   //Just for debugging
})

或者您也可以为 addRequest 指定完成处理程序,如果未成功添加请求,这将 return 出错:

center.add(request, withCompletionHandler: { error in
   print(error)
})