Ежедневное оповещение с указанием времени начала и окончания - PullRequest
0 голосов
/ 15 мая 2019

Я хочу, чтобы notification повторялось ежедневно, но с указанием времени начала, времени окончания и частоты (фиксированной).

Скажем, время начала 10 утра, время окончания 6 вечера и частота каждые 3 часа, затемэто должно вызвать уведомление в 10:00, 13:00, 16:00 соответственно.

Примечание : - у приложения есть 3 других локальных notification (с другим названием и телом), поэтому необходимо различать уведомленияпользователь может остановить любое из этих уведомлений в любое время.

Пробовал с DLLocalNotification, но это не решило мою проблему.

DLNotificationScheduler().repeatsFromToDate (identifier: String, alertTitle: String, alertBody: String, fromDate: Date, toDate: Date, interval: Double, repeats: RepeatingInterval, category: String = " ", sound: String = " ")

Любая помощь будет высоко оценена

1 Ответ

0 голосов
/ 15 мая 2019

Для размещения локального уведомления с повтором вы можете использовать следующий код:

let content = UNMutableNotificationContent()
        content.title = "Pizza Time!!"
        content.body = "Monday is Pizza Day"
        content.categoryIdentifier = "pizza.reminder.category"

        //Date component trigger
        var dateComponents = DateComponents()
        //example for Gregorian calendar. Every Monday at 11:30AM
        dateComponents.hour = 11
        dateComponents.minute = 30
        dateComponents.weekday = 2
        // for testing, notification at the top of the minute.
        dateComponents.second = 0

        let trigger = UNCalendarNotificationTrigger(
            dateMatching: dateComponents,
            repeats: true)


        let request = UNNotificationRequest(identifier: "pizza.reminder", content: content, trigger: trigger)
        UNUserNotificationCenter.current().add(request) { (error) in
            if let error = error {
                print("error in pizza reminder: \(error.localizedDescription)")
            }
        }

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

Чтобы остановить локальное уведомление,

UNUserNotificationCenter.current().removePendingNotificationRequests(withIdentifiers: ["pizza.reminder"])

Чтобы получить уведомление о локальных уведомлениях, которые еще предстоит опубликовать, вы можете использовать код ниже

UNUserNotificationCenter.current().getPendingNotificationRequests {
            (requests) in
            displayString += "count:\(requests.count)\t"
            for request in requests{
                displayString += request.identifier + "\t"
            }
            print(displayString)
        }

Этого достаточно, чтобы добавить логику и удовлетворить ваши требования. Для получения дополнительной информации вы можете следить:

https://makeapppie.com/2017/01/31/how-to-repeat-local-notifications/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...