Swift Как установить локальные уведомления каждый день, кроме сегодня?

Для установки локальных уведомлений каждый день, кроме сегодня, вам потребуется использовать UserNotifications фреймворк в языке Swift. Вот подробный пример, как это сделать.

1. Создайте новый проект в Xcode и импортируйте UserNotifications фреймворк.

import UserNotifications

2. Зарегистрируйте уведомления в функции application(_:didFinishLaunchingWithOptions:) в файле AppDelegate.swift. В этой функции вы должны запросить разрешение пользователя на отправку уведомлений, а также создать категорию уведомлений (если нужно).

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

    let notificationCenter = UNUserNotificationCenter.current()
    notificationCenter.requestAuthorization(options: [.alert, .sound, .badge]) { (granted, error) in
        if granted {
            print("Разрешение получено")
        } else {
            print("Разрешение не получено")
        }
    }
    // Создание категории уведомлений
    let category = UNNotificationCategory(identifier: "myCategory", actions: [], intentIdentifiers: [], options: [])
    notificationCenter.setNotificationCategories([category])

    return true
}

3. Создайте функцию для установки уведомлений, которую можно вызвать при запуске приложения или в другом месте кода. В этой функции вы должны создать экземпляр UNMutableNotificationContent, настроить его свойства, создать экземпляр UNNotificationTrigger с определенным временем запуска и создать экземпляр UNNotificationRequest с контентом и триггером.

func scheduleNotification() {
    // Создание контента уведомления
    let content = UNMutableNotificationContent()
    content.title = "Напоминание"
    content.body = "Постоянное уведомление каждый день, кроме сегодня"
    content.categoryIdentifier = "myCategory"

    // Настройка времени запуска уведомления каждый день в определенное время
    var dateComponents = Calendar.current.dateComponents([.year, .month, .day, .hour, .minute, .second], from: Date())
    dateComponents.hour = 9
    dateComponents.minute = 0
    let trigger = UNCalendarNotificationTrigger(dateMatching: dateComponents, repeats: true)

    // Создание запроса на уведомление
    let request = UNNotificationRequest(identifier: "dailyNotification", content: content, trigger: trigger)

    // Добавление запроса в центр уведомлений
    let notificationCenter = UNUserNotificationCenter.current()
    notificationCenter.add(request) { (error) in
        if let error = error {
            print("Ошибка при установке уведомления: (error.localizedDescription)")
        } else {
            print("Уведомление успешно установлено")
        }
    }
}

4. Вызовите функцию scheduleNotification() в нужном вам месте кода (например, в функции application(_:didFinishLaunchingWithOptions:)).

Теперь у вас есть функция, которая устанавливает локальные уведомления каждый день в определенное время, кроме сегодняшнего дня. Пользователь должен дать разрешение на отправку уведомлений при первом запуске приложения. Вы можете настроить другие свойства уведомлений, такие как звук, значок и дополнительные действия, с помощью объекта UNMutableNotificationContent.