Локальные уведомления показывают некоторый контент за несколько дней - PullRequest
0 голосов
/ 09 декабря 2018

В моем приложении я реализовал возможность получать уведомления каждый день в 9 утра со случайной цитатой, выбранной из массива.Но иногда приложение отправляет пользователю ту же цитату за несколько дней.Я использую myQuotes.randomElement ()!для получения случайной цитаты.Как я могу исправить эту проблему?Вот код:

//        MARK: Local notification

    let center = UNUserNotificationCenter.current()
    let options: UNAuthorizationOptions = [.alert, .sound];

    center.requestAuthorization(options: options) {
        (granted, error) in
        if !granted {
            print("Something went wrong")
        }
    }

    center.getNotificationSettings { (settings) in
        if settings.authorizationStatus != .authorized {
            // Notifications not allowed
        }
    }

    let content = UNMutableNotificationContent()
    content.title = "\(myTitle.randomElement()!)"
    content.body = "\(myQuotes.randomElement()!)"
    content.categoryIdentifier = "myQuotesNotification"

    content.sound = UNNotificationSound.default

    var date = DateComponents()
    date.hour = 9
    date.minute = 00
    let trigger = UNCalendarNotificationTrigger(dateMatching: date, repeats: true)

    let request = UNNotificationRequest(identifier: "myQuotesNotification", content: content, trigger: trigger)
    center.add(request)

1 Ответ

0 голосов
/ 09 декабря 2018

Вы планируете один и тот же элемент массива.Чтобы понять больше ограничений уведомлений.

Ваш код отлично подходит для ежедневного напоминания.Помните.Этот код вызывается один раз , и именно тогда пользователь планирует уведомление.Например.Если мы планируем ежедневное уведомление о слове

Наш массив: [“burger”,”hamburger”,”pizza”]

Обратите внимание, что мы будем пытаться каждый день уведомлять пользователя о случайном слове в нашем массиве, Well Notifications не работает, чтопуть.Наш код срабатывает и работает каждый раз, когда мы открываем приложение, если по случайному выбору hamburger выбрать невозможно , чтобы изменить его без , сначала открыв приложение и позволяя планировщику работать, его дело и перепланироватьуведомление с другим случайным элементом

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

Надеюсь, это было понятно.

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