Как сделать локальные уведомления по расписанию на Swift?

Для создания локальных уведомлений по расписанию на Swift вам понадобится использовать класс UNUserNotificationCenter из iOS-фреймворка UserNotifications.

Вот пример кода, который позволит вам создавать локальные уведомления по расписанию на Swift:

import UIKit
import UserNotifications

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        
        // Запрашиваем разрешение на отправку уведомлений
        UNUserNotificationCenter.current().requestAuthorization(options: [.alert, .sound, .badge]) { (granted, error) in
            if granted {
                // Если разрешение получено, создаем уведомление
                self.scheduleNotification()
            } else {
                // Если разрешение не получено, выводим сообщение об ошибке
                print("Разрешение на отправку уведомлений не получено")
            }
        }
    }
    
    func scheduleNotification() {
        // Создаем контент уведомления
        let notificationContent = UNMutableNotificationContent()
        notificationContent.title = "Напоминание"
        notificationContent.body = "Привет! Это локальное уведомление"
        
        // Устанавливаем звук уведомления
        notificationContent.sound = UNNotificationSound.default
        
        // Создаем календарь для установки времени уведомления
        var dateComponents = DateComponents()
        dateComponents.hour = 9
        dateComponents.minute = 0
        
        // Создаем триггер для уведомления на основе календаря
        let notificationTrigger = UNCalendarNotificationTrigger(dateMatching: dateComponents, repeats: true)
        
        // Создаем запрос на уведомление
        let notificationRequest = UNNotificationRequest(identifier: "ScheduledNotification", content: notificationContent, trigger: notificationTrigger)
        
        // Добавляем запрос в центр уведомлений
        UNUserNotificationCenter.current().add(notificationRequest) { (error) in
            if let error = error {
                print("Ошибка при создании уведомления: (error.localizedDescription)")
            }
        }
    }
}

В приведенном выше примере ViewController является контроллером представления, в котором мы создаем и планируем уведомление. В методе viewDidLoad мы запрашиваем разрешение на отправку уведомлений, а после получения разрешения вызываем метод scheduleNotification для создания уведомления.

Метод scheduleNotification создает контент уведомления, включая заголовок и текст. Затем мы создаем календарь и устанавливаем в нем необходимое время для уведомления. После этого мы создаем триггер для уведомления на основе календаря. Наконец, мы создаем запрос на уведомление и добавляем его в центр уведомлений.

Обратите внимание, что для создания и запуска уведомления необходимо получить разрешение пользователя на отправку уведомлений. Мы используем метод requestAuthorization класса UNUserNotificationCenter для этого.

Не забудьте также добавить разрешение на отправку уведомлений в вашем файле Info.plist:

<key>NSLocalNotificationCenterUsageDescription</key>
<string>Разрешение на отправку уведомлений</string>

Вышеуказанный пример демонстрирует создание уведомления, которое будет отправляться каждый день в 9:00. Однако вы можете настроить время уведомления и повторяемость в соответствии с вашими потребностями.