Повторный запрос разрешений local notification

localnotification
swift3

#1

Пытаюсь создать повторный запрос на разрешение localNotifications, но он по каким-то причинам не работает. Создал кнопку, внутри которой:

@IBAction func addNotificationTapped(_ sender: Any) {
     if let settings = UIApplication.shared.currentUserNotificationSettings {
        if settings.types.contains([.alert, .badge, .sound]) {
            print("case one")
        } else {
            let alert = UIAlertController(title: "", message: "allow local notifications?", preferredStyle: .alert)
            alert.addAction(UIAlertAction(title: "", comment: "Cancel"), style: .cancel, handler: nil))
            alert.addAction(UIAlertAction(title: "Allow", style: .default, handler: {
                (_) in
                UIApplication.shared.registerUserNotificationSettings(UIUserNotificationSettings(types: [.alert, .badge, .sound], categories: nil))
                print("case two")
            }))               
            self.present(alert, animated: true, completion: nil)
        }
    }
}

Если при запуске приложения запретить уведомления, то при нажатии на кнопку срабатывает else и case two. По идее нужные разрешения должны были появиться, и при повторном нажатии уже должен быть case one. Но не тут-то было. Так и пишет по кругу case two. Вероятно я как-то не верным образом посылаю повторный запрос на регистрацию.

Изначальный запрос лежит в appDelegate и выглядит так - application.registerUserNotificationSettings(UIUserNotificationSettings(types: [.alert, .badge, .sound], categories: nil))
и прекрасно работает если ответить “да” на дефолтный запрос при старте приложения. В чем может быть проблема?


#2

На это сообщение поступили жалобы от участников сообщества, поэтому оно временно скрыто.