0

I am trying to learn how to use local notifications and currently I am just trying to let a notification pop up when a certain time has passed (for the sake of learning just 5 seconds).

I register the notification in this function, which is used at the end of an onBoarding screen:

func registerNotification() {

    let center = UNUserNotificationCenter.current()

    center.requestAuthorization(options: [.alert, .badge, .sound]) { (granted, error) in
        if granted {
            print("Granted.")
        } else {
            print("Not granted.")
       }
    }
}

Now to test the notification I just add the function set() to a button:

set() {

    let center = UNUserNotificationCenter.current()

    let content = UNMutableNotificationContent()
    content.title = "Test Notification"
    content.body = "It works!"
    content.categoryIdentifier = "alarm"
    content.userInfo = ["customData": "fizzbuzz"]
    content.sound = UNNotificationSound.default()

    let trigger = UNTimeIntervalNotificationTrigger(timeInterval: 5, repeats: false)

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

But when the button is pressed and 5 seconds passed, no notification is shown, but also no error in Xcode, so I suppose this should all work?

What am I missing here? As far as I understand from various sources on the net this is the easiest way to display a local notification?

RjC
  • 827
  • 2
  • 14
  • 33

1 Answers1

0

So to register a UserNotification and call the function at an appropriate place:

func registerNotification() {

    let center = UNUserNotificationCenter.current()

    center.requestAuthorization(options: [.alert, .badge, .sound]) { (granted, error) in
        if granted {
            print("Granted.")
        } else {
            print("Not granted.")
        }
    }
}

This functions sets a notification with a time interval of 5 seconds. When the app is closed the notification will be displayed:

set() {

    let center = UNUserNotificationCenter.current()

    let content = UNMutableNotificationContent()
    content.title = "Test Notification"
    content.body = "It works!"
    content.categoryIdentifier = "alarm"
    content.userInfo = ["customData": "fizzbuzz"]
    content.sound = UNNotificationSound.default()

    let trigger = UNTimeIntervalNotificationTrigger(timeInterval: 5, repeats: false)

    let request = UNNotificationRequest(identifier: UUID().uuidString, content: content, trigger: trigger)
    center.add(request)
}
RjC
  • 827
  • 2
  • 14
  • 33