简体   繁体   中英

How to implement scheduled local notification

I have this code below to test how local notification works every hour. But im not getting anything.

Also, is there a way to send different local notifications messages in different times? and im just calling the LocalNotificationHour() in viewDidLoad()

I just started learning swift, so im sorry in advance.

--

    @objc func LocalNotificationHour() {

    let user = UNUserNotificationCenter.current()
    user.requestAuthorization(options: [.alert,.sound]) { (granted, error) in}


    let content = UNMutableNotificationContent()
    content.title = "Local Notification"
    content.body = "This is a test."


    var dateComponents = DateComponents()
    dateComponents.calendar = Calendar.current
    dateComponents.hour = 1
    let trigger = UNCalendarNotificationTrigger(dateMatching: dateComponents, repeats: true)


    let uuid = UUID().uuidString
    let request = UNNotificationRequest(identifier: uuid, content: content, trigger: trigger)


    user.add(request) { (error) in print("Error")}
}

You can schedule your notification for every minute by adding following code:

UNUserNotificationCenter.current().requestAuthorization(options: [.alert, .sound]) { (success, error) in

        if error == nil, !success {

            print("Error = \(error!.localizedDescription)")

        } else {

            let content = UNMutableNotificationContent()
            content.title = "Local Notification"
            content.body = "This is a test."
            content.sound = UNNotificationSound.default

            let trigger = UNTimeIntervalNotificationTrigger(timeInterval: 60, repeats: true)

            let uuid = UUID().uuidString
            let request = UNNotificationRequest(identifier: uuid, content: content, trigger: trigger)

            UNUserNotificationCenter.current().add(request, withCompletionHandler: nil)

        }
    }
var dateComponents = DateComponents()
dateComponents.calendar = Calendar.current
dateComponents.hour = 1
let trigger = UNCalendarNotificationTrigger(dateMatching: dateComponents, repeats: true)

This basically takes todays date and sets the time to 1am. Using: UNCalendarNotificationTrigger(dateMatching: you are telling the notification to trigger at 1am today and then repeat at the same time each day.

To trigger a notification based on a time interval you should use the UNTimeIntervalNotificationTrigger .

// Fire in 60 minutes (60 seconds times 60)
let trigger = UNTimeIntervalNotificationTrigger(timeInterval: (60*60), repeats: false)

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM