Question: Since UILocalNotification was deprecated in iOS10, I'm having trouble understanding how to update the following code to the UNNotificationRequest framework. Im basically letting a user schedule a daily notification at a time of their choosing. For example, if they want to get a notification everyday at 11:00AM. The below code works for iOS versions below iOS10 but since UILocalNotification is deprecated, it no longer works. Any help is greatly appreciated.

```
    let notification = UILocalNotification()
    notification.fireDate = fixedNotificationDate(datePicker.date)
    notification.alertBody = "Your daily alert is ready for you!"
    notification.timeZone = TimeZone.current
    notification.repeatInterval = NSCalendar.Unit.day
    notification.applicationIconBadgeNumber = 1
    UIApplication.shared.scheduleLocalNotification(notification)

```

Answer: 
You can use `UNCalendarNotificationTrigger` for creating a notification that fires repeatedly using `UNUserNotificationCenter`. You can do something like this. The trick is to only have the time component in the Trigger date.

```
        let center = UNUserNotificationCenter.current()

        let content = UNMutableNotificationContent()
        content.title = "Attention!"
        content.body = "Your daily alert is ready for you!"
        content.sound = UNNotificationSound.default

        let identifier = "com.yourdomain.notificationIdentifier"

        var triggerDate = DateComponents()
        triggerDate.hour = 18
        triggerDate.minute = 30
        let trigger = UNCalendarNotificationTrigger(dateMatching: triggerDate, repeats: true)

        let request = UNNotificationRequest(identifier: identifier, content: content, trigger: trigger)

        center.add(request, withCompletionHandler: { (error) in
            if let error = error {
                // Something went wrong
                print("Error : \(error.localizedDescription)")
            } else {
                // Something went right
                print("Success")
            }
        })

```
You can't schedule a notification that repeats daily. That notification would happen only once, and then you would have to schedule it again, which means that you would have to open the app again.

There is BGTask API introduces in iOS 13, that can be used to perform some background tasks, but not this one, **you can not schedule the task for specific time**.This API last only works when app is in the background, not when it is killed. You can only set some time interval that the system will use as a guiding point to determine when to perform you app's code. But in my experience it is pretty unreliable.

The only way to achieve this is to implement remote push notifications. Push notifications also work even when the app is killed.