Ежедневно меняйте содержание повторяющегося напоминания - PullRequest
0 голосов
/ 14 сентября 2018

В моем приложении я прошу пользователя настроить повторяющееся напоминание. В этом напоминании я бы хотел, чтобы тело каждый день говорило что-то новое. Например, у меня более 500 цитат в моей базе данных Firebase, и я хочу, чтобы мое напоминание показывало новую цитату каждый день. Как я могу программно изменять тело напоминания каждый день без взаимодействия с пользователем?

@IBAction func saveButtonPressed(_ sender: Any) {
    let content = UNMutableNotificationContent()
    let identifier = "myApp"
    content.title = "myApp"
    content.body = "I want to change this programatically each day"
    let trigger = UNCalendarNotificationTrigger(dateMatching: Calendar.current.dateComponents([.year, .month, .day, .hour, .minute], from: reminderTime.date), repeats: true)
    let request = UNNotificationRequest(identifier: identifier, content: content, trigger: trigger)
    UNUserNotificationCenter.current().add(request){
        (error) in
        if error != nil
        {
            print("here error in setting up notification")
            print(error!)
        } 
        else
        {
            print("notification scheduled")
        }
    }
}

1 Ответ

0 голосов
/ 14 сентября 2018

К сожалению, вы не можете обработать момент показа LocalNotification. Вы просто сообщаете системе, когда показывать свое уведомление, а система показывает его, не вызывая ваше приложение.

Но вы можете добавить несколько запросов на уведомления одновременно ( до 64 ). Например, все уведомления на следующий месяц и обновления ваших уведомлений при запуске приложения. Просто убедитесь, что ваши запросы на уведомление имеют различных идентификаторов .

Например, вы создаете 30 уведомлений, и пользователь получает их в течение 5 дней. Затем он открывает ваше приложение, и вы добавляете еще 5 уведомлений.

Если вам нужно удалить некоторые из ожидающих уведомлений, вы можете сделать это, используя следующий метод.

let center = UNUserNotificationCenter.current()
center.removePendingNotificationRequests(withIdentifiers: identifiers)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...