Локальное уведомление не запускается iOS 13, если оно было запланировано, когда доступ к уведомлениям отключен из iOS Настройки - PullRequest
0 голосов
/ 23 января 2020

В моем приложении я планирую локальные уведомления следующим способом:

    func addNotificationRequest(fireDate: Date, identifier: String, sound: UNNotificationSound)
    {
        let notificationCenter = UNUserNotificationCenter.current()
        let content = UNMutableNotificationContent()
        content.title = "Important"
        content.body = notificationMessage
        content.sound = sound
        content.categoryIdentifier = "UserActions"

        let calendar = Calendar(identifier: .gregorian)
        let triggerDate = calendar.dateComponents([.hour, .minute, .second], from: fireDate)
        let trigger = UNCalendarNotificationTrigger(dateMatching: triggerDate, repeats: true)

        let notificationRequest = UNNotificationRequest(identifier: identifier, content: content, trigger: trigger)
        notificationCenter.add(notificationRequest) { error in

            if let error = error
            {
                print(error.localizedDescription)
            }
        }

        let myAction = UNNotificationAction(identifier: "MyActionID", title: "Open", options: [.foreground])
        let category = UNNotificationCategory(identifier: "UserActions", actions: [myAction], intentIdentifiers: [], options: [])
        notificationCenter.setNotificationCategories([category])
    }

Уведомления должны срабатывать в определенное время и должны повторяться каждый день в одно и то же время.

На iOS 13 я обнаружил ошибку, которая может быть воспроизведена с помощью следующих шагов:

  1. I go до iOS Настройки> Уведомления> Имя приложения> Отключить «Разрешить уведомления»
  2. Затем я открываю приложение и планирую локальное уведомление, например, через 2 минуты
  3. После этого я go возвращаюсь в Настройки и снова включаю переключатель «Разрешить уведомления».
  4. После 2 минут локальное уведомление не отображается. Протестировано на более старых iOS версиях и уведомления отображаются как предполагается.

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

1 Ответ

0 голосов
/ 09 февраля 2020

Старски верен!

Согласно Документации Apple :

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

При планировании уведомление, если разрешения отключены, или уведомление пользователя о том, что ему нужно go в приложение «Настройки», чтобы повторно включить их:

В моем случае я сделал что-то подобное, используя SwiftMessages :

static func showNotificationDisabledInfo() {
        print("INFO: Notification permissions denied, need to reset in Settings!")
        showAlertMessage(withTitle: "Notifications are disabled!",
                         body: "Go to the Settings app to re-enable notifications.",
                         type: .info)
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...